Written by Chris Drinkard
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
$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 Stock | https://schema.org/InStock |
| Out of Stock | https://schema.org/OutOfStock |
| Pre-Order | https://schema.org/PreOrder |
| Backorder | https://schema.org/BackOrder |
| Limited Availability | https://schema.org/LimitedAvailability |
| Discontinued | https://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.