Skip to main content
Technical SEO 16 min read

Product Schema: The Complete E-commerce Guide

Learn how to implement Product structured data to show prices, reviews, and availability directly in Google search results—increasing clicks and conversions for your online store.

Part of our Structured Data Guide series

Chris Drinkard

Written by

14 years in hospitality management

5 years helping independent hotels grow their online presence. Passionate about AI, search, and digital strategy.

What is Product Schema?

Product schema is structured data markup that tells search engines detailed information about products on your e-commerce site. This includes product names, descriptions, prices, availability, reviews, and images.

Key benefit: Product schema enables rich results in Google that display price, availability, and star ratings—making your products stand out and dramatically increasing click-through rates.

Product Rich Results Example

Premium Wireless Headphones

example-store.com › electronics › headphones

★★★★★ 4.8 (1,247 reviews)

$299.00

In stock · Free shipping

Rich result shows image, rating, price, and availability at a glance.

Why Product Schema Matters for E-commerce

Higher Click-Through Rates

Rich results with prices and stars get significantly more clicks than plain text listings.

Google Shopping Eligibility

Product schema helps Google understand your products for free Google Shopping listings.

Review Stars Visibility

Display customer ratings directly in search results to build trust before the click.

Better Price Comparison

Shoppers can see your price in results, attracting price-conscious buyers.

JSON-LD Implementation

Complete Product Schema Example

Here's a comprehensive example with all recommended properties:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Premium Wireless Headphones",
  "image": [
    "https://example.com/photos/headphones-front.jpg",
    "https://example.com/photos/headphones-side.jpg",
    "https://example.com/photos/headphones-back.jpg"
  ],
  "description": "High-fidelity wireless headphones with active noise cancellation, 30-hour battery life, and premium comfort for all-day listening.",
  "sku": "WH-1000XM5",
  "mpn": "WH1000XM5/B",
  "gtin13": "4548736132351",
  "brand": {
    "@type": "Brand",
    "name": "AudioTech"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/headphones/wh-1000xm5",
    "priceCurrency": "USD",
    "price": "299.00",
    "priceValidUntil": "2025-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "Example Electronics"
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": "0",
        "currency": "USD"
      },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": {
          "@type": "QuantitativeValue",
          "minValue": 0,
          "maxValue": 1,
          "unitCode": "DAY"
        },
        "transitTime": {
          "@type": "QuantitativeValue",
          "minValue": 3,
          "maxValue": 5,
          "unitCode": "DAY"
        }
      }
    },
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "US",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30,
      "returnMethod": "https://schema.org/ReturnByMail",
      "returnFees": "https://schema.org/FreeReturn"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "bestRating": "5",
    "worstRating": "1",
    "ratingCount": "1247"
  },
  "review": [
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5"
      },
      "author": {
        "@type": "Person",
        "name": "John D."
      },
      "datePublished": "2025-01-15",
      "reviewBody": "Best headphones I've ever owned. The noise cancellation is incredible."
    }
  ]
}
</script>

Minimal Product Schema

If you're just getting started, here's the minimum required for rich results:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Premium Wireless Headphones",
  "image": "https://example.com/headphones.jpg",
  "offers": {
    "@type": "Offer",
    "price": "299.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}
</script>

Required vs. Recommended Properties

Required for Rich Results

  • name
  • image
  • offers.price
  • offers.priceCurrency

Highly Recommended

  • description
  • brand
  • sku or gtin
  • offers.availability
  • offers.url
  • aggregateRating
  • review
  • offers.priceValidUntil

Availability Values

Use these exact schema.org URLs for the availability property:

Status Schema Value
In Stockhttps://schema.org/InStock
Out of Stockhttps://schema.org/OutOfStock
Pre-Orderhttps://schema.org/PreOrder
Backorderhttps://schema.org/BackOrder
Limited Availabilityhttps://schema.org/LimitedAvailability
Discontinuedhttps://schema.org/Discontinued

Handling Product Variants

Products with variants (sizes, colors, etc.) need special consideration:

Option 1: Multiple Offers (Same Page)

If all variants are on one page, use multiple Offers:

{
  "@type": "Product",
  "name": "Classic T-Shirt",
  "offers": [
    {
      "@type": "Offer",
      "name": "Small - Blue",
      "sku": "TS-S-BLU",
      "price": "29.00",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock"
    },
    {
      "@type": "Offer",
      "name": "Medium - Blue",
      "sku": "TS-M-BLU",
      "price": "29.00",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock"
    },
    {
      "@type": "Offer",
      "name": "Large - Blue",
      "sku": "TS-L-BLU",
      "price": "29.00",
      "priceCurrency": "USD",
      "availability": "https://schema.org/OutOfStock"
    }
  ]
}

Option 2: Separate Pages per Variant

If each variant has its own URL, create unique Product schema for each:

  • /t-shirt-blue-small/ → Product schema for Blue Small
  • /t-shirt-blue-medium/ → Product schema for Blue Medium
  • /t-shirt-red-small/ → Product schema for Red Small

Adding Reviews & Ratings

Important: Review schema must represent genuine customer reviews. Self-written reviews, fake reviews, or reviews for products you didn't sell violate Google's guidelines and can result in manual actions.

Aggregate Rating

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.8",
  "bestRating": "5",
  "worstRating": "1",
  "ratingCount": "1247",
  "reviewCount": "892"
}

Individual Reviews

"review": [
  {
    "@type": "Review",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5",
      "bestRating": "5"
    },
    "author": {
      "@type": "Person",
      "name": "Sarah M."
    },
    "datePublished": "2025-01-10",
    "reviewBody": "Excellent product! Exactly as described."
  }
]

Implementation by Platform

Shopify

Shopify themes include basic Product schema, but for full control:

  • Apps: JSON-LD for SEO (free), Smart SEO, SEO Manager
  • Theme edit: Modify product.liquid to add custom JSON-LD
  • Metafields: Store additional data like GTIN, MPN in metafields

WooCommerce

WooCommerce adds basic schema, enhance with:

  • Yoast WooCommerce SEO: Enhanced product schema
  • Rank Math: Built-in WooCommerce schema
  • Schema Pro: Advanced schema customization

BigCommerce

BigCommerce includes built-in schema. Customize via:

  • Built-in: Basic Product schema included
  • Apps: Schema Markup Plus, JSON-LD Generator
  • Custom: Edit Stencil templates

Custom E-commerce

For custom platforms:

  • Generate JSON-LD dynamically from product database
  • Template-based approach for consistent schema
  • Validate with Google Rich Results Test before deploying

Common Mistakes to Avoid

1. Missing or Incorrect Price

Price must match what's on the page. "0.00" or missing prices invalidate rich results.

2. Wrong Availability Status

If product shows "Out of Stock" on page but schema says InStock, Google may distrust your data.

3. Fake or Manipulated Reviews

Review schema must reflect genuine customer reviews visible on your page.

4. Using Product Schema on Category Pages

Category pages should use CollectionPage or ItemList, not multiple Product blocks.

5. Missing Images

Image is required. Use high-quality product images, not placeholders.

6. Outdated priceValidUntil

If using priceValidUntil, keep it current. Expired dates look like stale data.

Frequently Asked Questions

What is Product schema?

Product schema is structured data that provides search engines with detailed product information including name, description, price, availability, reviews, and images. When implemented correctly, it enables rich results showing product details directly in Google search results.

Does Product schema help e-commerce SEO?

Yes, Product schema significantly helps e-commerce SEO by enabling rich snippets that show prices, availability, and star ratings in search results. This increases click-through rates and helps your products stand out against competitors.

What's the difference between Product and Offer schema?

Product schema describes the product itself (name, brand, description). Offer schema is nested inside Product and describes the commercial offer (price, availability, seller). A single product can have multiple offers from different sellers.

Can I add Product schema without reviews?

Yes, Product schema works without reviews, but you won't get star ratings in rich results. Add aggregateRating or individual reviews when you have genuine customer ratings to enable review stars in search results.

How do I handle products with variants (sizes, colors)?

You have two options: 1) Create separate Product schema for each variant if they have unique URLs, or 2) Use a single Product schema with multiple Offers for each variant (recommended if variants share one page).

Should every product page have Product schema?

Yes, every product detail page should have Product schema. However, category/collection pages should use CollectionPage or ItemList schema instead, listing multiple products without full Product schema for each.

Validate Your Product Schema

Test your Product markup to ensure Google can parse it correctly for rich results with prices, reviews, and availability.