What a Schema Audit Actually Finds
What a product schema audit finds on real Shopify PDPs: missing Offers, JS-only JSON-LD, bad GTINs. Grade your store, then run a free AI Citation Check.
A product schema audit answers one operator question: can an AI shopping agent extract buyable, trustworthy facts from your PDPs without guessing? It is not a vanity Rich Results pass, and it is not the same work as rewriting PDP copy. On a typical mid-market Shopify store the audit reads up to ten product pages the way a crawler does — raw HTML, JSON-LD first — and scores fourteen fields across three tiers that sum to 100. Most brands discover they “have Product schema” and still fail the Offer layer: price with a currency symbol baked in, availability as the word “in stock,” or ratings that only exist after a reviews widget hydrates.
This is a GigaCommerce method how-to for operators in the $100K–$10M band who already heard “add structured data” and need to see what the audit actually finds, in what order to fix it, and how that work feeds Commerce GEO — getting recommended by assistants — rather than just satisfying a validator. If you want the automated version of the same lens, run the free Product Schema Grader on your domain before you argue about content strategy.
What a schema audit is (and is not)
A schema audit is a structured pass over the Product markup your storefront emits today. For each sampled PDP it asks: is the field present, is the value valid, and can an agent act on it? Present-but-invalid counts as a miss — a price of "$49.00" is not a numeric price; "In stock" is not https://schema.org/InStock; a GTIN that fails a check digit is not a match key.
- Product schema audit
- A scored review of Product (and related Offer / rating / policy) structured data on live product pages, measured as a crawler would read them, against a fixed field checklist weighted for AI shopping usefulness.
It is not a full Commerce GEO program. Citation, corroboration, and quotable content sit downstream. It is also not catalog enrichment of metafields for a Brand Agent — that is sibling work in the catalog-for-AI cluster. The audit’s job is narrower and more technical: make the machine-readable contract on the page honest so assistants and classic rich results have something reliable to parse. The implementation map for types lives in structured data for AI shopping; this post shows what breaks when you measure real stores against that map.
Validator green ≠ agent ready
Google’s Rich Results Test can pass a thin Product block that still cannot support a budget filter, a stock check, or a cross-retailer match. Treat validators as syntax help. Treat the audit as a usefulness score.
The three tiers the audit scores
GigaCommerce’s public grader uses fourteen checks that sum to 100 points, grouped so operators stop debating “schema quality” as a vibe. The tiers mirror how an agent actually uses a product: can it list and sell it, can it compare and trust it, and does anything help it prefer it.
Listable — can an agent show and sell it?
These fields decide whether the product is even a candidate in a shopping answer:
- Product
name(8) imagewith at least one absolute URL (8)- Offer
priceas a number (12) priceCurrencyas ISO 4217 (8)availabilityas a schema.org URL (10)
Price alone is the heaviest single listable signal for a reason: an agent that cannot quote a number cannot filter “under $75” or complete a confident recommendation. Currency without ambiguity matters the moment the shopper is not in your home market. Availability written as free text fails because agents need a controlled value, not marketing copy.
Comparable — can an agent match and trust it?
- GTIN or brand + MPN (12)
brand(8)descriptionof at least ~50 characters of plain text (6)- Shipping details on the Offer or Organization (8)
- Merchant return policy in structured form (8)
Identifiers are how an assistant ties your PDP to the same item in reviews and at other retailers. Brand answers “is this the Acme one?” Shipping and returns answer the trust questions shoppers ask out loud — “arrives by Friday?”, “can I send it back?” — that FAQ prose alone does not reliably feed into Offer-level reasoning.
Standout — any reason to pick it?
aggregateRatingwith a real count, or review markup (4)sku(3)itemCondition(2)- Attributes such as color, size, material, or
additionalProperty(3)
Standout fields are tiebreakers. They do not rescue a missing price. They help when two listable, comparable products are otherwise similar — which is exactly when ratings and attributes matter.
Fourteen Product schema fields graded across listable, comparable, and standout tiers; weights sum to 100 so every score is reproducible by hand
GigaCommerce Product Schema Grader checklist (public weights on /tools/product-schema-grader/)
Letter grades on the tool follow fixed bands: 90+ A, 75+ B, 60+ C, 40+ D, below that F. The bands are judgement, published on purpose so a merchant can challenge a score with the same math.
What audits find on real mid-market Shopify PDPs
Patterns repeat. Theme demos look fine; production catalogs accumulate holes.
1. Product without a usable Offer
The store emits Product with name and image. Price lives in the theme’s visible HTML or in a cart drawer script. JSON-LD either omits offers or ships a decorative Offer missing numeric price, priceCurrency, or proper availability. Assistants that prioritize structured offers skip or hedge. Humans never notice because the page “looks priced.”
2. JavaScript-only structured data
Reviews apps inject aggregateRating after hydration. Some headless setups print JSON-LD only from the client bundle. Grade the page with JS disabled (or trust a grader that fetches raw HTML): if the block vanishes, many agents never see it. That gap is itself the finding — not “we need better copy,” but “our truth is not in the first HTML response.”
3. Invalid values that look complete
Currency symbols inside price. Availability as "In Stock". GTINs with wrong length or failed check digits. Condition as "new" instead of a schema.org URL. Present fields inflate confidence in a spreadsheet export and still fail a usefulness audit.
4. Theme defaults that stop at the hero SKU
Flagship products were hand-tuned for a launch. The long tail inherits a thin Online Store 2.0 default. Sampling ten pages across the catalog — not only the homepage hero — surfaces theme-level gaps that a single Rich Results screenshot never will.
5. Policy pages that never became Offer fields
Shipping and returns exist as beautiful policy templates. The Offer has no shippingDetails or hasMerchantReturnPolicy. Agents answering delivery and return questions lean on competitors who structured those claims, or on third-party corroboration. This is the same class of problem llms.txt for ecommerce tries to help at the site-map layer — but Offer-level policy beats a markdown pointer when the question is about this SKU’s buyability.
6. Ratings that are marketing, not evidence
Empty review apps, imported placeholder stars, or aggregate ratings without reviewCount fail the standout check for good reason. Invented social proof is worse than absence: it trains assistants to trust a lie.
None of these findings require inventing client case studies. They are the recurring residue of mid-market Shopify installs that optimized for human skimming first and machine reading second.
How we run the audit (the method)
This is the work sequence behind the public tool and behind a Commerce GEO structured-data workstream. You can run a light version yourself in an afternoon.
- 1
Sample ten PDPs, not one
Pull from the public product list or sitemap so you are not only grading the SKU marketing already polished. Always include one known problem child (bundle, variant-heavy, or app-injected reviews).
- 2
Fetch raw HTML
Confirm Product JSON-LD exists without executing storefront JavaScript. Note any field that only appears after a widget loads — that is a separate ticket from “add schema.”
- 3
Score the fourteen fields
Pass only usable values. Weight listable failures highest. Average across pages so one perfect hero cannot mask a broken catalog pattern.
- 4
Classify each miss
Theme default, app conflict, feed/sync gap, or content never structured. Classification decides the owner — developer, apps admin, or merchandising — before anyone rewrites adjectives.
- 5
Ship a fix list in tier order
Listable first, then comparable, then standout. Re-grade the same URLs. Do not expand scope into full catalog enrichment until the HTML floor is honest.
On Shopify specifically, expect to touch theme JSON-LD snippets, the reviews app’s structured-data settings, and occasionally a custom pixel or app that duplicates Product blocks. Duplicate JSON-LD with conflicting prices is a real failure mode: agents do not appreciate two truths. Prefer one authoritative Product graph per PDP.
Amazon operators reading this for Rufus should translate, not copy-paste: Seller Central backend attributes and A+ text modules are a different publishing contract. The principle — structured buyable facts beat prose — still holds; the schema.org JSON-LD audit above is the Shopify / DTC storefront lens.
How to read the score without lying to yourself
A perfect 100 does not mean ChatGPT or Perplexity will recommend you. Structured data makes a product legible; recommendation also depends on corroboration, category fit, and what other sites say. We say that on the tool page on purpose. Treat the grade as the baseline you can fix in days, then measure whether assistants actually name you.
That second measurement is a citation check: a fixed panel of buying questions across major assistants, scored named / cited / absent. Schema work without citation follow-up is how teams ship beautiful JSON-LD and still wonder why competitors show up in how Perplexity picks products. Schema work with citation follow-up is how Commerce GEO stays honest.
Use the score as a sequencing tool
If listable is weak, pause GEO content sprints. If listable is strong and citations are still absent, move to quotable proof and corroboration — not another afternoon of micro-tuning SKU strings.
Internal linking note for operators already deep in the stack: after the HTML floor is fixed, catalog enrichment and Brand Agent readiness become higher leverage because agents finally have Offers and attributes to reason over. Do not invert that order because a pitch deck put “AI agent” on slide one.
Fix order that actually moves the needle
- 1Make Offer real — numeric price, ISO currency, schema.org availability on every sampled PDP.
- 2Server-render the block — move ratings and product facts into the initial HTML or a reliable server include.
- 3Add match keys — GTIN where you have it; brand + MPN otherwise.
- 4Structure shipping and returns — Offer or Organization policy objects, not only
/policiesHTML. - 5Attributes and honest ratings — only real reviews; attributes agents filter on for your category.
- 6Re-grade and citation-spot-check — same ten URLs, then a short buying-question panel.
Teams that jump to additionalProperty poetry while price is still "$42" are rearranging deck chairs. Teams that stop after a green Rich Results badge without a citation pass are celebrating infrastructure, not discovery.
If you need a commercial path after the DIY pass, Commerce GEO packages structured data, citation measurement, and the content that earns mentions as one workstream — but the audit findings above are the unlock either way.
Run a free AI Citation Check
After you fix schema gaps, see whether assistants actually name or cite you on real buying questions — not just whether JSON-LD validates.
Also worth five minutes before any agency pitch: grade the storefront with the Product Schema Grader so the citation conversation starts from a known HTML floor.
Frequently asked questions
Is a schema audit the same as Google’s Rich Results Test?
- No. Rich Results Test helps you validate syntax and eligibility for Google features. A product schema audit scores whether AI shopping agents can extract usable buyable facts — including invalid-but-present values and JS-only blocks Rich Results might never stress the same way.
How many pages do you need to audit?
- Ten is enough to see theme-level patterns without hammering the store. Include heroes and long-tail SKUs. One perfect PDP proves nothing about the catalog.
Does Shopify add Product schema automatically?
- Most themes emit a basic Product block. Offer completeness, ratings, shipping, returns, and attributes vary widely by theme, app, and customization. Assume nothing — grade rendered HTML.
Will fixing schema make ChatGPT recommend us?
- Not by itself. Schema makes you legible. Recommendations also need category fit, corroboration, and clear on-page facts. Fix schema first so you are not asking assistants to invent price and stock, then measure citations.
Should we audit Amazon listings the same way?
- Not with storefront JSON-LD. Amazon’s machine-readable surface is backend attributes, subject matter, and extractable A+ text. Use the same usefulness mindset; use Amazon’s publishing tools, not a Shopify theme audit, for that channel.
Sujan Bhuiyan
Founder, GigaCommerce
Founder of GigaCommerce, part of Gigaverse. Works with mid-market Shopify and Amazon merchants on agentic commerce installs, AI-ready catalogs, and Commerce GEO.
Keep reading.
How Perplexity Picks Products (Observed Behavior)
Perplexity doesn't tell you how it picks products. This is what field observation says, not a leaked algorithm.
llms.txt for Ecommerce: The Complete Guide
A one-page markdown map that tells AI assistants what your store sells and which pages matter — here is exactly how to write one.
Structured Data for AI Shopping Agents
The markup that lets AI agents read, trust, and recommend your products. A practical guide to Product schema, Offers, reviews, and llms.txt for commerce.
The weekly brief
Get the weekly DTC + Agentic Commerce brief.
One email a week on what shipped in agentic commerce and the move to make. No fluff.