RevenueFlows AI
AI Commerce 9 required fields in OpenAI's product feed spec

Product Schema Markup for AI Agents: The Fields They Read

Everyone says structured data matters for AI. Almost nobody says which fields. Here are the seven that Google's docs and OpenAI's feed spec both name, and the one mistake that costs more than leaving them out.

Part of the guide AI Commerce: Selling Through ChatGPT, Google AI Mode and Agents →
A dark navy desk with a laptop showing a glowing block of product code, one line lit in warm orange beside a product box.

I went looking for the secret schema that gets you into AI answers. Google told me there isn't one.

Here's the short answer on product schema markup for AI: there's no special AI tag. Google says outright that you don't need any special schema.org structured data to appear in AI Overviews or AI Mode. What works is complete, honest Product and Offer markup that matches your visible page, and a product feed that says the same thing. The fields that matter are the seven facts a shopping agent has to confirm before it puts your product in front of a buyer: price, availability, brand, GTIN, reviews, shipping and returns.

Most Shopify stores ship the first two. Then they stop.

What does product schema markup for AI actually do?

It turns your product page into facts a machine doesn't have to guess at.

A human reads "only 3 left, ships free over $75" and gets it. A crawler reads a pile of HTML and has to infer it. Product structured data is a labeled copy of those facts, usually a JSON-LD block in the page head, using the vocabulary from schema.org/Product. The current release on schema.org is V30.1, dated September 16, 2026.

Now here's the part most "schema for AI" guides skip. Google's AI features page (last updated December 10, 2025) says there are "no additional requirements" to appear in AI Overviews or AI Mode. You don't need new machine-readable files or new markup. What it does ask: make sure your structured data matches the visible text on the page, and keep your Merchant Center information up to date.

So treat schema as a consistency test. You either pass it or you hand the machine a reason to doubt you.

Schema doesn't make a machine trust you. It gives the machine a way to check whether it should.

Which fields do AI shopping agents check first?

I lined up the two vendor documents that actually spell out product fields: Google's merchant listing structured data guide and OpenAI's product feed spec. They use different formats. They ask for the same seven facts.

The fact Schema.org property Google merchant listings OpenAI product feed
Price offers.price + priceCurrency Required (price above zero) price, required, like 79.99 USD
Availability offers.availability Recommended availability, required (in_stock, out_of_stock, pre_order, backorder, unknown)
Brand brand.name Recommended brand, required
GTIN gtin, gtin13, etc. Recommended, "the most specific GTIN" gtin, optional, 8, 12, 13 or 14 digits with a valid check digit
Reviews aggregateRating, review Recommended review_count and star_rating, optional
Shipping shippingDetails or an Organization-level policy Recommended shipping_price, optional
Returns hasMerchantReturnPolicy Recommended accepts_returns, return_deadline_in_days, optional

Read the Google column again. The only things Google requires for a merchant listing are name, image and an offers block with a price and currency. Everything else is "recommended."

That word is where stores fall asleep. Recommended reads like optional. But an agent comparing three bamboo sheet sets for a buyer who said "under $150, in stock, easy returns" can't answer that question with a price alone.

A careful word on what this table claims. OpenAI hasn't published a page saying ChatGPT reads the JSON-LD on your product page. What it has published is a feed with those field names, and a crawler, OAI-SearchBot, that it says is used to surface websites in ChatGPT search. OpenAI also says sites opted out of OAI-SearchBot won't be shown in ChatGPT search answers. So your page gets read, your feed gets read, and the smart move is making them agree.

What does Shopify already output, and what's missing?

Shopify gives you a head start. Its structured_data Liquid filter outputs a schema.org Product when the item has no variants and a ProductGroup when it has one or more.

The documented example output includes name, brand, description, image, url and an offer with availability, price and priceCurrency.

Here's what that example doesn't show: no GTIN, no rating, no shipping, no returns. Four of the seven facts. Your theme or your apps may add some of them, and plenty of stores end up with two or three competing Product blocks from different apps, each saying something slightly different.

So don't trust the theme. View the source of your best seller and count.

There's one more trap that catches review apps. Google's merchant listing guide warns that "dynamically-generated markup can make Shopping crawls less frequent and less reliable," and recommends putting Product markup in the initial HTML. If your star rating only appears after a script loads, a crawler in a hurry may never see it.

What does a complete JSON-LD product block look like?

Here's an example for a hypothetical queen bamboo sheet set. Swap in your own values. Every value must match what the shopper sees on the page.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Cooling Bamboo Sheet Set, Queen, Sand",
  "image": ["https://example.com/images/bamboo-queen-sand.jpg"],
  "description": "Four-piece queen sheet set woven from bamboo viscose. Fits mattresses up to 16 inches deep.",
  "sku": "BAM-Q-SAND",
  "gtin13": "0012345678905",
  "brand": { "@type": "Brand", "name": "Northline Sleep" },
  "color": "Sand",
  "size": "Queen",
  "material": "Bamboo viscose",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "312"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/cooling-bamboo-sheets?variant=123",
    "price": "139.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  }
}

Where are shipping and returns? On purpose, they're missing from this block. Google recommends defining a site-wide return policy and shipping policy once, nested under your Organization markup, and only adding shippingDetails or hasMerchantReturnPolicy at the offer level when a product breaks the rule. One policy, written once, can't drift out of sync across 40 products.

Two details people get wrong. The GTIN has to be numbers only (Google says it doesn't support the URL form), and it has to be a real code from your supplier or GS1 registration. OpenAI's spec is blunt on this too: omit the GTIN if you don't have one, and don't invent an MPN to fill the gap.

A made-up GTIN is worse than a blank one. The blank says "unknown." The fake says "lying."

Does schema for ChatGPT shopping work the same as for Google?

Same facts, different pipes.

Google reads structured data on your page and pairs it with Merchant Center. OpenAI's commerce docs describe a structured product feed: JSONL, CSV or TSV, with nine required fields (item_id, title, description, url, brand, seller_name, image_url, availability, price). If you're on Shopify, the feed side is mostly handled for you, which I cover in how to rank products in ChatGPT.

A few feed rules are worth copying into your page markup as habits, even though they're written for the feed:

If you already run Google Shopping, your feed is the cheapest place to start. Our Google Shopping feed breakdown walks through the same identifiers from the ads side.

Why does mismatched data cost you more than missing data?

Here's the thing. A missing field makes you less complete. A wrong field makes you look unreliable.

Watch what happens on a sale weekend. The page says $119. The JSON-LD, cached from a theme snippet, still says $139. The feed updated overnight and says $119. Three sources, two answers. Google's AI features page asks for structured data that matches the visible text for exactly this reason. And the buyer who clicks through expecting one price and finds another bounces faster than any machine.

So the job is three sources telling one story: the visible page, the markup, the feed.

Then the page still has to sell. An agent can shortlist you. It can't close the buyer for you. On one bedding client's Copper Bamboo Sheets page, conversion rate went from 1.0% to 4.3% and revenue per visitor went from $1.25 to $9.50 after the page was rebuilt (see the full case study numbers). Real client numbers, not typical results, and not a promise of what your store will do. Schema got nobody to buy those sheets. The page did.

For the bigger picture of how agents find, compare and send buyers, start with the AI commerce guide, then run your store against the agentic commerce checklist. And when the page itself needs work, here's how to write a Shopify product page for ChatGPT traffic.

Frequently asked questions

Do I need special schema markup to show up in AI Overviews or ChatGPT?

No. Google says there's no special schema.org structured data you need for AI Overviews or AI Mode. What helps is complete, accurate Product and Offer markup that matches your page, plus a complete product feed for the shopping surfaces that use one.

Which product schema fields matter most for AI shopping?

Seven facts show up in both Google's merchant listing docs and OpenAI's product feed spec: price, availability, brand, GTIN, reviews, shipping and returns. Google only requires name, image and an offer with a price, so the other six are the ones most stores skip.

Does ChatGPT read the JSON-LD on my product page?

OpenAI hasn't published a page saying it does. What it has published is a feed spec with fields like price, availability, brand, gtin, review_count and accepts_returns, and a search crawler called OAI-SearchBot that reads your site. Keep the feed, the markup and the visible page saying the same thing.

Does Shopify add product structured data automatically?

Shopify's structured_data filter outputs a Product or ProductGroup with name, brand, image, description and an offer with price, currency and availability. Its documented example has no GTIN, no rating, and no shipping or return fields, so check what your theme and apps actually print.

Is JSON-LD better than Microdata for product schema?

Google's merchant listing guide shows JSON-LD, RDFa and Microdata, with JSON-LD first. The bigger rule is placement: Google says JavaScript-generated markup can make Shopping crawls less reliable, so put Product markup in the initial HTML.

What to do next

Open your best-selling product page right now. Right-click, view source, search for "@type": "Product". Count the blocks, then check four things against the visible page: price, availability, GTIN, rating.

If any one of them is missing or wrong, fix that product first. One page, done properly, beats a plugin sprayed across 200.


Book Your Profit Audit

Clean schema gets your product onto the shortlist, but the page an agent sends a buyer to still has to close the sale. Get your free profit audit and we'll show you where that page is leaking buyers, then show you how to rebuild a high-converting product sales page in less than 15 minutes.

Book Your Profit Audit →

Or go here to check it out → revenueflows.ai

P.S. Agents don't reward the store with the most markup. They reward the store whose page, code and feed all tell the same true story.

Frequently asked questions

Do I need special schema markup to show up in AI Overviews or ChatGPT?

No. Google says there's no special schema.org structured data you need for AI Overviews or AI Mode. What helps is complete, accurate Product and Offer markup that matches your page, plus a complete product feed for the shopping surfaces that use one.

Which product schema fields matter most for AI shopping?

Seven facts show up in both Google's merchant listing docs and OpenAI's product feed spec: price, availability, brand, GTIN, reviews, shipping and returns. Google only requires name, image and an offer with a price, so the other six are the ones most stores skip.

Does ChatGPT read the JSON-LD on my product page?

OpenAI hasn't published a page saying it does. What it has published is a product feed spec with fields like price, availability, brand, gtin, review_count and accepts_returns, and a search crawler called OAI-SearchBot that reads your site. Keep the feed, the markup and the visible page saying the same thing.

Does Shopify add product structured data automatically?

Shopify's structured_data Liquid filter outputs a Product or ProductGroup with name, brand, image, description and an offer with price, currency and availability. Its documented example has no GTIN, no rating, and no shipping or return fields, so check what your theme and apps actually print.

Is JSON-LD better than Microdata for product schema?

Google's merchant listing guide shows JSON-LD, RDFa and Microdata examples, with JSON-LD first. The bigger rule is placement: Google says markup generated by JavaScript can make Shopping crawls less frequent and less reliable, so put Product markup in the initial HTML.

The Revenue Per Visitor Dispatch

One revenue-per-visitor playbook. Every Tuesday.

Join 7,000 plus Shopify and Amazon founders getting the one tactic we tested this week: what worked, what flopped, and exact dollar impact.