No Product schema on a product page
What Is This Issue
E-commerce product pages are missing Product schema, causing the site to lose eligibility for Google Shopping rich results, price snippets, and availability display in SERPs.
Without Product schema:
- Your products won’t appear in Google Shopping rich results
- Price and availability won’t show in search results
- Star ratings and review counts won’t display
- Product rich snippets won’t appear
- You’ll lose eligibility for Google Merchant Listings
- AI search engines can’t properly understand your products
A proper Product schema should include: @type (Product), name, description, image, offers, and optionally sku, brand, aggregateRating, availability.
Why Is This Important
Product schema is the most commercially important schema type:
- Google Shopping rich results: Enables products to appear in Google Shopping carousels
- Price snippets: Shows price and availability directly in search results
- Star ratings: Displays star ratings and review counts in search results
- Merchant Listings: Required for Google Merchant Center listings
- AI search readiness: AI engines use Product schema to understand and recommend products
- Conversion rates: Product rich results have significantly higher click-through rates
Resolving this issue improves your SEO health score by ensuring products are properly structured for maximum commercial visibility.
How XeoPix Detects This
XeoPix follows these logical steps to detect missing Product schema:
-
Detect product pages: The crawler identifies pages with:
- URL patterns (
/product/,/shop/,/item/,/p/) - Product name, price, and add-to-cart functionality
- Product images and descriptions
- URL patterns (
-
Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page
-
Check for Product schema: The crawler verifies if any schema block has:
@typeset toProduct- Required properties:
name,description,image,offers
-
Validate schema completeness: If Product schema is found, the crawler checks for:
offersproperty with nested Offer schemaimageproperty (required for Merchant Listings)skuproperty (unique product identifier)brandproperty (Brand schema)aggregateRatingproperty (review ratings)
-
Trigger conditions: The issue is flagged when:
- Product page doesn’t have Product schema
- Product schema exists but
offersis missing - Product schema exists but
imageis missing
How To Fix
-
Identify product pages: Look for pages with:
- URL patterns (
/product/,/shop/,/item/,/p/) - Product name, price, and add-to-cart functionality
- Product images and descriptions
- URL patterns (
-
Add Product JSON-LD structured data to the page’s
<head>or before</body>:{ "@context": "https://schema.org", "@type": "Product", "name": "Widget Pro", "image": ["https://example.com/img1.jpg", "https://example.com/img2.jpg"], "sku": "WGT-001", "brand": { "@type": "Brand", "name": "Example Corp" }, "offers": { "@type": "Offer", "price": "49.99", "priceCurrency": "USD", "availability": "https://schema.org/InStock" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.7", "reviewCount": "342" } } -
Include required properties:
name: Product namedescription: Product descriptionimage: Product image URL(s)offers: Pricing information (nest Offer schema)
-
Add recommended properties:
sku: Unique product identifierbrand: Product brand (use Brand schema)aggregateRating: Review ratings (nest AggregateRating schema)availability: Product availability status
-
Validate with Google’s Rich Results Test
What We Store
Storage Level
Page Level — This issue is evaluated for each individual URL that contains structured data.
Database Table / Prisma Model
PageStructuredData
Stored Fields
| Field | Type | Description |
|---|---|---|
| schemaType | SchemaType | The type of schema (e.g., Organization, Person) |
| schemaFormat | SchemaFormat | The format of the schema (JSON-LD, Microdata, RDFa) |
| schemaIdentifier | String? | Unique identifier for the schema |
| rawJson | Json? | The raw JSON-LD or structured data content |
| schemaErrors | Json? | Array of validation errors found in the schema |
| isValidSchema | Boolean? | Whether the schema is valid according to validation |
| missingFields | Json? | Array of required fields that are missing |
Detection Dependencies
- The following data sources are required to evaluate this issue:
- HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
- Structured Data Validation — The extracted schema is validated against Schema.org definitions
- Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed
Examples
Example 1: Missing Product Schema on Product Page
Problematic state:
<!-- Product page without Product schema -->
<html>
<head>
<title>Widget Pro - Example Store</title>
</head>
<body>
<h1>Widget Pro</h1>
<img src="https://example.com/img1.jpg" alt="Widget Pro" />
<p>High-quality widget for professional use.</p>
<p><strong>Price:</strong> $49.99</p>
<p><strong>Availability:</strong> In Stock</p>
<button>Add to Cart</button>
</body>
</html>Corrected state:
<!-- Product page with Product schema -->
<html>
<head>
<title>Widget Pro - Example Store</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Widget Pro",
"image": [
"https://example.com/img1.jpg",
"https://example.com/img2.jpg"
],
"sku": "WGT-001",
"brand": { "@type": "Brand", "name": "Example Corp" },
"offers": {
"@type": "Offer",
"price": "49.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "342"
}
}
</script>
</head>
<body>
<h1>Widget Pro</h1>
<img src="https://example.com/img1.jpg" alt="Widget Pro" />
<p>High-quality widget for professional use.</p>
<p><strong>Price:</strong> $49.99</p>
<p><strong>Availability:</strong> In Stock</p>
<button>Add to Cart</button>
</body>
</html>Example 2: Product Schema with Multiple Images
Corrected state:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Running Shoes",
"image": [
"https://example.com/shoes-front.jpg",
"https://example.com/shoes-side.jpg",
"https://example.com/shoes-back.jpg"
],
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}Example 3: Incomplete Product Schema
Problematic state:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Coffee Mug"
}Missing required properties: description, image, offers
Corrected state:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Coffee Mug",
"description": "Ceramic coffee mug with ergonomic handle",
"image": "https://example.com/mug.jpg",
"offers": {
"@type": "Offer",
"price": "12.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}Unit Test
Test File
xeopix-crawling-v2/__tests__/seo-audit-checks/structuredDataRichResults/issue-231-product-schema-missing.test.js
Purpose
Validates that the crawler correctly validates Product JSON-LD schemas and does not report false positives when the schema is properly formed.
Tested Function
runStructuredDataRichResults()
Issue Information
- Issue Number: 231
- Issue Code:
product_schema_missing - Toggle Group:
structuredDataRichResults
Test Scenarios
Positive Test Cases
- Valid Product schema: Page has a
Productschema withname,image, anddescription— no issue reported.
Negative Test Cases
None — the test only validates that valid schemas pass.
Boundary Cases
None.
Edge Cases
- Empty HTML:
<html></html>— no crash.
Expected Outcome
Pass
Issue should not be reported when a valid Product schema with required properties is present.
Fail
No negative test cases are defined.
Validation
- Correct pass-through of valid Product schemas
- Graceful handling of empty HTML
Related Production Files
xeopix-crawling-v2/toggleGroups/structuredDataRichResults.jsxeopix-crawling-v2/issueCodes.jsxeopix-crawling-v2/utils/context.jsxeopix-crawling-v2/utils/issues.jsxeopix-crawling-v2/utils/schema.js
Coverage Summary
- Covers valid Product schema detection
- Covers empty HTML resilience
References
- Schema.org — Product — Schema.org
- Google — Product Structured Data — Google Search Central
- Google Merchant Center — Structured Data — Google Merchant Center