Skip to main content

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 Offer and AggregateRating

What to store

StructuredDataAudit with schemaType = Product, issueNumber = 231, plus StructuredDataField rows:

FieldTypeComment
has_skubooleansku unique product identifier present
has_offerbooleanNested offers / Offer block present
has_ratingbooleanaggregateRating present
has_availabilitybooleanOffer includes availability URL
has_brandbooleanbrand 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 Product on product page"
  • Trigger Rule 2: No offer
    • Target Field: has_offer
    • Evaluation Logic: has_offer = false
    • Severity: CRITICAL
    • Diagnostic Message: "No pricing data"
  • Trigger Rule 3: No image
    • Target Field: hasImage
    • Evaluation Logic: hasImage = false
    • Severity: CRITICAL
    • Diagnostic Message: "Required for Merchant Listings"

Sources

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

  1. Add Product JSON-LD to every product page
  2. Always include name, image, offers with price, priceCurrency, availability
  3. Add sku and brand for stronger entity recognition
  4. Keep price/availability in sync with page content
  5. Validate at Google Rich Results Test