OpenAI, Google and Perplexity all say their shopping results can depend on who’s asking. That includes memory, custom instructions, search history, location, language, and whatever the shopper has said in the conversation. So a screenshot of ChatGPT or AI Mode showing your product, or not showing it, is one shopper’s result. It isn’t your rank.
Before you compare results across tools, days or competitors, control the context. Record the account, memory and personalization settings, country and language. Then run the same request twice: once thin, once with a rich set of constraints. Keep the facts that should rule your product out in the rich version.
The card below is our proposed way to do that. Platform statements were checked on October 27, 2026.
What each platform says it personalizes on
Here’s what the documentation says, kept separate from launch claims. Availability gets its own column, because personalization features often launch in one country first.
| Platform | Documented context inputs | Shopper controls the docs describe | Market and availability |
|---|---|---|---|
| ChatGPT shopping | The query plus context “such as Memory or Custom instructions”. A stated budget shifts focus to price. Stated dislikes can remove products. Memory can use past chats, saved memories and custom instructions, plus Library files and connected apps where available and enabled | Settings, then Personalization, then Memory. Turning Memory off doesn’t delete past chats | Help center: mobile and web. Merchant page: “currently live for ChatGPT users in the U.S.” Memory features vary by plan, region and platform |
| Google AI Mode | Personal Intelligence uses Search Services History. Shoppers can tell AI Mode to remember or forget details. Optionally, connected Gmail, Calendar and Photos | Personalized Recommendations setting; activity at myactivity.google.com; “Remember” and “Forget” in the conversation | 18 or older, with history and personalized recommendations on. Memory: US, English. Google says these settings are being updated |
| Google Shopping | Search terms and “other Google activity”: searches, views, browsing and saved shopping preferences | Personalized Recommendations off. Location, language, device and recent searches are still used | Same settings notice as above |
| Perplexity | Launch post only: “remembers your past searches and learns your patterns”; keeps context across follow-ups | Not documented in the sources we read | Launched November 25, 2025, “available for free to all US Perplexity users”. Announced, not a current spec |
Two merchant-side rows complete the picture. Neither is about the shopper’s settings, but both decide which shopper a record can reach:
| System | What it lets the agent or merchant set | What it means for testing |
|---|---|---|
| Shopify Global Catalog | Agents can send country, region, postal code, language, currency and intent, plus a buyer-linked token for a signed-in Shop customer | The same search can return different results for different buyer contexts |
| OpenAI product feed | The standard upload targets the US. Market columns need separate setup, and an empty target country “does not mean worldwide” | A record built for US shoppers may not be the one a Canadian shopper sees |
None of these pages gives weights. They tell you the inputs exist, which is enough to tell you one screenshot isn’t a ranking.
Why one screenshot isn’t a rank
Google states the general version plainly. Even with personalization off, Search services still use current location, language, device type and recent searches. Results “may vary between people for reasons other than personalization, such as language settings or localized results.”
OpenAI’s example is more pointed. Tell ChatGPT you dislike clowns, and “it may leave out clown costumes.” Say a budget of $30, and it “will focus more on price.” The products didn’t change. The shopper did.
So when a founder sends a screenshot that says “we’re not in ChatGPT”, the useful first question isn’t about the product. It’s about the context: which account, with what memory, in which country, after which earlier messages?
Thin and rich: the same need, two contexts
The core of the method is a matched pair. Both versions describe the same shopper need. One says almost nothing; the other states the constraints a real buyer would have.
We used exactly this pair in our supplied-snippet simulation:
| Context | Text | What it gives the model |
|---|---|---|
| Thin (one-line ask) | “I need a quiet humidifier for my bedroom.” | One requirement: quiet |
| Rich (detailed brief) | A light sleeper with a 450 sq ft bedroom wants a quiet humidifier under USD 90, dislikes refilling daily, and wants evidence for room coverage, noise and runtime | Five checkable requirements |
| None | The model is simply researching quiet humidifiers for bedrooms | No shopper at all |
The listings stayed the same. Each model picked 2 of 8, so random picking would include any one listing 25% of the time. An invented humidifier with its facts written as a spec line was the product being tested.
| Model | Rich brief | Thin ask | No shopper |
|---|---|---|---|
| GPT-6.1-Sol | 20 of 20 | 0 of 20 | 0 of 20 |
| Gemini 3.8 Flash | 19 of 19 | 0 of 20 | 0 of 20 |
| Gemini 3.1 Pro | 15 of 15 | 0 of 20 | 0 of 20 |
| Claude (3 models) | 59 of 60 | 32 of 60 | 43 of 60 |
On three models, the same listing went from always picked to never picked, and only the shopper’s context changed. With the rich brief, ours was the only listing under USD 90 in the supplied snippets that stated a room size, and the shopper had asked for exactly that. With the thin ask, the only requirement was “quiet”. One competitor stated 21 dB and two stated 26 dB, against our 28 dB, so ours had nothing extra to offer.
It can even invert. With the one-line ask, Gemini 3.8 Flash picked the vague version of our humidifier in 5 of 20 sessions and the factual one in 0 of 20. The vague copy repeated the shopper’s own words, “quiet” and “bedroom”. The cells are small, but the direction is a warning against testing only thin prompts.
This is a simulation with snippets we supplied, an invented product and API models. It isn’t ChatGPT, Gemini or AI Mode shopping. What it shows is narrow and useful: the same product can be a sure pick or a non-starter depending on the context, so a test that doesn’t record context hasn’t measured anything you can compare.
Keep the disqualifiers
A rich profile can make your product less suitable, and that’s the point. If your humidifier covers up to 400 sq ft, a shopper with a 450 sq ft room should be told no. Our constraint coverage guide shows a real catalog listing that says exactly that. It’s a no for the 450 sq ft brief and a yes for someone with a 350 sq ft bedroom. Coverage belongs to a brief, never to a product on its own.
So the test needs a third profile we haven’t run yet: a rich brief your product should fail. For the humidifier, that’s a 600 sq ft room when the listing says “Not for rooms over 500 sq ft”. If an assistant still recommends your product to that shopper, your limit isn’t being read, and you’ll pay for it in returns.
What we know so far is limited. In our simulation, adding that “not for” line left GPT and Gemini pick rates close to the plain factual version. On Claude, pooled picks fell from 134 of 180 to 118 of 180. No brief asked for a bigger room, so we never tested whether the limit helps an agent turn away the wrong buyer. Keep true limits on your listings anyway. Our guide to negative product facts covers how to write them.
The context-control test card (proposed)
Fill one card per test run. It’s our proposal, not an industry standard, but every field corresponds to an input a platform documents.
| Field | What to record | Thin run example | Rich run example |
|---|---|---|---|
| Surface and date | Assistant, app or web, and the date and time | ChatGPT web, 2026-10-27 14:00 | Same |
| Account | Signed in or out; a fresh account or a used one | Signed in, fresh test account | Same account |
| Memory and personalization | Memory on or off; custom instructions; Personalized Recommendations; connected apps | Memory off, no custom instructions | Memory off, no custom instructions |
| Country, region, language | Where the test ran and in what language. For catalog tools, any country, currency or postal code sent | US, English | US, English |
| Conversation state | New chat, or earlier messages in the thread | New chat | New chat |
| Exact prompt | Copied verbatim | “I need a quiet humidifier for my bedroom.” | The full detailed brief |
| Requirements stated | One per line | Quiet | Room 450 sq ft, quiet with a stated dB, under USD 90, 24 h or more per fill, evidence asked for |
| Disqualifiers to preserve | Facts on your listing that should rule it out for this shopper | None apply | None apply (run a third card where one does) |
| Repeats | How many times you ran it, each in a new chat | 5 | 5 |
| Received result | Products shown, in order, with the text shown for yours | Saved list and text | Saved list and text |
Rules for using it:
- Change one thing at a time. If you switch memory on and change the prompt in the same run, you can’t say which one moved the result.
- Compare cards only when the context fields match. A rich run on a signed-in account isn’t comparable with a thin run signed out.
- Repeat. One run is an anecdote. Our simulation used about 20 sessions per model and brief, and even that leaves wide intervals.
- Save what was shown, not just where. Assistants can rewrite your listing. OpenAI says ChatGPT may generate simplified titles and descriptions. Record the text the assistant actually displayed for your product.
Worked card: our own catalog snapshot
Here’s the card for the biggest dataset on this site, filled honestly.
| Field | Our 162-search Shopify Catalog snapshot |
|---|---|
| Surface and date | Shopify’s Global Catalog, searched read-only on October 26, 2026 |
| Account | No buyer token |
| Memory and personalization | None: the catalog received no buyer context |
| Country, region, language | None sent: no country, currency or postal code |
| Conversation state | Not applicable; single searches |
| Exact prompt | 162 fixed search strings, for example “humidifier for dry winter air large room quiet top fill” |
| Repeats | One run per search |
| Received result | 1,620 result occurrences, not distinct products, with one variant per product |
Filling the card changes how every number from it should be read. The native-checkout flag was false on all 1,620 returned variants. Because the card says “no buyer context”, that’s a finding about one unpersonalized context. Shopify documents that agents can send a country, currency or buyer token, and any of those could change what comes back. Our write-up of that flag is careful about this for the same reason.
The card doesn’t make the snapshot less useful. It makes clear what it can and can’t support.
Where this fits
How shopping agents choose products covers the stages a product passes through, and personalization touches most of them. The platform comparison maps each assistant’s data routes. For a full audit that uses cards like this one, see our AI visibility audit guide. For running the same prompts over time, see prompt tracking. For the ChatGPT-specific checks, see our ChatGPT guide.
What this guide can’t tell you
It can’t tell you how much any single setting moves results on ChatGPT, AI Mode, Gemini or Perplexity. The platforms list inputs, not weights, and we can’t see what they show shoppers. The thin-versus-rich numbers come from a controlled simulation, not live assistants. Perplexity’s personalization is described only in launch posts. Checked on October 27, 2026; re-check before acting.
Your next step
Take the question customers ask you most, and write it twice: once as a one-line ask, once as a full brief with three to five requirements. Add a third version your product should fail. Run each in a fresh chat with memory off, record each run on the card, and repeat five times. Compare the three cards, not three screenshots.