What Shopify structured data is, in one paragraph
Structured data on Shopify is JSON-LD — a JSON-shaped, script-tag-wrapped block that names the entities on a page (Product, Offer, Brand, Organization, WebSite, BreadcrumbList) and declares their properties (name, price, sku, gtin, sameAs). Shopify themes auto-generate Product JSON-LD on product pages — that's the platform-supplied floor. Everything else (site-wide Organization, WebSite SearchAction, BreadcrumbList, Article, MerchantReturnPolicy, shippingDetails) is the merchant's responsibility, injected into theme.liquid or per-template section files using Liquid variables so the markup composes dynamically per product, collection, and post.
Why schema matters more for AI shopping than for Google in 2026
Schema started as a Google rich-results play. In 2026 the bigger payoff on a Shopify store is AI shopping citation and Shopify Catalog inclusion. ChatGPT, Perplexity, Gemini, Copilot, and Shop all pull from Shopify Catalog — and Shopify's own optimisation doc names structured data and product attributes as one of the seven things merchants should make sure their products carry. A product with clean Product + Offer + Brand + AggregateRating + GTIN + shippingDetails JSON-LD gives an AI shopping engine a one-read path to the entity, the price, the brand, the rating, and the fulfilment story. A product with only Shopify's auto-emitted block forces the engine to infer those signals from prose, which it does worse and trusts less.
What Shopify themes already emit (and where it stops)
Shopify's SEO overview states verbatim: 'Schema markup for products is built into themes to enable rich snippets.' In practice, the canonical view-source audit on a fresh Dawn-derivative theme finds Product JSON-LD with name, image, description, an offers object containing price + priceCurrency + availability + url, and on most themes brand (mapped from product.vendor) and sku. What Shopify themes do NOT auto-emit reliably: gtin properties (even when the Barcode field is populated), aggregateRating, review, hasMerchantReturnPolicy, shippingDetails, site-wide Organization, WebSite with SearchAction, BreadcrumbList JSON-LD (some themes emit visible breadcrumbs but no JSON-LD), Article JSON-LD on blog posts, FAQPage JSON-LD anywhere.
Where Shopify schema still triggers rich results in 2026
What still triggers visible enhancements in Google Search: Product (rich snippets if Merchant Center aligned), Offer (price + availability on the Product card), Review and AggregateRating (review snippets, with the self-serving disqualifier), BreadcrumbList (URL-trail in results), Article (Top Stories carousel for news, organic enhancement for editorial). What no longer triggers rich results: FAQPage (retired 2026-05-07 for non-government, non-health sites). What helps AI shopping citation regardless of Google's decision: every type below.
Adding custom JSON-LD via theme.liquid
Custom JSON-LD on Shopify lives in two places: theme.liquid (site-wide entities like Organization and WebSite that fire once per page) and the per-template section files (main-product.liquid for Product, main-list-collections.liquid for collection BreadcrumbList, main-article.liquid for Article). Shopify's own SEO FAQ explicitly names theme.liquid, main-product.liquid, and main-list-collections.liquid as the three templates merchants debug structured data inside. The injection pattern is a single script tag with type='application/ld+json' containing one object or a @graph array. The block uses Liquid variables (product.title, product.featured_image, product.vendor, shop.url) so the markup re-renders dynamically per product.
The validation workflow: Rich Results Test plus Schema.org validator
Two validators handle 2026 Shopify schema work. Google's Rich Results Test (search.google.com/test/rich-results) tells you whether Google sees the markup, parses the entities, and considers the page rich-result eligible — but only for the rich-result types Google still supports. The Schema.org Markup Validator (validator.schema.org) tells you whether the JSON-LD is structurally valid against the Schema.org vocabulary regardless of Google's rich-result decisions. Use both. Rich Results Test first for Product, Offer, Review, AggregateRating, BreadcrumbList, Article. Schema.org validator for FAQPage (post-2026-05-07), MerchantReturnPolicy, OfferShippingDetails, and any custom @graph composition Google's tool no longer specifically tests.
The 14 types, in install order
Fourteen schema types cover the workload of a typical Shopify storefront. The install order, in priority sequence: Organization (the brand entity, in theme.liquid) → WebSite (with SearchAction, also in theme.liquid) → Product (verify what the theme auto-emits, layer on the missing fields) → Offer (inside Product, with price, availability, priceValidUntil) → Brand (inside Product) → GTIN / Barcode (Shopify's Barcode field maps to gtin) → BreadcrumbList (per template) → AggregateRating + Review (when independent reviews exist) → hasMerchantReturnPolicy → shippingDetails → Article (on blog posts) → FAQPage (on the FAQ hub only, post-2026-05-07). Skip the ones that don't apply. Author the rest in priority order.
hasMerchantReturnPolicy and shippingDetails — the 2026 grey zone
Two properties dominate 2026 Shopify schema discussions: hasMerchantReturnPolicy (MerchantReturnPolicy with applicableCountry, returnPolicyCategory, merchantReturnDays) and shippingDetails (OfferShippingDetails with shippingRate, shippingDestination, deliveryTime). Industry SEO publications (Jan–May 2026) repeatedly state Google AI Overviews now treats both as effectively required on Product schema — without them, a product is invisible to AI shopping agents. Shopify's primary docs do not codify this requirement at the verification window, so the AI Overviews claim is unverified against primary sources — but the fields are worth adding regardless. Reason: Schema.org documents both as canonical Offer properties, and Google Merchant Center has required them for Shopping eligibility for over a year.
The six mistakes that catch first-time Shopify installs
Six mistakes account for most failed Shopify schema installs in 2026: smart quotes in the JSON (Shopify's admin editor auto-corrects), duplicate Product emission (the theme already emits it, so the merchant's block creates a second top-level Product), site-wide injection of per-template schema (Product schema in theme.liquid fails because product.* variables are unbound off PDPs), missing application/ld+json mime type (the block is then ignored), claiming entities the page doesn't visibly support (FAQPage on a page with no Q&A, Review on the store's own product where the reviews are self-serving), and hard-coded strings where Liquid variables belong (the block declares 'Coastal Vase No. 3' on every product because the developer forgot product.title).