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. Most of the rest (a full Organization, WebSite, BreadcrumbList, MerchantReturnPolicy, shipping policy) 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, Dawn and Horizon print product JSON-LD with Shopify's structured_data filter: a Product for a product without variants, a ProductGroup with one Product per variant otherwise, carrying name, image, description, brand (from product.vendor), sku, gtin when the Barcode field is filled, and an Offer with price, priceCurrency, availability and url. They also print Article on blog posts and a short Organization from the header section; Dawn adds WebSite with a SearchAction on the home page. What they do NOT emit: itemCondition, aggregateRating, review, hasMerchantReturnPolicy, shipping details, a full Organization (contactPoint, address), BreadcrumbList JSON-LD, FAQPage JSON-LD anywhere. Older and third-party themes vary.
Where Shopify schema still triggers rich results in 2026
What still triggers visible enhancements in Google Search: Product (merchant listings on pages where people can buy, product snippets on review pages; structured data alone qualifies, no Merchant Center feed required), Offer (price + availability on the Product card), Review and AggregateRating (review snippets, as long as ratings come from real users and are visible on the page), BreadcrumbList (the URL trail in desktop results), Article (Article enhancements; Top stories need no markup). What no longer triggers rich results: FAQPage (gone for every site since 2026-05-07). 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, printed on the home page where Google reads them) 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 points to the same files when it explains where the page title (theme.liquid) and the product and collection H1s (main-product.liquid, main-list-collections.liquid) are generated. 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, Organization, and return and shipping policies, which it supports as their own types. Schema.org validator for FAQPage (no longer supported in the Rich Results Test), WebSite (site names aren't supported there either), and any type Google doesn't list.
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 (site name, on the home page, also in theme.liquid) → Product (verify what the theme auto-emits, replace it with a complete block if you need more 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 real customer reviews are shown on the page) → 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 — what Google documents
Two properties dominate 2026 Shopify schema discussions: hasMerchantReturnPolicy (MerchantReturnPolicy with applicableCountry, returnPolicyCategory, merchantReturnDays) and shippingDetails (OfferShippingDetails with shippingRate, shippingDestination, deliveryTime). Google's documentation is clear on placement: declare the store's standard return policy (hasMerchantReturnPolicy) and standard shipping (hasShippingService, supported in Search since November 2025) once under Organization, and use the Offer-level properties only for products that differ. On merchant listings both are recommended, not required. Some SEO publications claim Google AI Overviews requires them on every product; no Google or Shopify documentation says so. They're worth adding anyway, because they're how Google can show your return and shipping terms.
The six mistakes that catch first-time Shopify installs
Six mistakes account for most failed Shopify schema installs in 2026: curly quotes in the JSON (pasted from a word processor, document or chat app), 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, ratings that aren't shown on the page or were copied from another site), and hard-coded strings where Liquid variables belong (the block declares 'Coastal Vase No. 3' on every product because the developer forgot product.title).