Structured data on Shopify: what to add and how to check it
Rich results are a click-through advantage, not a ranking one. Most themes ship partial markup and nobody checks it.
7 min read · SEO ·
Structured data is machine-readable markup describing what a page contains. It doesn't directly improve rankings. It makes pages eligible for rich results — star ratings, price and availability in the search listing — which is a click-through advantage on a listing you already have.
Most Shopify themes ship some. Few ship it complete, and almost nobody checks.
The types that matter
Product — the important one. Name, image, description, brand, SKU, offers with price, currency and availability, and aggregate rating if you have reviews. This is what produces price and stock in a search result.
BreadcrumbList — the navigation path. Turns the ugly URL under your listing into a readable hierarchy. Cheap to add, and it needs breadcrumbs to actually exist.
Organization — your business: name, logo, URL, contact, social profiles. Usually once, on the homepage.
FAQPage — question and answer pairs. Can produce expandable questions in results. Only mark up FAQs genuinely visible on the page.
Article — for blog posts: headline, author, dates, image — blog SEO.
LocalBusiness — if you have a physical shop with an address and opening hours.
Format
JSON-LD in a <script type="application/ld+json"> block. It's what Google prefers, and it keeps the markup separate from your HTML rather than tangled through it as microdata.
In a theme, that means a snippet rendered per template, populated from the Liquid objects — product, collection, article. Nothing exotic.
The errors that recur
Run through these on any store you inherit:
- Price and availability out of date, because the markup is hardcoded rather than pulled from the product object. The most damaging error: a listing promising a price you don't charge.
- Missing
availability. Rich results need it. - Currency missing or wrong in the offer.
- Review markup for reviews that aren't on the page. A guidelines violation, not a shortcut.
- Multiple conflicting Product blocks — one from the theme, one from an app, one from a second app. Common, and it makes the markup ambiguous.
- Variants marked up as separate products without an offer range.
- FAQ markup for content that isn't visible.
That third-from-last one is worth checking specifically: install two SEO apps and you'll frequently get two sets of markup fighting each other.
Validating it
Three tools, in order:
- Google's Rich Results Test — paste a URL, see what's detected and what's eligible.
- The Schema Markup Validator — stricter, catches structural errors Google tolerates.
- Search Console's Enhancements reports — the only one showing errors across your whole site at scale, on the pages Google actually crawled.
Check a product, a collection, an article and the homepage. Four URLs covers almost everything.
What not to do
- Marking up things that aren't on the page. Ratings you don't have, FAQs nobody sees. It's a violation and it gets manual action.
- Marking up every page as Organization. Once is enough.
- Treating it as a ranking lever. It isn't. It's a presentation lever, and a good one.
- Adding an SEO app purely for this if your theme already does it. Two sources of markup is worse than one.
Where it lives in a build
Structured data belongs in the theme, rendered from real data, in a snippet per type. That way it stays accurate automatically as products change, and there's one place to fix it.
An app injecting markup on top of a theme that already emits it is the setup that produces conflicts — worth checking during a technical SEO audit.
Structured data is a twenty-minute check that most stores have never done, and the most common finding is a price in the markup that hasn't been true for a year.
Is this the problem you’re looking at?
Send me the link to your store and a line about what is going wrong. You get a straight answer within one business day — no pitch, no obligation.
[email protected]Or see what I do around Shopify: services, work beyond the theme, selected work.