Product Schema Missing
Issue No: 231
Category: Structured Data & Rich Results
Issue type: Issue
Priority: CRITICAL
Description
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.
How do we capture it
- Identify product pages via URL patterns (
/product/,/shop/,/item/,/p/) - Check JSON-LD for
"@type": "Product" - Validate nested
OfferandAggregateRating
What to store
StructuredDataAudit with schemaType = Product, issueNumber = 231, plus StructuredDataField rows:
| Field | Type | Comment |
|---|---|---|
has_sku | boolean | sku unique product identifier present |
has_offer | boolean | Nested offers / Offer block present |
has_rating | boolean | aggregateRating present |
has_availability | boolean | Offer includes availability URL |
has_brand | boolean | brand with Brand type present |
Core audit fields: isPresent, hasName, hasImage, hasDescription, rawJson
Condition for trigger
The following rules trigger this issue:
- Trigger Rule 1: Schema absent
- Target Field:
isPresent - Evaluation Logic:
isPresent = false - Severity: CRITICAL
- Diagnostic Message: "No
Producton product page"
- Target Field:
- Trigger Rule 2: No offer
- Target Field:
has_offer - Evaluation Logic:
has_offer = false - Severity: CRITICAL
- Diagnostic Message: "No pricing data"
- Target Field:
- Trigger Rule 3: No image
- Target Field:
hasImage - Evaluation Logic:
hasImage = false - Severity: CRITICAL
- Diagnostic Message: "Required for Merchant Listings"
- Target Field:
Sources
- Schema.org — Product
- Google — Product Structured Data
- Google Merchant Center — Structured Data
- Google Rich Results Test
Long description
Product is the most commercially important schema type. With it, Google shows star ratings, price, and availability directly in SERPs:
Widget Pro — Example Corp ★★★★★ 342 reviews $49.99 In Stock
Without it, only a plain blue link appears.
Full example:
{
"@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"
}
}
How to Fix
- Add
ProductJSON-LD to every product page - Always include
name,image,offerswithprice,priceCurrency,availability - Add
skuandbrandfor stronger entity recognition - Keep price/availability in sync with page content
- Validate at Google Rich Results Test