Skip to content
Browse all guides

Issue #231 · important

Issue 231

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 does it matter?

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 to fix it

  1. 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
  2. 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"
      }
    }
    
  3. Include required properties:

    • name: Product name
    • description: Product description
    • image: Product image URL(s)
    • offers: Pricing information (nest Offer schema)
  4. Add recommended properties:

    • sku: Unique product identifier
    • brand: Product brand (use Brand schema)
    • aggregateRating: Review ratings (nest AggregateRating schema)
    • availability: Product availability status
  5. Validate with Google's Rich Results Test

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"
  }
}

How PixyScan detects this

PixyScan follows these logical steps to detect missing Product schema:

  1. 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
  2. Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page

  3. Check for Product schema: The crawler verifies if any schema block has:

    • @type set to Product
    • Required properties: name, description, image, offers
  4. Validate schema completeness: If Product schema is found, the crawler checks for:

    • offers property with nested Offer schema
    • image property (required for Merchant Listings)
    • sku property (unique product identifier)
    • brand property (Brand schema)
    • aggregateRating property (review ratings)
  5. Trigger conditions: The issue is flagged when:

    • Product page doesn't have Product schema
    • Product schema exists but offers is missing
    • Product schema exists but image is missing

References