Product schema and structured data for AI shopping
AI shopping assistants read your catalogue through Product, Offer, and AggregateRating JSON-LD — not your pretty theme. Here is exactly which fields matter, how Shopify emits schema, where the gaps are, and how to validate it.

AI shopping assistants read your catalogue through structured data — Product, Offer, and AggregateRating JSON-LD — not through your theme design. When ChatGPT, Google's AI Overviews, or Perplexity compare products, they extract price, availability, rating, and brand from your schema. If those fields are missing or wrong, you get skipped or misquoted, no matter how good the product is.
I am a senior Shopify developer in Delhi, and I add and audit product schema on nearly every store I build or optimise for AI search. This is the practical version: which fields actually move the needle, how Shopify emits schema out of the box, where the gaps consistently show up, and how to validate the whole thing before you trust it.
What is product schema, and why does AI shopping depend on it?
Product schema is structured data that describes a product in a format machines can parse without guessing. On Shopify it is almost always JSON-LD — a block of JSON in a <script type="application/ld+json"> tag — following the schema.org Product vocabulary.
A human reads your product page and understands "₹2,499, in stock, 4.6 stars." A crawler reading raw HTML sees a jumble of divs and prose and has to infer all of that. Structured data removes the inference. It states, explicitly and in a fixed shape:
- This is a Product named X, by brand Y.
- It has an Offer: price 2499, currency INR, availability InStock.
- It has an AggregateRating: 4.6 out of 5, from 218 reviews.
AI shopping engines are built to consume exactly this. When someone asks ChatGPT "best affordable running shoes under ₹3,000" or asks Perplexity to compare two skincare serums, the assistant is assembling an answer from whatever structured, quotable facts it can find. A product with clean schema is a quotable candidate. A product without it is a paragraph the model has to interpret — riskier, so it often gets dropped in favour of a competitor whose data is unambiguous.
This is the same shift I wrote about in how D2C brands show up in ChatGPT and Perplexity: the winners are not the loudest brands, they are the most legible ones. Product schema is where legibility starts for a store.
Which schema fields actually matter for AI shopping?
Not all fields are equal. Here is what I prioritise, and why, based on what AI shopping surfaces and Google product results actually use.
| Field | Type | Why it matters for AI shopping |
|---|---|---|
name | Product | The exact product string the model quotes and matches to a query |
description | Product | Feeds specs, materials, use-cases; the model paraphrases from here |
image | Product | Required for most rich results and shopping cards |
brand | Product | Lets AI attribute the product to you, not a marketplace reseller |
sku / gtin | Product | Global identifiers let engines de-duplicate and match across sources |
offers.price | Offer | The single most-quoted fact in AI shopping answers |
offers.priceCurrency | Offer | Without it, price is ambiguous across markets (INR vs USD) |
offers.availability | Offer | "In stock" is a recommendation gate; out-of-stock gets filtered |
aggregateRating.ratingValue | AggregateRating | The star number that tips a "which is better" comparison |
aggregateRating.reviewCount | AggregateRating | Social proof volume; 4.6 from 900 beats 5.0 from 3 |
If you optimise nothing else, get price, currency, availability, brand, and a real aggregateRating correct on every product. Those five are the facts an AI assistant leans on to decide whether to put you in the answer.
A note on gtin and sku: these matter more than people think. Global identifiers let engines connect your product page to the same product on other sources, which builds confidence in your data. If you sell your own branded SKUs without a GTIN, at minimum populate sku and brand consistently so you own the identity.
How does Shopify emit product schema out of the box?
This is where most store owners get a false sense of security. The honest answer: Shopify and your theme emit some product schema, but rarely all of it, and rarely perfectly.
There are two sources of structured data on a typical Shopify store:
-
Your theme. Modern Online Store 2.0 themes — Dawn and most premium themes — include a JSON-LD block on the product template. Dawn, for example, outputs a
Productobject withname,description,image,offers, and oftenskuandbrand. It builds this from Liquid objects likeproduct,product.selected_or_first_available_variant, andproduct.metafields. -
Shopify's own injection. Shopify adds some structured data at the platform level, and apps (reviews, SEO, feed apps) inject more.
The problem is that these sources are inconsistent and uncoordinated. In audits I regularly see:
- Themes that emit
Productbut omitaggregateRatingentirely, because reviews live in an app the theme's schema never reads. - A single
offersobject for a product with many variants and prices, so the marked-up price is wrong for most of the catalogue. brandhardcoded, missing, or set to the theme vendor instead of the actual brand.- Duplicate or conflicting JSON-LD blocks — one from the theme, one from an SEO app — that contradict each other on price.
- Invalid JSON that silently fails to parse, so effectively there is no schema despite the block being present.
The takeaway: never assume Shopify has handled schema for you. The theme's intent and the rendered output are different things. You have to look at the actual HTML the crawler receives. If you built on a custom theme, this is exactly the kind of gap I check for — see custom theme vs premium theme for where control over schema fits into that decision.
What does complete Product schema look like?
Here is a clean, complete example for a single-variant product. This is the shape you are validating against.
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Aravali Merino Crew Sweater",
"description": "100% extra-fine Australian merino wool crew, machine-washable, in five colours.",
"image": [
"https://cdn.shopify.com/.../sweater-front.jpg",
"https://cdn.shopify.com/.../sweater-back.jpg"
],
"brand": { "@type": "Brand", "name": "Aravali" },
"sku": "ARV-SWT-CRW-NVY",
"gtin": "08901234567890",
"offers": {
"@type": "Offer",
"url": "https://aravali.example/products/merino-crew",
"priceCurrency": "INR",
"price": "3499",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "218"
}
}
For a product with multiple variants at different prices, offers should be an AggregateOffer with lowPrice, highPrice, priceCurrency, and offerCount — or an array of individual Offer objects. A single flat price on a variant product is one of the most common and most damaging errors, because AI answers will quote a price that is only true for one variant.
The aggregateRating block must be driven by a review app that stores real reviews, and the number must match what a shopper sees on the page. More on that below, because it is where stores get penalised.
The five gaps I find on almost every store
After enough audits, the failures cluster. If you check nothing else, check these five.
-
Missing aggregateRating. Reviews render visually via an app, but the app's rating never makes it into the JSON-LD. Result: no stars in search, and no rating for an AI engine to quote in a comparison. Fixed by wiring the review app's schema output correctly, or injecting
aggregateRatingfrom a metafield the app populates. -
Wrong price on variant products. One
Offerwith one price on a product that has five variants across a price range. The marked-up price is right for one variant and wrong for the rest, so AI shopping quotes a number your shopper won't see at checkout. -
Availability that lies. Static
InStockthat never updates when inventory hits zero. An AI assistant that recommends an out-of-stock product looks bad, so engines quietly de-prioritise sources whose availability drifts. -
Missing or wrong brand. No
brand, orbrandset to the theme author. Without a correct brand, an engine can attribute your product to a marketplace reseller undercutting you, and you lose the citation to them. -
Duplicate, conflicting JSON-LD. The theme emits one block, an SEO app emits another, and they disagree. Validators flag it, and crawlers may trust neither. Pick one source of truth and disable the rest.
Every one of these is fixable in Liquid, in metafields, or in app configuration. None requires replatforming. But you cannot fix what you have not measured, which is why validation is not optional.
On-page schema vs a merchant feed: you need both
A question I get constantly: "I already have a Google Shopping feed — isn't that the same thing?" No. They feed different channels, and complete AI shopping coverage wants both.
| On-page JSON-LD | Google Merchant feed | |
|---|---|---|
| What reads it | Crawlers, AI assistants visiting your page | Shopping graph, AI shopping surfaces pulling commerce data |
| Where it lives | In your product page HTML | In Merchant Center (via a product feed) |
| Best for | Legibility when a model reads the page | Inclusion in Shopping and structured commerce results |
| Cost to Shopify store | Theme / app config | Google & YouTube app or feed app |
On-page schema is what makes your page legible the moment an AI assistant or crawler lands on it. The Merchant feed is what puts you in the structured commerce index that increasingly powers AI shopping answers. They should never disagree — if your feed says ₹3,499 and your JSON-LD says ₹2,999, you have created a trust problem that suppresses you in both channels. Keep price, availability, and identifiers consistent across both, and you cover the full surface.
How do I validate product schema on Shopify?
Validation is the step people skip, and it is the step that actually protects you. Here is the workflow I run on every store.
-
Google Rich Results Test. Paste a live product URL into the Rich Results Test. It shows what Google parses, which rich result types you qualify for, and every error and warning. Fix all errors; treat warnings as a priority list.
-
schema.org Validator. Cross-check with the schema.org Validator for spec-level correctness, independent of Google's specific requirements.
-
View the rendered source. Open the product page, view source, and confirm the JSON-LD is actually present and complete. This catches themes whose schema depends on JavaScript, or blocks that fail to render.
-
Search Console reports. In Google Search Console, watch the Product snippets and Merchant listings reports. These show errors across your whole catalogue, not one URL — which is how you catch the variant-price problem that only shows on some products.
-
Ask the AI directly. The real-world test: ask ChatGPT, Perplexity, and Google's AI about your product and category. Do they quote your price and rating correctly? Do they surface you at all? This is closer to the AEO validation I describe in AEO vs SEO vs GEO — you are testing the answer, not just the markup.
Run this loop after any theme change, app install, or migration, because all three can silently break schema. And if you are still deciding whether schema is worth the effort against everything else on your list, remember it is one of the rare optimisations that improves classic Google rich results and AI shopping legibility from the same implementation.
Where product schema sits in the bigger AEO picture
Schema is foundational, but it is not the whole strategy. It makes your catalogue legible so that when an AI engine has a reason to consider you, your facts are correct and quotable. It does not, on its own, create the demand or authority that makes you a candidate in the first place.
The full stack, in the order I build it:
- Product schema — Product, Offer, AggregateRating on every product. The subject of this post.
- Metafields — structured attributes (materials, dimensions, use-cases) that feed both schema and AI-readable content. See the metafield strategy that makes your store AI-readable.
- Real reviews — genuine, visible, marked-up ratings. Never faked.
- Content and authority — the reasons an engine considers you before it ever reads your schema.
Get the schema right first, because it is the cheapest, highest-leverage fix and it unblocks everything above it. A store with authority but broken schema gets misquoted. A store with clean schema and no authority is legible but ignored. You want both, and schema is the half you fully control.
What's next
If your product pages are not showing up — or showing up with the wrong price and no stars — in AI shopping and Google results, the fastest path is an audit of what your theme and apps are actually emitting versus what should be there. That is standard work on the builds I do as a Shopify developer in Delhi: I check the rendered schema on real product URLs, fix the variant-price and aggregateRating gaps, and validate the whole catalogue in Search Console.
Tell me your store URL and your top three products at /start and I will tell you exactly which fields are missing and what it takes to fix them — no obligation, just an honest read of where your catalogue stands.
Related reads
- The Shopify metafield strategy that makes your store AI-readable — the structured attributes that feed your schema.
- How D2C brands show up in ChatGPT and Perplexity — the AEO strategy schema plugs into.
- AEO vs SEO vs GEO — how answer-engine optimisation differs from classic search.
Sources
FAQ
Frequently asked questions
What is product schema and why does it matter for AI shopping?
Product schema is structured data — usually JSON-LD following schema.org Product, Offer, and AggregateRating types — that describes a product in a machine-readable way. AI shopping tools like ChatGPT, Google AI Overviews, and Perplexity read this markup to know your price, availability, rating, and specs. Without it, they have to guess from prose, and often guess wrong or skip you entirely.Does Shopify add product schema automatically?
Partly. Most modern Shopify themes emit basic Product JSON-LD on product pages, and Shopify injects some structured data of its own. But theme output is inconsistent — many themes miss brand, GTIN, aggregateRating, or per-variant offers, and some emit invalid or duplicate blocks. You should never assume it is complete. Always validate the rendered HTML, not the theme's intent.Which product schema fields do AI shopping engines actually use?
The high-value fields are name, description, image, brand, sku or gtin, offers (with price, priceCurrency, and availability), and aggregateRating with ratingValue and reviewCount. AI assistants lean on price, availability, rating, and brand to decide whether to recommend you. Miss those and you are a weaker candidate than a competitor whose schema is complete, even if your product is better.Can I add fake reviews to my AggregateRating schema?
No. AggregateRating must reflect real, verifiable reviews shown on the page. Google's structured data policies require the ratings to be genuine and visible to users, and marking up ratings that do not exist is a spam-policy violation that can get your rich results suppressed. AI engines also cross-check. Use a real review app that outputs schema, and only mark up what a shopper can actually see.How do I validate my Shopify product schema?
Use Google's Rich Results Test and the schema.org Validator on a live product URL, and check Search Console's Merchant listings and Product snippets reports for errors across the catalogue. View the rendered page source and confirm the JSON-LD is present and complete. For AI-specific checks, ask ChatGPT or Perplexity about your product and see whether they quote your price and rating correctly.Do I need a merchant feed as well as on-page schema?
They serve different channels. On-page JSON-LD is what crawlers and AI assistants read when they visit your product page. A Google Merchant Center feed powers Shopping surfaces and, increasingly, AI shopping results that pull from structured commerce data. For full coverage you want both — clean on-page schema for legibility and a healthy Merchant feed for the shopping graph. They should agree on price and availability.Will product schema alone get my store cited by ChatGPT?
Schema is necessary but not sufficient. It makes your catalogue legible, so when an AI engine already has a reason to consider you, your price, rating, and specs are correct and quotable. But you still need the brand authority, reviews, and content that make you a candidate in the first place. Think of schema as removing friction, not as generating demand on its own.Does product schema help with normal Google SEO too?
Yes. The same Product, Offer, and AggregateRating markup that makes you legible to AI shopping also powers Google's product rich results — the price, stock, and star ratings that show under your listing. Clean schema improves click-through in classic search and legibility in AI search at the same time. It is one of the few optimisations that pays off in both channels from a single implementation.
Revision history· 1 entry
August 19, 2026
Initial post. How Product, Offer, and AggregateRating JSON-LD makes a Shopify catalogue legible to AI shopping, which fields matter, how Shopify emits schema, common gaps, and how to validate.
Last updated August 19, 2026





