There is a claim going around that ChatGPT Shopping reads your Product schema, and that you need specific fields in your markup, things like shippingDetails and reviewCount, before your products can appear. Several guides state it confidently. Some list the exact properties.
It isn't true.
OpenAI's commerce documentation does not mention schema.org, JSON-LD, or microdata anywhere. Not in the program overview, not in the feed specification, not in the onboarding guide. Products reach ChatGPT through a file you send OpenAI, or through an ordinary crawl of your website. Neither path is documented as reading your structured data.
That does not mean Product schema is a waste of time. It means it is doing a different job than people have been told, for a different set of systems, and knowing which is which saves you from optimising the wrong thing.
Here's how products actually get into ChatGPT, what your markup is genuinely worth, and where the two finally meet.
The Two Ways a Product Reaches ChatGPT
There are two, and they work completely differently.
The feed. You send OpenAI a file containing your catalogue. This is the direct, documented, structured path, and it is what powers the shopping experiences with prices, availability, and in-chat checkout.
The crawl. OAI-SearchBot fetches your product pages like any other search crawler, and what it finds can surface in ChatGPT's answers. This is the path that is open to everyone right now, and it is the one most guides skip past.
Almost everything written about "optimising for ChatGPT Shopping" conflates these. The advice that belongs to one track gets applied to the other, which is how a feed requirement turns into a schema requirement in the retelling.
Track One: The Feed
OpenAI's commerce documentation states the mechanism plainly:
Provide a structured product feed so ChatGPT accurately indexes and displays your products with up-to-date price and availability.
A structured product feed. Not structured data on your pages. A separate file.
The required fields, per the feed specification, are: item_id, title, description, brand, url, image_url, price, availability, and seller_name. Familiar territory if you have ever built a Google Merchant Center feed, because it is the same shape of data.
The formats are plain files. A UTF-8 tab-delimited .txt or .tsv, or a comma-delimited .csv, with gzip-compressed versions of each also accepted. Feeds are pushed to OpenAI, and the onboarding guidance recommends refreshing at least daily, treating a full catalogue export as the source of truth.
And here is the line that settles the whole question, from the spec itself:
These fields do not affect how the product is displayed on your own site. They simply enable or disable the ChatGPT integrations.
The feed and your website are two separate representations of the same catalogue. One does not read the other.
The Part Most Guides Leave Out
Before you go rebuilding your export pipeline, there is a catch worth knowing, and it is stated directly in OpenAI's getting started guide:
Onboarding product feeds in ChatGPT is currently available to approved partners. To apply for access, fill out this form here.
Approved partners. There is an application, and access is gated.
So for most stores reading this, the feed is not something you can go and set up this afternoon. It is something you apply for. Any guide walking you through "how to submit your ChatGPT product feed" as though it were a self-serve form you fill in on a Tuesday is describing a door that is not open to you yet.
Which makes the second track the one that actually matters today.
You Probably Already Have Most of This
Look at that required field list again: item_id, title, description, brand, url, image_url, price, availability, seller_name. If you run a Google Merchant Center feed, you are already producing every one of those, under slightly different names.
That is not a coincidence. Both are solving the same problem, which is that a shopping system needs a reliable, refreshed, machine-readable catalogue and cannot get one by scraping storefronts. Every platform that has tried to do commerce at scale has landed on a feed for exactly this reason.
The practical consequence is reassuring. For most stores, feed access is a mapping exercise against an export you already generate, not a new data project. What it is not is a schema exercise. Your JSON-LD is not an input to it, and rewriting your markup does not move you closer to it.
It also explains why the "ChatGPT needs shippingDetails in your schema" claim spread so easily. It sounds right, because a feed genuinely does want shipping information, and because Google's merchant features genuinely do read that property from your markup. Someone collapsed two true statements about two different systems into one false statement about a third.
Track Two: The Crawl
OAI-SearchBot is the crawler that surfaces sites in ChatGPT's search results. It is separate from GPTBot, which collects content for model training and has nothing to do with whether you appear in answers today.
This distinction costs stores real visibility. A robots.txt rule written to keep AI crawlers out, or a broad Disallow left over from a migration, can block OAI-SearchBot along with everything else, and nothing in your analytics will tell you it happened. If that bot cannot reach your product pages, no amount of markup, feed work, or content rewriting changes anything, because there is nothing to work with. This is the same failure mode that blocks AI crawlers from the rest of a site, and product pages are no more immune to it than anything else.
OpenAI's own advice for site owners is unglamorous and specific: allow OAI-SearchBot in your robots.txt, and permit requests from its published IP ranges.
After that, what helps on this track is what helps any crawler make sense of a product page. Your price, stock status and shipping terms need to be in the page's HTML rather than appearing only after JavaScript runs. The details a buyer would ask about, materials, sizing, compatibility, what is actually in the box, need to be written down rather than implied by a photograph. And the page needs to say clearly what the product is, in words, not just in a title and a gallery.
Is structured data part of that? Honestly: OpenAI does not say. It does not list schema.org as a factor, and it does not rule it out. Anyone telling you they know how much weight it carries inside ChatGPT is guessing, and we are not going to pretend otherwise to sell you markup. What is defensible is narrower and still worth something: JSON-LD is a clean, unambiguous statement of your price, availability and product identity sitting in the page a crawler already fetched. It costs nothing extra to be legible.
So What Is Product Schema Actually For?
This is where markup earns its place, and the return is concrete rather than speculative.
Google, where the effect is documented and visible. Product structured data is what makes your pages eligible for a long list of Google surfaces: product snippets with price and availability, merchant listings, popular products, shopping knowledge panels, annotated product images in Google Images, product variants, merchant return policy, and loyalty programs. These are real features you can see in a search result, and they are the payoff nobody has to speculate about.
Google is also explicit about how markup and feeds relate, which is worth reading next to OpenAI's silence on the subject:
Providing both structured data on web pages and a Merchant Center feed maximizes your eligibility to experiences and helps Google correctly understand and verify your data.
That is a meaningfully different posture. Google treats your markup and your feed as two accounts of the same thing that check each other. OpenAI's documented path is the feed alone, with crawling as a separate lane.
Bing, and what runs on it. Bing states in its own documentation that structured data is one of the clues it uses to understand a page. Since Microsoft's AI products sit on Bing's index, your markup has a route into an AI answer layer there.
Your own consistency. The least discussed benefit and arguably the most useful. Once your price and availability exist as machine-readable data generated from your catalogue, rather than as text a human typed into a template, every system reading your site gets the same answer.
For the actual implementation, we have gone through Shopify's Product block in detail, including the duplicate-schema trap that platform creates, and star ratings have their own rules that are easy to get wrong in ways that quietly disqualify you.
Where the Two Tracks Finally Meet
If you do get feed access, the feed and your website stop being independent, in one specific way: they have to agree.
A feed saying $40 while your product page says $60 is a bad experience wherever it surfaces, and a shopper who arrives at a different price than the one they were shown does not come back. Same for stock status. Same for shipping terms.
The reliable way to avoid that is to stop maintaining them separately. If your feed, your page, and your JSON-LD are all generated from the same catalogue record, they cannot drift. If any one of them is maintained by hand, it will, and you will find out from a customer rather than from a report.
This is the honest reason to care about Product schema in an AI commerce context. Not because ChatGPT reads it. Because the discipline of having one machine-readable source of truth for what you sell is what keeps every representation of your catalogue consistent, whichever system happens to be reading which one.
Common Mistakes
Adding schema fields because a blog post said ChatGPT requires them. It does not. shippingDetails and reviewCount are perfectly good properties with real value on Google's surfaces, so adding them is not wasted. But adding them expecting a ChatGPT result is optimising against a requirement nobody has published.
Blocking OAI-SearchBot while working on your markup. The most expensive mistake on this list, and the easiest to make by accident. Check your robots.txt before anything else.
Assuming GPTBot and OAI-SearchBot are the same decision. They are not. Blocking GPTBot keeps your content out of model training. Blocking OAI-SearchBot removes you from ChatGPT's search results today. Plenty of stores block both while intending only the first.
Letting the feed and the page disagree. Covered above, and worth repeating because it is the failure that costs a sale rather than an impression.
Treating the feed as a replacement for a good product page. Even with feed access, the crawl track keeps running, and your page is what a shopper lands on. A feed cannot compensate for a page that never says what the product is made of.
Waiting for feed access before doing anything. Access is gated and you do not control the timeline. Everything on the crawl track is available to you today.
Believing a specific number about AI shopping visibility. Nobody outside OpenAI can measure how often a product surfaces in ChatGPT or why. Percentages attached to those outcomes are decorative.
What to Do This Week
In order, because the order matters.
1. Read your robots.txt. Fetch yoursite.com/robots.txt and confirm OAI-SearchBot is not blocked, by name or by a broad rule. Five minutes, and it gates everything else.
2. View the raw source of a product page. Right click, "View Page Source," which shows what your server actually sent, not what the browser built. Your price, stock status and description should be visible there. If they only appear in the rendered page, a crawler that does not run JavaScript sees a shell.
3. Read one product page as a stranger would. Does it say what the thing is made of, what size it is, what it fits, what is in the box? Most product pages answer these in photographs, which a crawler cannot read.
4. Check that your Product markup matches the page. Price, availability and ratings need to agree with what a visitor sees. A mismatch is a policy problem on Google's surfaces, not a harmless inconsistency.
5. Fill in the Google-facing properties you are missing. Return policy, shipping details, variants, loyalty. These have documented effects on real Google features regardless of what any AI system does with them.
6. Apply for feed access if you want it. It is gated, so the application is the only step available, and it costs nothing to be in the queue.
7. Find out where your product data actually lives. If your feed, your page and your markup are three separately maintained copies, fixing that is worth more than any single field you could add.
Frequently Asked Questions
Every one of the crawl-track items above comes down to whether a machine can read your pages at all. Run a free AI readiness check to see what an AI crawler actually gets from your site, starting with whether it can reach it.
Is your site ready for AI?
Get a free readiness score in under a minute. No signup, no card.
Run the free check