Ecommerce Structured Data: The Complete Guide to Product, Review, and BreadcrumbList Schema
Structured data markup is how you communicate product details, reviews, and site structure directly to Google. This guide covers every schema type an ecommerce store needs, with working examples.
Structured data is the difference between a search result that shows a price, rating, and availability badge and one that's just a blue link. For ecommerce, getting structured data right is one of the highest-ROI technical SEO tasks — it directly affects how your products appear in Google Shopping, search results, and increasingly, in AI-generated answers.
Why Structured Data Matters for Ecommerce
Google uses structured data to:
- Power rich snippets (star ratings, price, availability in search results)
- Feed product listings in Google Shopping free listings
- Understand your site hierarchy (breadcrumbs)
- Generate FAQ and HowTo rich results from informational pages
- Populate the Knowledge Panel for your brand
Stores with proper Product schema see click-through rates 20-35% higher than stores without it, simply because the listing takes up more visual space and provides buying signals directly in the SERP.
Product Schema — The Essential Ecommerce Schema
Every product page should have Product schema. Minimum required properties:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Organic Cotton Crew T-Shirt",
"description": "100% GOTS-certified organic cotton. Pre-shrunk. Available in 8 colors.",
"image": ["https://example.com/t-shirt-front.jpg", "https://example.com/t-shirt-back.jpg"],
"sku": "OCC-TEE-M-BLK",
"brand": {
"@type": "Brand",
"name": "Your Brand Name"
},
"offers": {
"@type": "Offer",
"price": "39.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/organic-cotton-tee",
"priceValidUntil": "2027-12-31"
}
}
Common Product Schema Mistakes
- Missing priceValidUntil: Google requires this for some rich result types. Set it 12 months out and update annually.
- Using strings for availability: Must be a full URL like
https://schema.org/InStock— not just "InStock". - Wrong image format: Use an array for images if you have multiple. Minimum size: 160x90px, recommended 1600x900px.
- Conflicting data: The schema price must match the visible page price exactly. Google penalizes mismatches.
AggregateRating — Get Stars in Your Search Results
If your store has product reviews, add AggregateRating to your Product schema. This enables star ratings in search results:
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128",
"bestRating": "5",
"worstRating": "1"
}
Rules Google enforces:
- Reviews must be written by actual customers, not the business owner
- Ratings must be visible on the page
- Review counts must be accurate
- Fake reviews violate Google's guidelines and can trigger manual actions
Review Schema — Individual Review Markup
Add Review schema for each individual review displayed on the product page:
"review": [{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
},
"author": {
"@type": "Person",
"name": "Sarah M."
},
"reviewBody": "Perfect fit and incredibly soft. I've washed it 30 times and it still looks new.",
"datePublished": "2026-01-15"
}]
BreadcrumbList — Tell Google Your Site Structure
Breadcrumb schema tells Google the hierarchy of your pages. It also replaces the ugly URL in search results with a clean breadcrumb trail (Home > Men > T-Shirts > This Product):
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Men",
"item": "https://example.com/men"
},
{
"@type": "ListItem",
"position": 3,
"name": "T-Shirts",
"item": "https://example.com/men/t-shirts"
},
{
"@type": "ListItem",
"position": 4,
"name": "Organic Cotton Crew T-Shirt",
"item": "https://example.com/products/organic-cotton-tee"
}
]
}
Organization Schema — Your Brand Identity
Add Organization schema to your homepage to help Google identify your brand:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Store Name",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-800-555-0123",
"contactType": "customer service"
},
"sameAs": [
"https://www.instagram.com/yourbrand",
"https://www.facebook.com/yourbrand"
]
}
SiteLinksSearchBox — Google's Search Bar in Your Result
If your site has a prominent search function, you can mark it up with WebSite schema so Google displays a search box directly in your search result:
{
"@context": "https://schema.org",
"@type": "WebSite",
"url": "https://example.com/",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://example.com/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
FAQPage Schema — Ecommerce Policy Pages
Your shipping policy, return policy, and FAQ pages are good candidates for FAQPage schema. Each Q&A pair can appear as an expandable rich result:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "What is your return policy?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We accept returns within 30 days of purchase. Items must be unworn and in original packaging."
}
}]
}
How to Validate Your Structured Data
Two tools matter:
- Google Rich Results Test — tests for eligibility for rich results specifically
- Schema.org Validator — broader validation against the schema.org spec
StoreVitals checks for the presence of structured data (JSON-LD, Microdata, RDFa) on every page it crawls. It won't validate the schema content, but it will flag pages that have no structured data at all — a common problem on product pages added through bulk import tools that don't include schema generation.