Structured data is the fastest SEO win available to most Shopify stores. Adding it correctly takes a few hours; the effects — rich results in Google, better AI Overview inclusion, improved AI readiness scores — are persistent. But most Shopify stores either have no Product schema, have incomplete schema generated by a third-party app, or have schema that doesn't pass Google's validation tests.

This is a complete checklist of every schema property worth implementing on Shopify product pages, with explanations of what each does and where it matters.

The Core Product Schema Block

Every product page needs a {"@context":"https://schema.org","@type":"Product"} block in a <script type="application/ld+json"> tag in the <head>. The minimum viable properties are:

name — The product's full name, exactly as it appears on the page. Don't abbreviate or reformat. description — A plain-text description of the product (strip any HTML). Aim for 100–300 characters. image — An array of absolute image URLs. Include your primary product image and at least one lifestyle image if available. brand — A nested {"@type":"Brand","name":"YourBrand"} object. sku — Your internal SKU or the Shopify product variant ID. url — The canonical URL of the product page.

The Offers Block (Critical)

The offers property is the most important part of Product schema for both SEO rich results and AI readiness. It signals pricing, availability, and purchase context to search engines and AI agents. The minimum required fields are:

@type: "Offer" (or "AggregateOffer" if you have multiple variants with different prices). price: The numerical price (e.g., 49.99 — no currency symbol). priceCurrency: ISO 4217 currency code (e.g., "GBP", "USD"). availability: Full schema.org URL — "https://schema.org/InStock" for in-stock products, "https://schema.org/OutOfStock" otherwise. url: The product page URL (same as the top-level url).

Optional but valuable: priceValidUntil (helps with rich result eligibility), shippingDetails (links to a OfferShippingDetails block with delivery estimate and cost), and hasMerchantReturnPolicy (links to a MerchantReturnPolicy block).

Reviews and Ratings

If your product pages show customer reviews, the aggregateRating property unlocks star ratings in Google's rich results — one of the highest click-through-rate boosters available. The required sub-properties are ratingValue (the average score, e.g. 4.7), bestRating (typically 5), worstRating (typically 1), and reviewCount (the total number of reviews).

For AI readiness, the reviewCount is particularly important. AI shopping assistants weight social proof heavily when deciding which products to recommend. A product with 312 reviews at 4.7 stars signals trust in a way that a product with no review data does not — even if the underlying products are identical.

Product Attributes (The Most Commonly Missing Section)

Most Shopify stores include the core fields above but skip the attributes section. This is the section that matters most for AI readiness. Use the additionalProperty array to list key product attributes as PropertyValue objects:

Each entry looks like: {"@type":"PropertyValue","name":"Material","value":"100% organic cotton"}. Repeat for each attribute: weight, dimensions, colour, size range, care instructions, country of origin, compatibility, certification (e.g. OEKO-TEX), or any other spec a buyer would use to compare products.

This is the schema equivalent of the product attributes you'd add to a well-written product description. AI shopping assistants parse additionalProperty fields to answer specific product queries like "find me a waterproof jacket under £150 in a size 12" — and they can only answer those queries if the attributes are present.

Is your schema complete?

Run a free audit to check your schema implementation against all ten AI readiness signals and SEO requirements.

Check Your Schema →

Variants and Size Information

Shopify products with variants (sizes, colours, materials) require a choice in schema implementation. The two main approaches are: a single Product object with AggregateOffer showing the price range across variants, or a ProductGroup at the top level with individual Product objects for each variant as hasVariant entries.

The ProductGroup approach is more verbose but more precise — each variant gets its own price, availability, and SKU. For AI readiness, the important thing is that some variant information is present and machine-readable. At minimum, describe your size range and colour options in additionalProperty entries even if you don't implement full ProductGroup markup.

Implementing Schema in Shopify

There are three ways to add Product schema to a Shopify store. The first is editing your theme's product.liquid (or main-product.liquid in Online Store 2.0 themes) to add a <script type="application/ld+json"> block that outputs product data using Liquid variables. This is the most reliable method.

The second is using a schema app from the Shopify App Store. Many of these work well for the core fields but miss additionalProperty and shipping/return policy fields. If you use an app, validate the output in Google's Rich Results Test to check for missing properties.

The third is Google Merchant Center's automatic structured data detection — this doesn't add schema to your pages but does allow Google to enhance your Shopping listings using page content. It's a fallback, not a replacement for proper schema implementation.

Validating Your Schema

After implementation, validate every product template (not just one product) using Google's Rich Results Test. Look for warnings as well as errors — warnings often indicate missing optional fields that still affect rich result eligibility. Also check Google Search Console's Rich Results report a few days after deployment to see coverage across your catalogue.

For AI readiness, the structured data check in our audit tool tests specifically for the fields AI shopping assistants rely on — not just what Google's Rich Results Test checks. Running both gives you full coverage.


Frequently Asked Questions

Does Shopify add Product schema automatically?

Most Shopify themes output some basic Product schema by default, but it's typically incomplete. Common missing fields include aggregateRating, additionalProperty, and shipping/return policy data. Always validate your existing schema before assuming it's complete.

What's the difference between AggregateOffer and Offer?

Use Offer when all variants of a product have the same price. Use AggregateOffer when variants have a price range, with lowPrice and highPrice properties showing the range. Google requires at least one type to be present for a product page to be eligible for rich results.

Can wrong schema hurt my SEO?

Yes — schema that misrepresents the page content (showing a different price than what's on the page, for example) can result in a Google manual action against your site. Always make sure schema values match what's actually shown to users. Errors in validation without misrepresentation are less serious but should still be fixed.

How many additionalProperty entries should I add?

Add one for every attribute that a buyer would use to compare or decide between products. For apparel: material, care instructions, fit type, country of origin. For electronics: weight, dimensions, compatibility, battery life. There's no maximum, but prioritise the attributes your customers ask about most frequently.

Check Your Schema Implementation

Run a free audit to see exactly which schema properties are missing from your product pages — with copy-paste fixes for each gap.

Run Free Audit

No credit card · Takes ~20 seconds