seo
Shopify schema markup: what merchants actually need
If you’ve installed an “SEO app” on Shopify, it almost certainly added schema markup to your store. Whether that schema is correct, complete, and non-conflicting is a different question — and one I find broken on most stores I audit.
Schema doesn’t need to be exhaustive to work. Four types matter for the average Shopify store. Here’s what each one does, how to check yours, and when to fix.
Sub-post of the Shopify SEO Guide.
What schema actually is
Schema (also called structured data, or JSON-LD) is metadata you embed on each page that tells search engines and AI crawlers what the page is. Without it, search engines have to guess — is this a product? a blog post? an event? — by inferring from layout. With it, you get explicit classification.
Two practical effects:
- Rich results in Google search — star ratings, price, in-stock badge, breadcrumbs, FAQ accordions, all of which lift CTR.
- AI search citations — Google AI Overviews, Perplexity, and ChatGPT use schema to identify citable passages and metadata.
You don’t see schema on the page; it’s invisible JSON in the HTML. But Google’s Rich Results Test shows what’s there.
The four that matter for Shopify
In order of importance:
1. Product schema (the big one)
On every product page. Tells Google this is a product, with these attributes:
- Name, description, image
- Price, currency, availability
- SKU, brand, MPN (manufacturer part number) if applicable
- Aggregate rating + review count, if you have reviews
When right: you get the rich product card in Google search — stars, price, “In stock” badge, sometimes a free-shipping line. CTR lift on tightly-matched queries can be 15–30%.
When wrong (common Shopify failures):
- Reviews app and theme both adding
aggregateRating→ conflicting, Google ignores both availabilityfixed at “InStock” even when actually out of stock → Google flags as misleading, can demotepricenot in the right currency code, or doesn’t match the visible page price- Missing
brandandmpn→ Google Shopping listings get filtered out
2. Organization (or LocalBusiness) schema
Site-wide, on every page or at minimum on the homepage. Tells Google who you are:
- Brand name
- Logo
- Social links (Twitter, Instagram, LinkedIn — used to verify identity)
- Contact info if you have it
- Founder / employees if relevant
This is what feeds Google’s Knowledge Panel (“here’s who this brand is, here’s their socials”). It also flows into AI search — Perplexity and ChatGPT use Organization schema to introduce a brand.
When merchants miss this: Google fills in whatever it can scrape from your About page, often imperfectly. Worth getting right.
3. BreadcrumbList schema
On collection pages and product pages. Tells Google the hierarchy: Home → Collections → “Hoodies” → “Charcoal Cotton Hoodie”.
Effect: replaces the URL in Google search results with the breadcrumb path. Users prefer this visually; CTR usually nudges up.
Almost every modern Shopify theme handles BreadcrumbList correctly. If yours doesn’t, that’s a sign your theme is older or heavily customized.
4. FAQPage schema (where natural)
On any page that has a clearly-marked FAQ section: contact pages, service pages, key product pages with frequently asked questions, blog posts that answer common questions.
Effect: Google can show your FAQ as an expandable accordion in search results, taking up more SERP real estate than a single blue link.
The trick: the FAQ must be visible on the page (not collapsed behind tabs Google can’t see), and the question/answer text must match what’s in the schema verbatim.
What you usually don’t need
Most Shopify stores don’t need:
- Article schema unless you blog regularly. (BlogPosting is the right type if you do.)
- Review schema as a standalone type — it’s already inside Product as
aggregateRatingandreview. - WebSite or SearchAction schema — Google rarely uses these for stores.
- Event, Recipe, Job, Course, Movie, Book — only if those are literally what you sell.
Adding schema you don’t need isn’t usually harmful — it just clutters and gives more surface area for things to break. Stick to the four above unless you have a specific reason.
How to check what you have
Three free tools:
1. Google’s Rich Results Test. Paste in any URL. It shows what schema Google sees, what types it detected, and any errors. Run it on your homepage, a collection page, and a product page.
2. Schema Markup Validator. Stricter than Google’s tool; catches schema that’s syntactically valid but semantically wrong.
3. View source. In any browser, View Source on a page and search for application/ld+json.
You’ll see the raw JSON. If you can read JSON, this is the most direct way to know what’s there.
Common Shopify schema problems
Patterns I see on every other audit:
Duplicate schema from multiple sources
Theme adds Product schema. Reviews app adds another aggregateRating. SEO app adds a third
Product block. Result: three competing JSON-LD scripts, none authoritative. Google’s behavior
when there are conflicts is documented as “best guess” — translation: it picks one and ignores
the rest, and you don’t get to choose.
Fix: pick one source for each schema type. Usually the theme. Disable schema injection in SEO apps and reviews apps that conflict.
Misleading availability
Schema says availability: "InStock" regardless of actual stock. Google detects this for
Shopping listings and can demote.
Fix: schema should pull from product.available in Liquid, not be hardcoded.
Aggregate rating from one review
If you have one 5-star review, schema saying you have an aggregate rating from one review is technically correct but feels manipulative. Google’s helpful-content systems have started demoting these.
Fix: only include aggregate rating once you have at least 3–5 real reviews. Most reviews apps have a “minimum count” setting.
Schema for content that isn’t visible
Schema describes content the user can see. If your FAQ schema lists 8 Q&As but only 3 are visible on the page (the rest are in a tab or never rendered), that’s a violation. Google’s structured data guidelines are explicit on this.
Fix: schema must match visible content. If FAQs are behind a tab, they need to render in the HTML even if the visual UI hides them.
Missing brand on Product
Google Shopping (organic) requires brand or GTIN to surface a product in shopping results. Many themes leave brand blank for products without a brand-name vendor.
Fix: set vendor on every product, even if it’s your store name. The brand field then
populates from product.vendor automatically in most themes.
When to call a developer
If you’ve checked Rich Results Test and you’re seeing:
- Errors (not warnings — actual errors)
- Schema that doesn’t match what’s on the page
- Duplicate
ProductoraggregateRatingblocks across sources - Critical fields missing (price, availability, brand) that aren’t your fault to fix in admin
…that’s where someone who can read your theme code and your apps’ schema injection helps. The work is usually a half-day to two days, fixed scope. → Shopify Technical SEO service.
A 30-minute self-audit
- Open Google’s Rich Results Test.
- Paste your homepage URL → run → note what schemas Google detects, any errors.
- Paste a collection page URL → repeat.
- Paste a product page URL → repeat.
- Match findings to the four types above. Anything missing? Anything erroring?
- If errors: screenshot, send to your developer (or to me), we know exactly what to fix.
Most stores have 1–3 schema issues — almost all are 30-minute fixes for someone who knows where to look.
Want a schema audit on your store? Book a free intro call. Pull up your store URL beforehand; I’ll run the Rich Results Test live and tell you what’s right, what’s broken, and what’s missing. → Or read the Shopify SEO Guide for the bigger picture.
Found this useful? Get in touch or subscribe to the RSS feed .