Schema.org audit in 15 minutes — checklist for your e-commerce site
A 7-step structured-data audit you can run on any storefront — Shopify, WooCommerce, headless. Includes copy-pasteable JSON-LD snippets and a fix decision flowchart by platform.
Schema.org structured data is the single highest-leverage on-page change you can make for AI search visibility — and most e-commerce sites get it wrong in predictable, fixable ways. This is a 15-minute walkthrough you can run on any storefront (Shopify, WooCommerce, custom, anything) to find the issues that actually matter for Generative Engine Optimization.
You don't need a developer for the audit itself. You will need one to ship the fixes — but the fix is usually 20 minutes, not 20 hours.
Step 1 — Run Google's Rich Results Test (2 min)
Open search.google.com/test/rich-results and paste your homepage URL. Wait for the test to finish. Make a note of:
- Which schema types Google detects (you want at least
Organizationhere). - Any "Errors" section. Warnings are usually safe to ignore for now.
Repeat for your most important product page and your most important category page. You want Product / Offer on the product page and BreadcrumbList on the category page at minimum.
Step 2 — Check your Organization sameAs array (3 min)
On your homepage, View Source (Ctrl+U / Cmd+Opt+U) and search for application/ld+json. You should see at least one block. Inside that block, look for an "@type": "Organization" entity, and inside it, a sameAs array.
At minimum, sameAs should include:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Brand",
"url": "https://yourbrand.com",
"logo": "https://yourbrand.com/logo.png",
"sameAs": [
"https://www.linkedin.com/company/your-brand",
"https://twitter.com/yourbrand",
"https://www.crunchbase.com/organization/your-brand",
"https://en.wikipedia.org/wiki/Your_Brand"
]
}If sameAs is missing or empty, that's the single highest-impact fix from this audit. Add the social profiles, the Wikipedia entry (if it exists), and any industry registry profile your brand appears in.
Step 3 — Audit Product schema completeness (4 min)
On a product page, View Source again and search for Product. You should see an entity with at minimum:
name— the product name (no SKU prefix)description— at least 2 sentences, the actual marketing descriptionimage— full HTTPS URL of the primary product imagesku— your internal SKUbrand— pointing to your Brand or Organizationoffers— withprice,priceCurrency,availability,url
Missing any of these costs you visibility. Of the six, offers.availability is the most commonly broken — set it to "https://schema.org/InStock" (or OutOfStock / PreOrder as applicable) and don't use a free-text string like "In stock".
Step 4 — Look for FAQPage schema on category pages (2 min)
Most e-commerce sites have FAQ content on category pages but never wrap it in FAQPage JSON-LD. That's leaving free citations on the table — the FAQPage entity is one of the most-cited content types by LLMs when answering buyer-intent questions.
Minimum viable FAQPage block:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Does this ship to Europe?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes — we ship to all EU countries within 5–7 business days via DHL."
}
},
{
"@type": "Question",
"name": "What is your return window?",
"acceptedAnswer": {
"@type": "Answer",
"text": "30 days from delivery, no questions asked. We refund the original payment method."
}
}
]
}Pick the 5–10 most common questions your support team gets — write them in your customers' actual words, not in keyword-research-speak.
Step 5 — Confirm BreadcrumbList on category pages (1 min)
BreadcrumbList isn't glamorous but it's what tells Google + LLMs how your site's information architecture works. On a category page like /collections/running-shorts, you should see:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://yourbrand.com/" },
{ "@type": "ListItem", "position": 2, "name": "Apparel", "item": "https://yourbrand.com/apparel" },
{ "@type": "ListItem", "position": 3, "name": "Running Shorts", "item": "https://yourbrand.com/apparel/running-shorts" }
]
}If your platform emits this automatically (Shopify and WooCommerce both do), verify it's actually firing — themes occasionally strip it out.
Step 6 — Verify Review / AggregateRating on top products (2 min)
Product pages with verified reviews should expose them as AggregateRating nested inside the Product entity:
{
"@type": "Product",
"name": "Trail Short 5\""",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "182"
}
}If you use Yotpo, Judge.me, Stamped, or any modern review app, this should be wired up automatically — but it's worth verifying since theme upgrades occasionally break it.
Step 7 — Final validation pass (1 min)
Paste each page URL into validator.schema.org. This catches subtle errors (malformed dates, wrong enum values, missing required properties) that the Google Rich Results test sometimes misses because it only flags issues that affect rich results.
If any of these checks fail — decision flowchart
The right fix depends on how your site is built:
- Shopify: install a structured-data app (we like the free Hreflang Manager & SEO from SearchPie, or Schema Plus for Pro). For Product schema completeness, edit your theme's
product.json-ld.liquidor use the app's override settings. - WooCommerce: Yoast SEO or RankMath handle most of this. The gap is usually FAQPage — add a dedicated FAQ block plugin or write the JSON-LD by hand into a page template.
- Headless / custom: add JSON-LD blocks to your page templates directly. Keep them under
<script type="application/ld+json">tags inside the page's<head>.
How much does this actually move share-of-voice?
In the audits we've run on brands that ship the full schema fix list, the typical pattern is: +5–15% absolute share of voice on Perplexity in 30 days (Perplexity reads structured data the most aggressively), +3–8% on ChatGPT in 60 days (slower because of training-time inertia), and similar on Gemini. The bigger the catalog and the more sparsely-marked the baseline, the bigger the lift.
Schema fixes pair particularly well with rewriting your top-20 product descriptions — see How to write product descriptions that get cited by ChatGPT. And both pair well with the broader 12-action GEO checklist.
Next step
Run this audit on your homepage, your top 3 products, and your top 2 categories. Fix whatever fails. Re-audit AI visibility in 30 days against the same 100–300 buyer-intent prompts. That's the cleanest test of whether the work moved the needle.
If you want the visibility baseline + 30-day re-audit handled end-to-end across ChatGPT, Claude, Perplexity, and Gemini — that's exactly what a Citorial Starter audit is — see pricing.