schema-org-density on product pages — what Lighthouse expects and how to deliver it
The schema-org-density audit is the Lighthouse Agentic Browsing audit most product-driven sites fail outright. Lighthouse expects a specific Schema.org shape per page type — Product on product pages, Article on blog posts, FAQPage on FAQs. This post covers what the audit actually scores on product pages, why threshold-meeting Schema matters for AI shopping agents, and the exact JSON-LD shape to deliver on Shopify, WordPress, Webflow, and custom builds.
schema-org-density on product pages — what Lighthouse expects and how to deliver it
schema-org-density is the Lighthouse Agentic Browsing audit most product-driven sites fail outright. The audit scores Schema.org JSON-LD blocks across your homepage and a sample of inner pages, and the highest-impact page type for an e-commerce or product-led site is the product detail page. The audit's pass-threshold on product pages is specific, the failure modes are specific, and the fix is specific by platform.
This post unpacks the per-page-type expectation on product pages — what Lighthouse parses, what it actually checks, and what each major platform needs to deliver to pass cleanly.
What Lighthouse scores on a product page
The audit isn't just "is there any Schema?" — it scores three dimensions on each page:
-
Type relevance. A product page must declare
@type: "Product"(or@type: "SoftwareApplication"for software products,@type: "Service"for services,@type: "Vehicle"for cars). A product page that only declaresOrganizationandWebSiteis type-misaligned and fails. -
Field density. A
Productblock needs the load-bearing fields:name,image,description,sku,brand, andoffers(withprice,priceCurrency,availability). Pages that declareProductbut only fillnameandimagescore lower than pages that fill all six. -
Field validity. Each field must contain real values.
"price": "","sku": "PRODUCT_SKU"(placeholder),"image": "https://example.com/placeholder.jpg"all count as failures — the validator treats empty or template-default values as invalid.
The audit weights these three dimensions roughly equally. A page that gets type-relevance right but field density wrong scores ~50%. A page that gets all three right scores 100% on that page; the audit then averages across the sample.
Why this matters more than other Schema work
AI shopping agents — the buyers' side of "Agentic Storefronts" — rely on Product Schema to confidently compare, recommend, and quote your products in answers. When an agent is asked "find me a black leather wallet under $50", the agent's query backend matches against structured Product Schema first, full-text content second. Pages with rich Product blocks get cited; pages without get paraphrased or skipped.
The same logic applies to AI search results (Google's AI Overviews, ChatGPT's web search, Perplexity, Claude's web search) when they answer product-specific questions. Structured Schema is the high-fidelity signal; HTML scraping is the lossy fallback.
For sites that sell anything, this is the single highest-ROI Schema audit to close. The work compounds across every AI surface that reads product data.
The reference shape Lighthouse wants
The minimum-viable Product JSON-LD that passes the audit cleanly:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Mid-weight wool blazer",
"image": [
"https://yourdomain.com/images/blazer-1.jpg",
"https://yourdomain.com/images/blazer-2.jpg"
],
"description": "A mid-weight wool blazer cut from Italian merino, lined in viscose, with horn buttons and a single back vent.",
"sku": "BL-MW-NAV-42",
"brand": {
"@type": "Brand",
"name": "Your Brand"
},
"offers": {
"@type": "Offer",
"url": "https://yourdomain.com/products/wool-blazer",
"priceCurrency": "USD",
"price": "349.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "23"
}
}
Optional but score-lifting: aggregateRating (if you have reviews — Lighthouse weights this when present and ignores it when absent, so it's pure upside), gtin or mpn (manufacturer identifiers — strong signal for shopping comparators), weight and material (for physical goods — strong signal for delivery-time and care-instruction agents).
Per-platform fix path
Shopify
Default behavior. Modern Dawn-derived themes (Dawn, Sense, Refresh, Spotlight, Studio) emit Product Schema natively from product page templates. Older themes (Debut, Brooklyn, Minimal) emit a stripped-down version with name, image, offers only — fails the field-density check.
Fix. Check your theme's output by viewing source on a product page and grepping for application/ld+json. If the Product block is missing fields, you have two options:
- Switch to a modern theme. Highest-ROI fix if you can budget for it — modern Dawn-derived themes also ship better Core Web Vitals defaults.
- Add Schema via app. "JSON-LD for SEO" (the most popular Shopify Schema app, ~$10/month) fills the gaps. Schema Plus, Smart SEO are alternatives. Apps inject the block via the theme's
theme.liquidand stay current as Shopify's product fields evolve. - Edit the theme directly. Open
templates/product.json(ortemplates/product.liquidon older themes) and find the existing JSON-LD block. Add the missing fields using Liquid template syntax ({{ product.title }},{{ product.featured_image | img_url }},{{ product.price | money_without_currency }}, etc.).
The full Shopify checklist covers Schema density alongside the other three surfaces.
WordPress + WooCommerce
Default behavior. WordPress core emits no product Schema. WooCommerce emits a minimal Product block via the product template, missing aggregateRating and brand unless your theme adds them.
Fix. Three plugin paths:
- Yoast SEO Premium (~$99/year) — emits full
ProductSchema with all load-bearing fields, configurable per-product. - RankMath Pro (~$59/year) — equivalent coverage to Yoast Premium, includes brand field configuration.
- Schema Pro ($79/year) — single-purpose Schema plugin, often paired with Yoast Free for SEO meta.
Any of the three closes the audit on WordPress + WooCommerce. Free versions (Yoast Free, RankMath Free, SEOPress) emit basic Schema but miss fields the audit weights.
Webflow
Default behavior. Webflow's CMS Collections for "Product" emit Product Schema if the Collection has the load-bearing fields (Name, Image, Price, Description) populated. The output is shape-clean but doesn't include aggregateRating, brand, or sku unless you add Collection fields for those and bind them.
Fix. Audit your Product Collection for the missing fields. Add Brand and SKU fields if not present. For aggregateRating, add Rating Value and Review Count fields and bind them in the Schema output via Page Settings → Custom Code as a supplementary JSON-LD block (Webflow's auto-Schema and your custom Schema coexist — Lighthouse merges them).
The Webflow Schema setup most Webflow sites miss post covers the Collection-field hygiene that affects this audit specifically.
Custom React / Next.js
Default behavior. Nothing emits Schema unless you write it.
Fix. Emit a JSON-LD block in your product page component:
export default function ProductPage({ product }) {
const schema = {
"@context": "https://schema.org",
"@type": "Product",
"name": product.name,
"image": product.images,
"description": product.description,
"sku": product.sku,
"brand": { "@type": "Brand", "name": product.brand },
"offers": {
"@type": "Offer",
"url": `https://yourdomain.com/products/${product.slug}`,
"priceCurrency": product.currency,
"price": product.price.toFixed(2),
"availability": product.inStock
? "https://schema.org/InStock"
: "https://schema.org/OutOfStock"
}
};
return (
<>
<Script
type="application/ld+json"
id="product-schema"
strategy="beforeInteractive"
>
{JSON.stringify(schema)}
</Script>
{/* rest of the page */}
</>
);
}
The strategy="beforeInteractive" matters — Lighthouse parses Schema from initial HTML, not from post-hydration injection.
Verifying the fix
Two tools:
- Google Rich Results Test — paste a product page URL, see every Schema type detected and any field-level errors. The canonical pre-Lighthouse check.
- Re-run Lighthouse Agentic Browsing — DevTools → Lighthouse → category "Agentic Browsing" → Analyze. The
schema-org-densityaudit should flip green.
Most sites that close schema-org-density on product pages see a ~15-20 point lift in their overall Lighthouse Agentic Browsing score. The audit's weight inside the category reflects that this is the highest-impact structured-data signal for agent traffic.
Related
- Lighthouse Agentic Browsing — every audit, every fix → — the per-audit fix reference for all nine Lighthouse Agentic Browsing audits
- The 2026 agent-ready Shopify checklist — beyond Agentic Storefronts → — platform-specific application to Shopify
- The 2026 agent-ready WordPress checklist → — platform-specific application to WordPress (Yoast / RankMath / SEOPress)
- Webflow Schema setup most Webflow sites miss → — the three Schema gaps Webflow leaves open
- Shopify Agentic Storefronts — what it means for your AI-readiness strategy → — the May 25 terms update
- Run the free readiness audit → — five-second check on your site