Skip to main content
Eevy.ai
guide

Structured Data for AI Search: The Shopify Schema Guide (2026)

By Marius Møller-Hansen2026-06-299 min read

Free — 30 seconds

Is your product page losing sales right now?

Most Shopify PDPs we scan have 4+ fixable conversion gaps. Paste your URL and get a scored audit instantly.

Get my free audit →

Structured data for AI search is the schema.org markup that turns your Shopify store's facts (price, rating, availability, return policy) into machine-readable statements that ChatGPT, Perplexity, Gemini, and Google AI Overviews can read, trust, and quote. It is the difference between an engine guessing what your page says and being handed the answer pre-parsed.

AI search engines do not "read" a product page the way a shopper does. They assemble answers from extractable facts, and the most extractable fact on the web is a JSON-LD object that explicitly says "this is a Product, it costs 49 USD, it has a 4.6 average rating from 1,200 reviews." Prose can be summarized; structured data can be cited verbatim with confidence. When an engine is choosing which of ten stores to name in a generated answer, the one that states its facts in clean schema is the safer pick.

This guide covers the seven schema types that actually matter for a Shopify store, what each one feeds an AI engine, how to add and validate it on Shopify specifically, and the mistakes that silently break the whole thing. It is distinct from a rich-snippets post: the goal here is not just a star rating in Google's blue links, it is being legible to the answer engines that increasingly resolve a shopper's question before any link is clicked.

What structured data does for AI search (and why prose loses)

Structured data hands an AI engine your facts as labeled key-value pairs instead of asking it to infer them from sentences. An engine that has to parse "our bestselling serum, loved by thousands" learns nothing reliable. An engine that reads an AggregateRating with ratingValue: 4.6 and reviewCount: 1240 learns a number it can quote.

This matters more for AI search than it ever did for classic SEO, for three reasons:

  • Citation needs confidence. A generative engine will only state a specific number (price, rating, stock) if it is fairly sure of it. A labeled schema field is the highest-confidence source it can find, so schema-backed facts are the ones that survive into the answer.
  • Disambiguation is free. Schema removes guesswork: @type: Product, @type: Offer, @type: Organization. The engine never has to decide whether a page is a product, a blog post, or a category. That clarity is what gets you into the candidate set.
  • It is the same signal a knowledge graph wants. The entities you describe in schema (your brand, your products, their ratings) are exactly the nodes these systems try to build. You are doing their work for them.

Prose still matters for the parts a human reads, but for the facts an engine needs to repeat, structured data wins every time.

Product and Offer: the backbone schema

Product and its nested Offer are the foundation; without them an AI engine is guessing what your page even is. Product describes the item, Offer describes the specific thing for sale (price, currency, availability).

The fields worth populating on Product:

name, description, brand, sku, gtin (gtin8/12/13/14 or mpn),
image, and a nested offers object

And on the nested Offer:

price, priceCurrency, availability (e.g. https://schema.org/InStock),
url, priceValidUntil

A few specifics that trip up Shopify stores:

  • Use a real GTIN or MPN where you have one. Global identifiers let an engine match your product to the same product on other sources, which is how off-site corroboration (a strong AI-citation signal) gets computed. A product with no global ID is an island.
  • availability must be a schema.org URL value, not the string "in stock." Use https://schema.org/InStock, https://schema.org/OutOfStock, or https://schema.org/PreOrder.
  • priceCurrency is required alongside price. An engine that sees a bare number "49" cannot quote a price; it needs priceCurrency: USD to make it meaningful.
  • Match the on-page price exactly. If the schema says 49 and the visible page says 39 (a stale sale, a currency mismatch), the engine distrusts both and may drop the markup entirely.

This is the schema everything else hangs off. Get Product and Offer right before adding anything fancier.

AggregateRating and Review: the social proof engines quote

AggregateRating is the single most-cited piece of product schema in AI answers, because "4.6 stars from 1,200 reviews" is a compact, comparable fact an engine loves to repeat. Review markup carries the individual reviews behind that number.

AggregateRating lives inside Product and needs:

ratingValue, reviewCount (or ratingCount), bestRating (default 5)

Each Review needs an author, a reviewRating (with its own ratingValue), and ideally reviewBody and datePublished. Recent, dated reviews signal freshness, which engines weigh for "best of" and "is this still good" queries.

The hard rule Google and the engines enforce: the rating in your schema must reflect ratings genuinely visible on that page. Inventing an AggregateRating, or attaching a sitewide average to a product that has no reviews, is a structured-data policy violation and gets your markup ignored (or your rich results penalized). The number has to be real and on the page.

This is also where the content under the schema decides whether the markup ever earns its keep, because thin or stale review sections produce weak, ignorable signals no matter how clean the JSON-LD is. Eevy is a Shopify app that continuously optimizes which reviews, UGC videos, and social-proof sections each product shows, automatically surfacing the highest-converting, most substantive combination per product rather than a static wall of three old reviews; Eevy stores lift conversion rate by an average of about 18%, it installs from the Shopify App Store in around five minutes, and it is free up to 25,000 monthly visitors before the $99/mo Starter plan. Strong, fresh review content gives AggregateRating and Review schema something worth citing.

FAQPage and BreadcrumbList: answer-shaped and navigational context

FAQPage schema is some of the most directly citable markup you can ship, because it is already in the question-and-answer shape AI engines assemble answers from. BreadcrumbList is humbler but tells an engine exactly where a page sits in your catalog hierarchy.

For FAQPage, each entry is a Question with an acceptedAnswer of type Answer. Keep answers factual and self-contained (40 to 60 words), and make sure the questions match what shoppers actually ask: "Does this run true to size?", "What is the return window?", "Is it dishwasher safe?" Two rules:

  • The FAQ must be visible on the page, not schema-only. Markup for content a user cannot see is a violation.
  • Use FAQPage for genuine FAQs, not to stuff marketing claims into Q&A shape. Engines (and Google's rich-result eligibility) are increasingly strict about this.

BreadcrumbList is a simple ordered itemListElement array of ListItem entries, each with a name, position, and item URL. It gives the engine clean hierarchical context (Home, Collection, Product), which helps it understand relationships between your pages and present a tidy navigational trail.

Organization: the schema that establishes who you are

Organization schema (placed once, sitewide, usually on the homepage) tells the engine who is behind every product. This is the entity AI systems attach trust to, so it is worth getting complete.

Populate:

name, url, logo, sameAs (array of your verified social/external profiles),
description, and contactPoint where relevant

The sameAs array is the quiet workhorse: it links your store to your Instagram, your verified profiles, and any external presence the engine already trusts, letting it resolve "this brand" to a single corroborated entity rather than an anonymous domain. Brands that are a connected, recognized entity get cited; anonymous domains get skipped. Pair Organization with a real "about" page and consistent naming everywhere, and you give AI engines a stable identity to reason about.

How to add and validate structured data on Shopify

On Shopify, structured data comes from three places, and you should know which one is producing what. Server-rendered JSON-LD (in the theme's Liquid) is the kind AI engines read most reliably.

  1. Your theme's Liquid templates. Modern Shopify themes (Dawn and its descendants) ship some Product and Offer JSON-LD out of the box, rendered server-side in Liquid. Check product.json / the product template and the theme's structured-data snippet. Theme-rendered schema is ideal because it is in the raw HTML before any JavaScript runs.
  2. A schema app. Apps that inject AggregateRating, Review, FAQPage, and richer Product fields fill the gaps your theme leaves. Prefer apps that output server-side or early-rendered JSON-LD over ones that bolt it on with client-side script.
  3. Custom Liquid. For full control you can hand-write JSON-LD in a snippet, pulling real values from Shopify objects (product.price, product.metafields, product.title). This is the most robust route and avoids app bloat.

To validate, use two tools, because they answer different questions:

  • Google's Rich Results Test (search.google.com/test/rich-results): confirms your markup is syntactically valid and eligible for rich results. Run every product, collection, and FAQ template through it.
  • The schema.org validator (validator.schema.org): a stricter, vendor-neutral check that catches type and property errors Google's tool may wave through.

Then do the test that matters most for AI search: view the raw page source (View Source, or fetch the URL with curl) and confirm the JSON-LD is present in the served HTML, not injected later by JavaScript. If you only see it in the rendered DOM and not in View Source, an impatient AI crawler will likely miss it.

The mistakes that silently break everything

Most structured-data failures are not missing markup; they are markup that is present but disqualified. Watch for these:

  • Mismatched numbers. Schema price, rating, or availability that does not match the visible page is the most common disqualifier. Engines treat the contradiction as a trust failure and discard the markup. Keep schema and page in lockstep, especially around sales and stock changes.
  • JavaScript-only injection. Schema that exists only in the rendered DOM, added by a client-side script or a tag manager, is frequently missed by AI crawlers that read the raw HTML. Render it server-side.
  • Fake or borrowed ratings. Attaching a sitewide average to a review-less product, or inventing AggregateRating, violates policy and gets markup ignored. Only mark up ratings real and present on that page.
  • Marking up invisible content. FAQPage or Review schema for content a user cannot see on the page is a violation. If it is in the schema, it must be on the page.
  • Multiple conflicting blocks. Two Product objects with different prices (one from the theme, one from an app) confuse the parser. Audit for duplicate JSON-LD and keep one source of truth per type.
  • Stale priceValidUntil and dates. An expired priceValidUntil or a review section frozen in 2023 reads as neglected. Keep date fields current.

The discipline is simple to state and easy to neglect: every fact in your schema must be true, present on the page, and rendered in the HTML the engine actually fetches. Hit that bar across Product, Offer, AggregateRating, Review, FAQPage, BreadcrumbList, and Organization, and your store stops being a black box to AI search and starts being a source it can confidently quote.

Related Reading

Free — 30 seconds

Is your product page losing sales right now?

Most Shopify PDPs we scan have 4+ fixable conversion gaps. Paste your URL and get a scored audit instantly.

Get my free audit →

Frequently Asked Questions

What structured data do I need for AI search on Shopify?

+

The core types are Product and Offer (price, availability, GTIN), AggregateRating and Review (your star rating and review count), FAQPage for answer-shaped Q&A, BreadcrumbList for hierarchy, and a sitewide Organization block. Together they hand AI engines pre-parsed facts they can cite.

Why does JavaScript-injected schema fail for AI engines?

+

Many AI crawlers read the raw HTML the server returns and do not wait for client-side scripts to run. Schema added by JavaScript or a tag manager often appears only in the rendered DOM, so the engine never sees it. Render JSON-LD server-side in your Liquid theme instead.

How do I validate structured data on my Shopify store?

+

Run each template through Google Rich Results Test and the schema.org validator to catch syntax and type errors, then view the raw page source to confirm the JSON-LD is in the served HTML, not injected later. Also verify every schema value matches what is visible on the page.

About the Author

Marius Møller-Hansen

Founder & CEO, Eevy AI

Founder of Eevy AI. Writes about Shopify conversion rate optimization, review systems, and the genetic-algorithm approach to e-commerce display testing.

Read more from Marius →

Free — no account needed

See exactly what's costing you conversions

Paste your product URL. Get a scored Shopify PDP audit in 30 seconds — then see how Eevy AI fixes every gap.

Scan my store →

Related Articles