Skip to content
Free tool · No signup required

Shopify Schema Checker

Audit Product, Organization and BreadcrumbList JSON-LD on any page - free.

Free, no signup. We render the page in headless Chrome to catch Liquid-injected schema, then fall back to plain HTML if the renderer is busy.

What this tool checks

  • Every <script type="application/ld+json"> block on the page, both server-rendered and client-injected via Liquid or theme JavaScript.
  • Per-block JSON validity. Broken JSON is silently ignored by Google so we surface every parse error explicitly.
  • Whether Product schema is present and includes the four fields Google requires for rich results: name, image, offers.price and offers.availability.
  • Whether Organization schema is present with name, url, logo and sameAs (the last two are optional but strengthen knowledge-graph signals).
  • Whether BreadcrumbList schema is present with full URLs in every item - missing URLs cause Google to silently drop the breadcrumb display.
  • Optional fields like aggregateRating that unlock the star-rating display in SERPs when present.

Why it matters for Shopify stores

JSON-LD structured data is the difference between a normal blue link in Google and a rich result with stars, prices, in-stock badges and breadcrumb paths. Rich results have measurably higher click-through rates - sometimes 20-30% lift on commercial queries. For a Shopify store competing against Amazon listings on a product query, those rich-result elements are often the only visual differentiator that makes a click happen.

Shopify themes inject schema in two places. Server-side via Liquid in theme.liquid and product.liquid, and client-side via JavaScript that runs after page load. A plain HTTP fetch only sees the server-rendered schema. Google's crawler does run JavaScript, but Google's rich-result reports are sometimes flaky for client-injected schema - meaning a store can have valid Product schema that Google never picks up, with no obvious warning. This tool renders the page in real headless Chrome so you see the same JSON-LD Google would.

The most common reason a Shopify store loses rich results overnight is a theme update that changes how schema is generated. Custom theme work, app installations, or even minor Liquid edits in product.liquid can silently strip required fields from the Product schema block. The store still loads, the products still sell, but rich results disappear from search. This tool catches the regression in seconds.

Shopify has supported JSON-LD natively for years, but many third-party SEO apps still inject their own competing schema blocks. Multiple Product schemas on the same page is technically allowed but creates ambiguity for Google about which is canonical. We surface every block we find so you can decide whether to consolidate.

How to fix this in Shopify admin

  1. 1

    Validate the JSON-LD with Google's Rich Results Test

    Open https://search.google.com/test/rich-results, paste the URL, and check which rich-result types Google detects. Combined with this tool, you get both the Liquid-injected schema (this tool, via headless Chrome) and Google's authoritative validation (Google's test).

  2. 2

    Restore default Product schema in product.liquid

    Shopify Admin → Themes → Edit code → templates → product.liquid (or sections/main-product.liquid in 2.0 themes). Look for <script type="application/ld+json"> and confirm it includes name, image, offers.price (or priceRange) and offers.availability. If the block is missing fields, restore from a backup or duplicate from Dawn (Shopify's reference theme).

  3. 3

    Add BreadcrumbList schema via the breadcrumb section

    Most premium themes ship a breadcrumb section. If yours doesn't emit BreadcrumbList JSON-LD, add it: iterate over collections.handle and the current product to build the itemListElement array, output as JSON-LD inside the breadcrumb section.

  4. 4

    Audit third-party schema apps for conflicts

    If you have multiple Product schemas on a page, identify which app or theme each comes from (look at adjacent comments in the rendered HTML). Disable any duplicates - one Product schema per product page is the correct count.

Common Shopify mistakes

Missing offers.availability after a stock-status app change

Stock-management apps that override the default offers block sometimes drop availability when the product is out of stock - meaning Google can no longer display in-stock status, even when stock returns. The fix is to always emit availability, defaulting to OutOfStock when stock_quantity is 0.

Hardcoded prices instead of Liquid variables

Custom themes sometimes hardcode example prices into the Product schema during development. Once shipped, every product reports the same example price to Google, breaking shopping rich results entirely.

Currency mismatch between price and priceCurrency

A Shopify store displaying prices in USD via geolocation but emitting GBP in the Product schema confuses Google's shopping pipeline. Always ensure offers.priceCurrency matches the currency of offers.price.

Multiple Product schemas on the same page

Common when a "Customers also viewed" section emits Product schema for the related products too. Only the focal product should get a Product schema block - related-product slots should be plain links.

BreadcrumbList without item.url on every position

Google silently drops the entire BreadcrumbList rich result if any single item is missing its URL. Always emit a full URL for every breadcrumb item, including the homepage.

Organization schema on every page instead of once

Organization schema belongs in theme.liquid so it appears on every page. Some stores duplicate it inside product.liquid as well, creating noise. One Organization block per page is correct.

Frequently asked questions

Does Shopify add Product schema automatically?

+

Yes - default Shopify themes (Dawn, Sense, Studio etc.) inject Product, Organization and BreadcrumbList JSON-LD automatically. Older themes and heavily customised themes may not. This tool tells you exactly which blocks are present, missing or broken.

Why use headless Chrome instead of a plain HTTP fetch?

+

Many Shopify themes inject schema via Liquid that depends on JavaScript-driven product variants, or via apps that only run client-side. A plain HTTP fetch misses those. Real headless Chrome runs the JavaScript and gives you the schema as a search engine would see it.

What's the minimum Product schema for Google rich results?

+

Google requires name, image, and offers (containing price and availability). Without all four the page is ineligible for product rich results. Other fields (review, aggregateRating, sku, gtin) are optional but unlock additional rich-result variants.

Can I have more than one Product schema on a page?

+

Technically yes but it confuses Google. The correct pattern is one Product schema per product page (the focal product). Related products in carousels should be linked, not schema-marked.

My schema looks correct but Google's test says it's invalid. Why?

+

Most often a JSON parse error - an unescaped quote in the product description, a trailing comma, or a Liquid variable that resolved to nothing and broke the JSON. This tool flags parse errors per block. Once parse-clean, recheck Google's Rich Results Test.

Does Google require offers.priceValidUntil?

+

It's recommended but not required. If you set it, Google reports a warning when the date passes - leaving stale priceValidUntil values in your schema is a common cause of quality warnings in GSC. Either keep it fresh or omit it.

How do I add BreadcrumbList if my theme doesn't?

+

In your breadcrumb Liquid section, output a JSON-LD block: build an itemListElement array from collection → product, with each item being { @type: ListItem, position: N, name: "...", item: "https://..." }. Wrap in <script type="application/ld+json">.

What if the rendered scan is unavailable?

+

The render service caps at 4 concurrent requests and returns a busy state when full. We fall back to a plain HTML fetch automatically, but warn you so you know client-injected schema may be missing from the result. Re-run in a few minutes for the full rendered scan.

Want the full Shopify SEO audit?

This tool checks one thing. SEOScan checks 60+ Shopify-specific issues with AI-powered fix guides. Free scan, no signup.

Run Full Shopify SEO Scan

More free tools

Related Shopify SEO issues