Product Content
Shopify product schema: the fields that actually matter
Most Shopify themes emit incomplete Product structured data. Here is exactly which fields matter for AI assistants and rich results, the four failures that appear on nearly every store, and how to check yours in ten minutes.
August 4, 2026 · 12 min read
Product structured data tells AI assistants and search engines your price, currency, availability, brand and review data as machine-readable facts instead of prose to be guessed at. On Shopify the markup usually exists but is incomplete — most commonly missing availability, omitting priceCurrency, duplicating across app and theme, or reporting one price for every variant.
Structured data is the least interesting part of AI visibility and one of the most consequential, because it converts your key commercial facts from something a model has to infer into something it can simply read. When a shopper asks for something "under $30 and in stock", the store whose page states price and availability as data gets included with confidence. The store whose price appears only inside a JavaScript-rendered button gets omitted with equal confidence.
This article covers what the fields are for, which ones actually change outcomes, the four defects that appear on the majority of Shopify stores, and how to verify your own without guessing.
What structured data does for an assistant
A model reading your page in prose form has to decide whether "129" near the top is the price, a product code, or a capacity in millilitres. It usually gets this right, and "usually" is the problem — a recommendation carries a claim, and a model that is unsure whether your product meets a stated price constraint will prefer a page where it is certain.
A JSON-LD block removes the ambiguity entirely. It states, in a fixed vocabulary, that the price is 129, the currency is AED, the item is in stock, the brand is X, and the rating is 4.6 from 212 reviews. Every one of those is a constraint a shopper might have asked about.
The fields that matter, ranked
| Field | What it states | Cost of omitting |
|---|---|---|
| offers.availability | InStock, OutOfStock, PreOrder | High — an assistant cannot confirm the item is buyable, and "in stock" is an extremely common constraint |
| offers.price + priceCurrency | The number and its currency, separately | High — price-constrained questions are the most frequent commercial query shape |
| name | The product title | High — without it the block cannot be tied to a product |
| brand | The manufacturer or your own brand | Medium — brand-filtered questions are common, and it establishes provenance |
| aggregateRating + review | Rating value, count, and individual reviews | Medium — social proof is a strong tie-breaker between comparable products |
| image | One or more product image URLs | Medium — required for most rich result types |
| description | The product description | Medium — a clean copy of the prose, free of theme markup |
| sku / gtin / mpn | Identifiers | Low for AI, higher for shopping feeds and cross-source matching |
| offers.priceValidUntil | When a promotional price ends | Low, but omitting it can suppress rich results on some templates |
Work top-down. Availability and price together account for most of the practical difference; identifiers matter far more for merchant feeds than for assistant recommendations.
The four defects on nearly every Shopify store
1. Availability is missing or always InStock
Many themes emit an offers block with a price and no availability at all. A worse variant hard-codes InStock regardless of inventory, so sold-out products claim to be buyable. That is not merely a technical gap — it produces recommendations to shoppers who then hit a sold-out page, which is a trust cost with a real conversion consequence.
The correct behaviour is to derive availability from the variant's actual inventory state and reflect it per variant, including PreOrder where you accept back-orders.
2. Two schema blocks on one page
This appears the moment a store installs a reviews app or an SEO app while the theme already emits Product markup. Now the page carries two Product blocks, frequently disagreeing — different prices after a currency conversion, different ratings, one with availability and one without.
Consumers of the markup have to pick one, and there is no guarantee they pick the correct one. The fix is to decide which source owns Product schema and disable the other. Most review apps have a setting for exactly this because the conflict is so common.
3. Prices formatted as text
The price field takes a plain number. A currency symbol, a thousands separator, or a currency code inside the value makes the offer invalid — "AED 1,299.00" fails where 1299.00 with priceCurrency: AED succeeds.
This surfaces most often on stores using multi-currency, where a currency-formatting filter gets applied to the schema output as well as to the visible price. It also matters that the schema price matches what the visitor is shown; a block reporting the base currency while the page displays a converted price is a mismatch.
4. Variants collapsed into one offer
A product with a 50ml at 129 and a 100ml at 219 that emits a single offer at 129 is telling assistants something false about half its catalogue. Multi-variant products should emit either an offer per variant or an AggregateOffer with lowPrice and highPrice, so the range is stated rather than implied by whichever variant happened to be default.
How to check your store
- 1
Test a representative product
Run a live product URL through Google's Rich Results Test. Pick a multi-variant product with reviews rather than your simplest one — defects hide in the complicated cases.
- 2
Read the parsed output, not just the pass/fail
The test shows the detected items. Confirm price, priceCurrency, availability and brand are all populated with plausible values. A green result with availability absent is still a gap; warnings are where the real information is.
- 3
Count the Product blocks
If the test reports more than one Product item on the page, you have a duplication problem. View source and search for "@type":"Product" to find where each block comes from — theme code or an app.
- 4
Test one of each template type
A default product, a multi-variant product, a sold-out product, and a product on sale. Availability and price defects only appear on the specific state that triggers them, so testing one healthy product proves very little.
- 5
Confirm the markup matches the page
The rating, price and availability in the schema must equal what a visitor sees. Any divergence is both a policy violation and, more practically, a source of recommendations that turn out to be wrong.
What structured data will not do
Complete, valid Product markup makes you eligible to be quoted accurately. It does not make you preferable. If your description says nothing that answers a buyer's question, perfect schema means an assistant knows precisely how much your unremarkable product costs.
The sequence that works: crawler access first, because it gates everything; product content next, because it decides whether you are worth recommending; structured data alongside it, because it is cheap and template-level. Treating schema as the whole job is the most common way this work gets done thoroughly and changes nothing.
Frequently asked questions
Does Shopify add Product schema automatically?
Most themes include some, but completeness varies widely between themes and between template variants within one theme. Assume nothing and test — the gap is usually availability or per-variant pricing rather than the block being absent entirely.
Do I need a schema app?
Usually not. If your theme's markup is complete after testing, an app adds a second source of truth and a duplication risk. Apps earn their place when your theme's markup is broken and editing theme code is not an option for you.
Can I mark up reviews I don't display?
No. Structured data must describe content visible on the page. Marking up ratings that are not shown is a violation that risks losing rich results entirely, and it misleads shoppers who arrive expecting reviews that do not exist.
Does schema affect AI assistants or only Google?
Both, differently. Search engines use it to generate rich results with documented requirements. Assistants use it as a high-confidence source for facts they would otherwise infer from prose. Neither publishes a weighting, but stating facts unambiguously helps any consumer of the page.
What about Organization and BreadcrumbList schema?
Worth adding and much lower priority. Organization establishes who you are across your site; BreadcrumbList clarifies category structure. Neither answers a buying constraint, so both come after Product markup is correct.
How do I handle multi-currency stores?
The schema price and priceCurrency must match what the visitor is actually shown, so the block has to be generated per rendered currency rather than hard-coded to your base. This is the single most common source of invalid price values on international stores.
The verdict
Product schema is a ten-minute audit that most stores have never run, protecting facts that decide whether you are included in a price-constrained or in-stock-constrained recommendation. The defects are boring and repetitive: missing availability, duplicate blocks, formatted prices, collapsed variants.
Run the test on four products — a normal one, a multi-variant one, a sold-out one, and one on sale. Whatever it surfaces is a template fix, which means fixing it once fixes it for your entire catalogue and for everything you add next year.
More in Product Content