Skip to content
Published

The 2026 Shopify JSON-LD library

Shopify product schema and structured data

Shopify ships Product schema baked into every theme1name, image, description, an Offer with price and availability. That's the floor, not the ceiling. The 2026 Shopify catalog AI shopping platforms actually surface needs Brand, GTIN, AggregateRating, a full Organization, WebSite, BreadcrumbList, and return and shipping policies, which Google recommends declaring once on Organization15. Current themes cover part of that (Dawn prints gtin when a barcode exists, plus a short Organization); the rest is the merchant's. This pillar is the library.

Two reasons schema gets its own section on a Shopify site in 2026. First, Shopify Catalog is the data source ChatGPT, Perplexity, Gemini, Copilot, and Shop pull from for product data3, and structured data is the language they read fastest. Second, Shopify's own AI-optimization doc names "structured data and product attributes" as one of seven things merchants should make sure their products carry4. Stores that ship clean schema beyond theme defaults get picked up; stores relying on auto-emission alone don't.

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.

The mental model: schema is the metadata layer of your storefront, written in a vocabulary every Google index, Bing index, ChatGPT-User retrieval, Perplexity-User crawl, and Gemini search uses to identify entities. The HTML Shopify renders describes what a human sees. The JSON-LD your theme emits describes what a machine reads. The same product page can be a clean PDP to a customer and a clearly-typed Product entity with an attached Offer, Brand, AggregateRating, and shippingDetails to Google's understanding layer at the same time — and the two layers do not interfere.

JSON-LD The minimal shape of a JSON-LD block
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Your product title"
}
</script>

The vocabulary lives at schema.org7, version 30.0 (released 2026-03-19). On a typical Shopify store you'll use about fourteen of its types — Product, Offer, Brand, AggregateRating, Review, BreadcrumbList, Organization, WebSite, Article, FAQPage, MerchantReturnPolicy, OfferShippingDetails, plus the GTIN identifier properties (gtin8 / gtin12 / gtin13 / gtin14) inside Product. The library on this pillar covers all of them; GTIN for Shopify products defines the identifier standard itself.

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.

The reason is structural. Google has been parsing pages for two decades and inferring product entities from clean HTML reasonably well; structured data was a nice-to-have unless you were chasing a specific rich result. AI shopping agents, by contrast, are newer and rely on retrieval-time parsing rather than years of accumulated entity graphs. When ChatGPT-User or Perplexity-User fetches a Shopify PDP to consider for citation, it has seconds to decide what the product is, who makes it, what it costs, whether it ships to the customer, and whether the merchant accepts returns — and JSON-LD answers all five questions on a single read.

Shopify schema by the numbers

14

schema types cover the workload of a typical Shopify store — the library on this pillar.

Schema.org · 2026-03-19
May 7

the 2026 date Google stopped showing FAQ rich results in Search, for every site.

Google Search Central · 2026-09-16
Yes

Shopify themes auto-emit Product JSON-LD on PDPs (per Shopify's own SEO overview).

Shopify Help · 2026-05-22

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.

The implication: add missing entities (BreadcrumbList, a full Organization with return and shipping policies) as new blocks, but don't add a second Product next to the theme's. Google's guidelines use @id to link related items, not to merge two descriptions of the same product, so when you need Product fields the theme leaves out, replace the theme's structured_data line with one complete block of your own. The Product leaf has the pattern.

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.

This changes install priority on Shopify. Pre-2024 the high-value schema types were Product + Review + FAQ + HowTo. Today the high-value types are Product + Offer + Brand + AggregateRating + GTIN for Shopping/Merchant Center surfaces, plus Organization + WebSite + BreadcrumbList for AI-engine entity attribution. FAQPage still belongs on the right Shopify pages — the FAQ hub itself, a knowledge-base index — but the visible accordion result is gone from Google Search.

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 split between theme.liquid and section files matters because of cardinality. An Organization entity describes the brand — it's defined once, in theme.liquid, and printed on the home page, which is where Google recommends it. A Product entity describes one specific product — it has to be defined inside main-product.liquid (or product-template.liquid on older themes) so the Liquid variables resolve to the current product. Putting Product schema in theme.liquid means the variables are unbound on non-product pages and the schema fails to render.

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 validators answer different questions. Rich Results Test answers "will Google show this as an enhancement?" (a Google-product question). Schema.org validator answers "is the markup structurally valid?" (a vocabulary question). A Shopify page can pass the Schema.org validator and fail to trigger a Google rich result — that's the FAQ scenario today, and that's fine if your goal is AI engine extraction rather than SERP visibility. Conversely, a page that fails the Schema.org validator probably won't be reliably extracted by anyone, AI engine or Google.

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.

Each leaf below covers one type. The structure is the same on every page: what the schema describes, when to use it, the current 2026 rich-results status from Google Search Central, the required and recommended fields per Schema.org, what Shopify themes auto-emit (so you don't duplicate), a full copy-paste JSON-LD example for a realistic Shopify product/page, where to paste it inside theme.liquid or the section file, validation steps, and the gotchas that catch first-time installs.

Start with the leaf that matches the page you're working on. If you're shipping a fresh Catalog Readiness install on a new Shopify store, the order is: Organization first (with the store's return and shipping policies), WebSite second, Product third, then everything inside Product (Offer, Brand, AggregateRating, GTIN, and any product-specific policy exceptions) in a single per-template block, then BreadcrumbList, then Article on the blog if there is one.

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.

Practical rule of thumb. If you sell physical goods on Shopify, add a MerchantReturnPolicy that matches your Shopify refund policy and a shipping policy that matches your real rates and delivery windows, both inside the Organization block. Add an Offer-level MerchantReturnPolicy or OfferShippingDetails in main-product.liquid only for products with different terms, such as final-sale items. The full implementation walkthroughs live on the hasMerchantReturnPolicy leaf and the shippingDetails leaf.

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).

The fixes are quick once you know what to look for. Copy code from a plain-text source (a code editor or the raw file, never a word processor or chat window), use Liquid variables for every product-specific field, view source on the live page after deploying via the code editor, Shopify CLI or the GitHub integration, and confirm the JSON renders as JSON rather than as escaped HTML. Run the Rich Results Test on one URL per template type. The full diagnostic list lives on the JSON-LD via theme.liquid leaf.

  1. HOW-TO Shopify Product schema fields and rich results Product schema What Shopify themes auto-emit on PDPs, what's missing for AI shopping, and the full Product JSON-LD a 2026 Shopify catalog needs. 10-min read
  2. HOW-TO Shopify Offer schema price availability Offer schema Offer is the transaction sub-object inside Product. price, priceCurrency, priceValidUntil, availability, seller — what Shopify ships and what to layer on. 8-min read
  3. HOW-TO Shopify Brand schema Brand schema The Brand object inside Product. Why a vendor-only Shopify field is not enough and what AI engines actually read. 7-min read
  4. HOW-TO Shopify AggregateRating schema reviews AggregateRating schema Stars in the SERP and AI citation lift. Which Shopify review apps emit it cleanly and which leave merchants installing it by hand. 8-min read
  5. HOW-TO Shopify Review schema self-serving rule Review schema Individual Review objects on PDPs, what Google requires in each, and what its self-serving rule actually covers. 8-min read
  6. HOW-TO Shopify Breadcrumb schema theme BreadcrumbList schema What Shopify themes auto-emit on collection paths, what they miss on filtered collections, and the per-template JSON-LD pattern. 7-min read
  7. HOW-TO Shopify Organization schema sameAs Organization schema Site-wide Organization JSON-LD in theme.liquid. sameAs, contactPoint, logo — the entity AI engines use to confirm the brand. 8-min read
  8. HOW-TO Shopify WebSite schema sitelinks searchbox WebSite schema WebSite for Google site names, on the home page. Why SearchAction is harmless but no longer earns a search box. 7-min read
  9. HOW-TO Shopify Article schema blog post Article schema Article JSON-LD for the Shopify blog. headline, author, datePublished, dateModified, image — what the theme ships and what's missing. 8-min read
  10. HOW-TO Shopify FAQPage schema 2026 retirement FAQPage schema Google retired FAQ rich results 2026-05-07 for general Search. Why FAQPage JSON-LD still belongs on the right Shopify pages. 9-min read
  11. HOW-TO Shopify GTIN ISBN UPC barcode field GTIN, UPC, EAN, ISBN Shopify's Barcode field maps to GTIN. What it accepts, when AI engines and Merchant Center demand it, and where to put it. 8-min read
  12. HOW-TO Shopify hasMerchantReturnPolicy AI Overviews hasMerchantReturnPolicy The return policy: once on Organization, as Google recommends, and on the Offer only for products that differ. 8-min read
  13. HOW-TO Shopify shippingDetails schema Merchant Center shippingDetails OfferShippingDetails with shippingRate, shippingDestination, deliveryTime, and the store-wide ShippingService Google now reads from Organization. 8-min read
  14. HOW-TO Shopify custom JSON-LD theme liquid Custom JSON-LD via theme.liquid The two-line script tag pattern, where to inject it inside the <head>, and the Liquid scope rules for product / collection / article. 10-min read
  15. HOW-TO Shopify Rich Results Test validation Rich Results Test on Shopify Running Google's Rich Results Test against a Shopify storefront — what to expect, what to ignore, what blocks a clean pass. 8-min read
  16. EXPLAINER Shopify schema app vs native JSON-LD Schema apps vs theme-native JSON-LD for SEO, Smart SEO, Avada — the schema app market vs hand-rolled theme.liquid. When each is worth the trade-off. 9-min read