Key takeaways
- ChatGPT has no ad library or Auction Insights equivalent for Shopping, so you track competitors by running a fixed prompt set repeatedly and logging what shows up, not by pulling a report
- Shopping carousels pull roughly 83% of their products from Google Shopping via query fan-outs, so a weak Merchant Center feed costs you visibility in ChatGPT before any GEO work even starts
- Separate the signal: organic product cards, paid "Sponsored" cards, and plain-text citations each behave differently and need to be logged separately
- Ad frequency in ChatGPT jumped from zero in May 2026 to a 7-day average around 32% by mid-August, per Promptwatch Data, so a single spot check can badly mislead you
- Manual tracking works below roughly 50 prompts a week; past that, you need a monitoring tool, because the carousel is probabilistic and changes run to run
Why this is harder to catch than a stolen Google Shopping slot
On Google, if a competitor starts bidding on your brand term, you see it within a day. Auction Insights tells you their impression share. The Ads Transparency Center shows you their creative. You have a paper trail.
ChatGPT gives you none of that. There's no dashboard that says "Competitor X appeared in your category's shopping carousel 40% of the time this week." If a rival starts winning the product cards that used to show your SKUs, you'll likely find out when a sales rep says "the customer said ChatGPT recommended the other guy," which is a bad way to find out anything.
That gap is exactly why a cottage industry of AI visibility tools has shown up in the last year, and why it's worth understanding the mechanics before you pick one.
How ChatGPT actually builds a shopping recommendation
Before you can track theft, you need to know what you're tracking. ChatGPT Shopping isn't a separate catalog OpenAI built from scratch. Traffic analysis of the shopping flow found product URLs carrying a srsltid parameter, which is the fingerprint of Google's Shopping product database, not a proprietary OpenAI index. A separate analysis cited on r/seogrowth put the number at 83% of carousel products sourced from Google Shopping through query fan-outs.
That has a practical implication: if your Merchant Center feed is thin, missing attributes, or priced out of the market, you're invisible in ChatGPT's shopping carousel for reasons that have nothing to do with your content or your GEO strategy. Fix the feed first, then worry about whether a competitor is "stealing" the slot.
The flow runs through a classifier (nicknamed "Sonic" in one teardown) that decides whether a query is shopping intent, then a requirements extractor pulls out product type, price constraints, and use case before querying Google Shopping. Ranking leans on query relevance, price, availability, and merchant diversity, meaning ChatGPT tends to show multiple merchants rather than letting one brand dominate a query. If a competitor is consistently winning the slot you used to hold, it's usually a feed or pricing gap, not a one-off fluke.
Three separate things you need to track, not one
People use "ChatGPT Shopping placement" loosely, but there are three distinct mechanisms and they need separate tracking:
| Placement type | What it looks like | What drives it | How to log it |
|---|---|---|---|
| Organic product card | Carousel inside the answer, no "Sponsored" label | Google Shopping feed quality, price, availability | Screenshot + brand name + position in carousel |
| Paid ad card | Separate card below the answer, labeled "Sponsored" | ChatGPT Ads auction (context hints, not keyword bids) | Advertiser, headline, description, final URL |
| Plain-text citation/mention | Brand named in the prose answer, maybe with a source link | Web search citations, content quality | Brand mentioned, source cited, position in answer |
OpenAI's own documentation on Instant Checkout states product results are "organic and unsponsored, ranked purely on relevance" and that Instant Checkout items aren't preferred in rankings. Independent research backs that separation up: one study found a brand's ad and its organic citation overlapped on the same answer only 3.63% of the time, meaning paid and organic are mostly fighting for attention in different places, not the same box.
If you lump all three into one "are we visible" number, you'll draw the wrong conclusion about why a competitor is winning.
Step 1: build a prompt set that mirrors actual buyer behavior
Don't track your brand name. Track the prompts a buyer with a credit card out would actually type: "best [category] under $X," "[category] for [use case]," "compare [competitor] vs [competitor]," and a handful naming you directly. Siftly's tracking methodology recommends systematic sampling across a repeated prompt set rather than one-off spot checks, because ChatGPT's generation is probabilistic. One run surfacing a competitor and the next run not surfacing them tells you nothing on its own.
Keep the set between 20 and 50 prompts if you're doing this by hand. Above 50 prompts a week, manual tracking stops being viable and you need automation, per the same methodology.
Step 2: keep every run condition identical
This is the part people skip and it wrecks the data. Account type (Free vs Plus vs Go), location, and prompt wording all change what shows up. A GrowByData test running 44 identical prompts for a B2B SaaS company over a month, in New York, found ChatGPT served sponsored placements in about 5 out of every 100 searches, compared to roughly double that rate for Google AI Mode on the same prompts. That kind of comparison only means something because the test held wording, location, and cadence constant across the whole run.
If you change the prompt phrasing between runs, or switch devices, or run from a different city, you've introduced a variable that will look like a competitor win or loss when it's actually just noise.
Step 3: log every run, including the empty ones
This is the second most common mistake. People log when a competitor shows up and skip logging when nothing does. Without the empty runs, you can say a competitor appeared, but you can't say how often, and a single empty run doesn't prove they stopped buying or stopped ranking organically.
For each run, record:
- Date, time, account type, location
- The exact prompt text
- Whether a shopping carousel appeared, and if so, which brands and in what order
- Whether a sponsored card appeared, and if so, advertiser name, headline, description, and final URL
- Whether your brand or a competitor was cited in the prose answer, and which source was linked
Turn this into impression share per prompt: if you run a prompt 25 times and a competitor's product shows up 12 times, that's a 48% share for that run window. Pivot by prompt, by competitor, and by week so you can see trend, not just a snapshot.
Step 4: watch for step changes, not gradual drift
AI visibility doesn't move the way organic rankings move. It jumps. Promptwatch's tracking of ChatGPT ad frequency over the trailing 90 days (as of an August 2026 report) found ads went from zero before May 27, 2026 to a 7-day average of 32.4% by mid-August, with daily spikes as high as 43.9%. Shopping feature trigger rates moved the same way, roughly doubling overnight in late May before falling back weeks later. That's Promptwatch's data on when OpenAI is actively tuning visibility windows for categories, and it matters here because a single bad week of data can look like a competitor theft when it's actually a platform-wide algorithm change.
The fix is the same one: run your prompt set on a recurring schedule, at least weekly, and compare week over week before concluding anything about a specific competitor.
Step 5: separate the real theft signal from the noise
Once you have a few weeks of logged data, look for these specific patterns, which are the closest thing to a real "they're taking your spot" signal:
| Pattern | What it tells you |
|---|---|
| Competitor's organic product card appears consistently where yours used to | Feed, price, or availability gap on your side, not a fluke |
| Competitor runs a sponsored card under a prompt that names your brand | A ChatGPT version of bidding on your brand terms |
| Competitor's sponsored card appears under a prompt where neither brand gets organic coverage | They're buying visibility on a prompt nobody owns organically yet |
| Competitor's ad copy or final URL rotates between homepage, comparison page, category page over several runs | They're actively testing conversion paths, meaning real budget behind it |
Ad copy iterates fast, and final URLs rotate as competitors test landing pages. If you only capture the headline and skip the URL, you'll miss the part of the pattern that actually tells you what they're doing strategically.
When to automate this instead of doing it by hand
Manual tracking works fine below about 50 prompts a week, assuming you're disciplined about holding conditions constant and logging the empty runs. Past that volume, or if you need to cover multiple markets and account types, a monitoring tool earns its cost.
There's a decent range of tools built for AI visibility tracking generally. Promptwatch tracks ChatGPT, Gemini, Perplexity, AI Overviews, and others with features that go beyond a simple mention count, including ChatGPT Shopping and Ads Radar for tracking product recommendations and sponsored placements, prompt volumes and difficulty scoring, and citation trend data classified by content type. That last part matters for shopping specifically: Promptwatch's data on ChatGPT citation types shows product pages are the single most-cited content type overall at 22.4% of citations, rising to 26% for commercial-intent prompts, which tells you where to put optimization effort if your product pages aren't winning citations.

A few other tools worth knowing about if you're building out a broader AI visibility stack: Ahrefs Brand Radar and SE Ranking's AI visibility toolkit both fold some AI-mention tracking into tools teams already use for SEO.


For a wider shortlist of GEO-focused platforms, the directory at bestgeosoftware.com is a reasonable place to compare options by feature set and price before committing to one.
A simple comparison: manual tracking vs a monitoring tool
| Approach | Good for | Limitation |
|---|---|---|
| Manual spreadsheet, fixed prompt set | Under 50 prompts/week, single market | Time-intensive, easy to introduce run-to-run variance by accident |
| Dedicated AI visibility tool (e.g. Promptwatch) | Multiple markets, high prompt volume, need for citation and crawler data | Monthly cost, setup time |
| General SEO suite with AI add-on | Teams already in that suite who just want a rough signal | Shallower AI-specific data, fixed prompt sets |
What to actually do with the data once you have it
Don't stop at "competitor X showed up 40% of the time." Correlate it with something you can act on:
- If their organic card is beating yours consistently, audit your Google Merchant Center feed for missing attributes, stale pricing, or availability flags, since that's the actual input ChatGPT is querying
- If their ad shows up on prompts naming your brand, decide whether you want to respond with your own ChatGPT Ads campaign on those same context hints
- If your product pages aren't earning citations even where you have the better product, that's a content gap, not a shopping-feed problem, and worth a content audit
Attribution past this point gets fuzzy. AI shopping influence happens upstream of normal clickstream tracking, so correlating visibility trends with branded search lift is a more honest proxy than trying to tie a single carousel appearance to a specific sale.
The method here isn't exotic. It's the same discipline Google Ads managers had to learn before Auction Insights existed: sample consistently, log everything including the misses, and wait for enough runs before you draw a conclusion about a competitor's intent. The platform changes fast enough that a tool built specifically to track this, rather than a monthly manual sweep, is worth the cost once you're managing more than one market or more than a handful of SKUs that matter.