OpenAI's shopping experience inside ChatGPT — the product cards that appear when a user asks "what's the best [product] for [use case]" — is now a top-funnel surface that quietly handles a meaningful share of high-intent shopping research. It is also one of the least documented AI search surfaces. OpenAI publishes no ranking signals, no submission portal, and no opt-in dashboard. The engine reads your catalog the way it reads the rest of the web, and the brands that surface in it are the brands whose product data was easiest to read.
That's the entire opportunity. ChatGPT Shopping rewards merchants with clean, structured, fully-attributed product data — and it ignores merchants whose PDPs are inconsistent, whose Product schema is half-implemented, or whose feeds are out of sync with their live pages. The playbook is technical and unglamorous. It is also, for the brands that have done the work, paying out in attributable traffic.
How ChatGPT Shopping decides what to show
ChatGPT Shopping is not a separate index. It is the same retrieval-and-synthesis pipeline that powers the broader chat experience, with a layer on top that recognizes product-intent queries and renders structured product cards rather than free-text answers.
When a user asks a product-intent question, the engine:
- Determines that the query is shopping-shaped (a product class plus a buying signal).
- Pulls candidate products from its index. The index is fed by web crawling (via OAI-SearchBot and GPTBot), by structured-data extraction, and by merchant-side feeds where they exist.
- Synthesizes a recommendation set — typically 3–8 products — that match the user's stated constraints.
- Renders the cards with image, title, price, rating, and a deep link to the merchant.
The brands that surface in step 3 are the brands whose product data made it cleanly through steps 1 and 2. That is what we are optimizing.
The data spine: Product schema
The single highest-leverage thing you can do for ChatGPT Shopping eligibility is ship complete, valid Schema.org Product markup on every PDP. We see consistent surfacing only on pages that include:
- Product with
name,description,brand(as a nested Brand object, not a string),sku,mpn(where applicable),gtin(where applicable), andimage(at least three images, ideally with explicitwidthandheight). - Offer nested inside the Product, with
price,priceCurrency,availability,priceValidUntil,itemCondition, andurl(the canonical PDP URL, not a variant URL with tracking params). - AggregateRating with
ratingValue,reviewCount, andbestRating— only when the count is real. Faking ratings is a fast path to suppression. - Review entries for at least a handful of recent reviews on flagship products, with
author,reviewBody,datePublished, andreviewRating.
The schema needs to be valid against both Schema.org's reference and Google's Rich Results Test. The two validators have meaningfully different warning sets, and OpenAI's parser appears to be stricter than either. Pages that throw "missing recommended field" warnings in Google's tool routinely fail to surface in ChatGPT Shopping; pages with zero warnings in both tools surface consistently.
For the deep technical playbook, see ChatGPT Shopping optimization.
The feed: when (and whether) to submit one
OpenAI has rolled out a merchant-side feed program to a subset of major retailers. For most brands, you will not have access to it — and that is fine. The on-domain Product schema route is the broader, more durable optimization regardless.
If you do have a Google Merchant Center feed (which you almost certainly should for Google Shopping anyway), keep it in lockstep with your live PDPs. The feed is not directly read by ChatGPT today, but it is one of the cleanest cross-checks the engine has when validating that your structured data on a PDP matches the actual product. Inconsistencies between feed and page (price, availability, GTIN, image) hurt eligibility on both surfaces.
What ChatGPT actually pulls when it cites a product
When we instrument ChatGPT Shopping responses against a fixed prompt panel, the data points the engine most consistently surfaces in product cards are:
- Product name (cleaned of marketing fluff — "Brooks Adrenaline GTS 23" is the name; "Brooks Adrenaline GTS 23 — Premium Stability Running Shoe for Daily Training" is what your PDP title tag looks like and not what the card shows).
- Brand — read from the schema's Brand object far more reliably than from the H1.
- Price — read from the Offer block. If the schema price disagrees with the visible price on the page, the engine sometimes shows neither.
- A representative image — typically the first image in the schema's
imagearray. - A short attribute string — usually paraphrased from your product description's first 1–2 sentences. Front-load the buyer-relevant attributes ("waterproof, wide toe-box, max cushion") there.
- Star rating + review count — only when AggregateRating is present and valid.
Two follow-on points fall out of this:
- Your product description's first 200 characters are doing more work than your meta description. Treat the opening of every PDP body like a 200-character ad headline.
- Your hero image needs to be the right hero image. ChatGPT Shopping picks the first valid image in your schema array. If that's a lifestyle shot with three models and a beach, the card looks terrible. Order your
imagearray so the product-on-white shot is first.
What gets you suppressed
The patterns we see correlate with suppression from ChatGPT Shopping:
- AggregateRating that doesn't match the on-page reviews. Schema claims 4.8 stars and 312 reviews; the visible review widget shows 47 reviews and a 3.9 average. The engine reads this as untrustworthy.
- Out-of-stock products with
availability: "InStock"in the schema. Stale data is suppression-grade. - Variant PDPs with cross-variant duplication. The same product spread across 14 color-specific URLs, each with identical schema except for the color attribute, looks like spam to the engine.
- Heavy interstitials, paywalls, or "subscribe before viewing" overlays. OAI-SearchBot and GPTBot are not patient. If they can't render the PDP, the PDP doesn't make the index.
- Affiliate-tagged canonical URLs. Your canonical URL should be the clean PDP URL. Tracking params in
canonicalcreate cross-citation chaos.
The off-domain layer
ChatGPT Shopping's index is fed primarily by on-domain content. But ChatGPT's recommendations are shaped by the broader corpus — the same one that shapes its free-text answers. Brands named in expert roundups, comparison reviews, and editorial coverage in the relevant verticals surface in shopping cards at a higher rate than brands without that footprint, even when on-domain schema is identical.
This is the same pattern we covered in our engine comparison: ChatGPT rewards paraphrase recall, and paraphrase recall is built on cross-domain mention density. For the deep playbook, see ChatGPT SEO services.
Don't forget llms.txt
A clean llms.txt at the root of your domain that points at category pages (not every variant URL) is a low-cost signal that helps any AI agent — including OpenAI's — figure out which of your pages are canonical. We've covered the full llms.txt explainer separately, but the short version: include your top categories, your flagship PDPs, and your trust/policy pages. Skip the variant explosion.
Common questions
Does OpenAI have a shopping submission portal?
Not for the broader merchant base, no. OpenAI has partnered with select major retailers on direct feed integration but the broadly-available path is the same path that's been available for years: clean structured data on the live PDPs, friendly robots.txt for GPTBot, and consistent product data across the feed and the page.
What about ChatGPT Operator and agentic checkout?
Different surface. Operator is the agentic-browsing layer — an agent that can actually navigate, configure, and (in some flows) check out on your site. Optimizing for Operator is a different discipline that overlaps with traditional e-commerce UX: agents need stable selectors, accessible checkout flows, and clean machine-readable cart state. We cover that in our agentic commerce breakdown.
Should I be worried about traffic cannibalization?
The traffic profile from ChatGPT Shopping is different from the traffic profile from Google. Sessions are typically lower volume, higher intent, higher AOV. Brands we instrument see ChatGPT-referred traffic convert at multiples of organic-search conversion rate. The cannibalization framing is the wrong one; the right framing is that you are now exposed on a surface where the average visitor is closer to purchase, and you want to be ready for them.
Does ChatGPT use MCP?
OpenAI has shipped MCP support in the developer API and in some agent contexts. ChatGPT Shopping itself does not require a merchant MCP endpoint today — the discovery path is still browse-and-extract. But brands building toward agentic commerce should expect MCP-style endpoints to be the standardized integration layer for agent-driven checkout over the next 12–24 months. See MCP for eCommerce for the merchant-side primer.
Key takeaways
- ChatGPT Shopping reads your live PDPs, your structured data, and (for the major retailers in the program) your merchant feed. The path that works for everyone is on-domain Product schema done correctly.
- Product schema must be valid in both Schema.org's reference and Google's Rich Results Test, with Brand as a nested object, Offer complete, and AggregateRating present and accurate.
- The first 200 characters of your product description and the first image in your schema
imagearray are the highest-leverage copy and asset decisions on the page. - AggregateRating mismatches, stale availability, variant explosions, and tracker-tagged canonicals all correlate with suppression.
- Off-domain mention density (editorial coverage, comparison pieces, expert roundups) shapes which brands get recommended, even among those with clean schema.
For brands ready to audit their PDP schema, fix what's broken, and instrument ChatGPT Shopping citation rate as a real KPI, start with our ChatGPT shopping optimization service or reach out directly.
