Ecommerce SEO

Ecommerce Schema Markup: Complete Guide to Product Rich Results

By Reviewed by Hawrry Bhattarai
August 8, 2026 15 min read
Contents
TL;DR — the short answer

Learn how to implement Product schema, AggregateRating, BreadcrumbList, and ItemList schema for ecommerce to unlock star ratings, price, and availability in Google search results.

14 min read · Ecommerce SEO · Last updated July 2026

Quick answer: Product schema with AggregateRating unlocks star ratings, price, and availability directly in Google search results — typically increasing CTR by 15-30%. Required fields: name, image, description. Recommended: brand, sku, mpn, offers (price, priceCurrency, availability), aggregateRating. Test every implementation with Google’s Rich Results Test before pushing to production.

Introduction

Most product pages on Google show a title, URL, and description. Some show star ratings, price, and availability directly in the search result — before the shopper even clicks.

That difference is schema markup.

Ecommerce stores with star ratings visible in SERPs consistently see 15-30% higher click-through rates than equivalent listings without them. On a product page with 5,000 monthly impressions, a 20% CTR improvement means 1,000 additional visitors per month from buyers who were already looking at a search result for your product.

Schema markup does not guarantee rich results — Google chooses which search results display enhanced features based on content quality, compliance with schema guidelines, and the search context. But without the schema, rich results are impossible.

This guide covers every schema type relevant to ecommerce, with complete JSON-LD code examples and a generator tool for your most important product pages.

What you’ll learn:
– The complete Product schema structure with all required and recommended fields
– How AggregateRating schema unlocks star rich results in Google
– BreadcrumbList schema for navigation context in SERPs
– ItemList schema for category pages
– How to test schema and resolve common validation errors


Table of Contents

  1. Why Schema Markup Matters for Ecommerce
  2. Product Schema: Required and Recommended Fields
  3. Offer Schema: Price, Currency, and Availability
  4. AggregateRating Schema: Unlocking Star Rich Results
  5. BreadcrumbList Schema for Every Page
  6. ItemList Schema for Category Pages
  7. Organization Schema for Trust Signals
  8. How to Test Schema Markup
  9. Common Schema Errors and How to Fix Them
  10. Interactive: Product Schema Generator and Validation Checklist
  11. FAQ

1. Why Schema Markup Matters for Ecommerce

Schema markup is structured data — machine-readable annotations added to your HTML that tell Google precisely what each element of your page means.

Without schema, Google reads your product page HTML and infers meaning from context. It can usually determine that the page is about a product, but it cannot reliably extract price, availability, rating, or SKU from unstructured text.

With Product schema, Google knows exactly:
– This is a product
– It costs $149.99 USD
– It is currently in stock
– It has 4.7 star rating from 2,400 reviews
– The brand is Nike
– The SKU is NK-AM270-10

That data feeds into multiple Google surfaces:
Organic search rich results: star ratings, price, availability inline in the blue-link result
Google Shopping free listings: price and availability feed into the free Shopping tab
Google Lens: structured product data improves visual search association
Voice search: Google Assistant can read product details directly from schema

The business case is straightforward. Schema is a one-time implementation effort (with ongoing maintenance for new products) that provides a persistent ranking and CTR advantage.


Schema.org’s Product type is the foundation. Implement it as JSON-LD in the <head> or <body> of your product pages.

Minimum viable Product schema:

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Nike Air Max 270",
  "image": "https://yourstore.com/images/nike-air-max-270-black.jpg",
  "description": "The Nike Air Max 270 features a large Max Air unit in the heel for all-day comfort. Designed for all-day wear."
}

This minimum implementation allows Google to understand the page as a product but does not enable any rich result features.

Recommended Product schema (with all key fields):

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Nike Air Max 270 Men's Shoe",
  "image": [
    "https://yourstore.com/images/nike-am270-black-front.jpg",
    "https://yourstore.com/images/nike-am270-black-side.jpg",
    "https://yourstore.com/images/nike-am270-lifestyle.jpg"
  ],
  "description": "The Nike Air Max 270 features a large Max Air unit for all-day comfort. Available in men's sizes 7-15.",
  "sku": "NK-AM270-BLK-10",
  "mpn": "AH8050-002",
  "brand": {
    "@type": "Brand",
    "name": "Nike"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://yourstore.com/products/nike-air-max-270",
    "priceCurrency": "USD",
    "price": "149.99",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "Your Store Name"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "2847"
  }
}

Field-by-field explanation:

Field Required Purpose
name Yes Product name as it appears on the page
image Yes One or more product image URLs
description Yes Product description text
sku Recommended Your store’s stock-keeping unit identifier
mpn Recommended Manufacturer part number — helps Google match products
brand Recommended Brand name — critical for branded search matching
offers Recommended Price, currency, and availability — required for price rich result
aggregateRating Recommended Average rating and review count — required for star rich result

3. Offer Schema: Price, Currency, and Availability

The offers property nests an Offer object that tells Google the commercial details of the product.

Availability values (use the exact schema.org URI):

Availability Status Schema.org Value
In stock https://schema.org/InStock
Out of stock https://schema.org/OutOfStock
Pre-order https://schema.org/PreOrder
Back-order https://schema.org/BackOrder
Discontinued https://schema.org/Discontinued
Limited availability https://schema.org/LimitedAvailability

Common availability error: using string values like "InStock" or "in stock" instead of the full schema.org URI. Google’s validator will flag this.

Price accuracy requirement: Google requires that the price in schema exactly matches the price displayed on the page. Discrepancies (schema shows $149.99, page shows $129.99 on sale) are a policy violation that can result in loss of rich results.

priceValidUntil: Set this field to avoid schema warnings. Use a date 6-12 months in the future for standard products. Update regularly or set dynamically via your CMS.

For products with variant pricing (e.g., different sizes or colors have different prices):
Use AggregateOffer when a product has multiple price points:

"offers": {
  "@type": "AggregateOffer",
  "lowPrice": "89.99",
  "highPrice": "179.99",
  "priceCurrency": "USD",
  "availability": "https://schema.org/InStock"
}

4. AggregateRating Schema: Unlocking Star Rich Results

Star ratings in search results are one of the most visible and valuable schema features for ecommerce. They appear as yellow stars directly under the page title in organic results.

Requirements to display star rich results:
1. Your page must have aggregateRating in the Product schema
2. The ratings must come from actual user reviews (not self-assessment)
3. Google’s guidelines require a minimum number of reviews (generally 5+, though no exact minimum is published)
4. The rating values must be accurate and up-to-date

AggregateRating fields:

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.7",
  "bestRating": "5",
  "worstRating": "1",
  "reviewCount": "2847"
}
  • ratingValue: Average rating (number or string)
  • bestRating: Maximum possible rating (defaults to 5 if omitted)
  • worstRating: Minimum possible rating (defaults to 1 if omitted)
  • reviewCount: Total number of reviews

Note on reviewCount vs. ratingCount: Use reviewCount for pages where reviews contain written text. Use ratingCount for pages where ratings may not have written content. When in doubt, use reviewCount.

Review platform integration:
If you use Judge.me, Yotpo, Okendo, or Stamped for reviews, these platforms auto-generate AggregateRating schema on your product pages. Verify using the Rich Results Test — the schema should show the current rating and review count from your platform.


5. BreadcrumbList Schema for Every Page

BreadcrumbList schema enables breadcrumb navigation to appear in Google SERPs directly under the URL. This is a minor but consistent CTR improvement and makes URLs more readable.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://yourstore.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Men's Shoes",
      "item": "https://yourstore.com/collections/mens-shoes"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Running Shoes",
      "item": "https://yourstore.com/collections/mens-running-shoes"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "Nike Air Max 270"
    }
  ]
}

The final item (current page) typically omits the item property since it represents the current URL.

Most Shopify themes include breadcrumb markup automatically if breadcrumbs are enabled in theme settings. Verify this with the Rich Results Test.


6. ItemList Schema for Category Pages

ItemList schema on collection/category pages tells Google that this page represents a list of products. This can enable “list” rich results that show individual products nested within the category result.

{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "Men's Running Shoes",
  "description": "Shop our full range of men's running shoes from Nike, Adidas, Brooks, and more.",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "url": "https://yourstore.com/products/nike-air-max-270"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "url": "https://yourstore.com/products/adidas-ultraboost-22"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "url": "https://yourstore.com/products/brooks-ghost-14"
    }
  ]
}

List the top products on the category page in priority order. Do not list every product — 5-10 is sufficient. The full product list is available to Google through crawling; schema just explicitly signals the relationships.


7. Organization Schema for Trust Signals

Organization schema on your homepage provides Google with authoritative information about your business. While it does not directly produce rich results, it contributes to E-E-A-T signals and Google’s understanding of your brand.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your Store Name",
  "url": "https://yourstore.com",
  "logo": "https://yourstore.com/images/logo.png",
  "sameAs": [
    "https://www.facebook.com/yourstorename",
    "https://www.instagram.com/yourstorename",
    "https://twitter.com/yourstorename"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-800-XXX-XXXX",
    "contactType": "customer service"
  }
}

The sameAs property links your schema entity to your social profiles, helping Google confirm that these profiles belong to the same business.


8. How to Test Schema Markup

Google Rich Results Test: search.google.com/test/rich-results
The primary tool for verifying schema markup. Enter your URL or paste the HTML. It shows:
– Which schema types were detected
– Which rich result features are eligible
– Any errors (invalid property values, missing required fields)
– Any warnings (non-critical issues that may limit feature eligibility)

Schema.org Validator: validator.schema.org
Validates schema against the schema.org specification. Use this alongside Google’s tool — sometimes Google’s guidelines are stricter than schema.org spec on specific fields.

Google Search Console → Enhancements section:
Once you have schema implemented on live pages, GSC tracks rich result status across your entire site. It shows:
– Valid items: schema is correct, rich results eligible
– Valid with warnings: schema is valid but some optional fields are missing
– Errors: schema has issues preventing rich results

Check the Enhancements section weekly after initial implementation. Common errors surface here before they become traffic issues.


9. Common Schema Errors and How to Fix Them

Error: “Missing field ‘image’”
Product schema requires at least one image URL. Verify the image field contains an absolute URL (starting with https://), not a relative path.

Error: “The value of field ‘availability’ must be a valid URL”
You are using a string like "InStock" instead of "https://schema.org/InStock". Replace with the full schema.org URI.

Error: “The value of ‘price’ must be a number”
Price should be a number (string or numeric), not include currency symbols. "price": "$149.99" is invalid — use "price": "149.99".

Error: “The value of field ‘ratingValue’ must be between 1 and 5”
If your rating scale is not 1-5, include bestRating and worstRating to define your scale. Example for a 1-10 scale: "ratingValue": "8.2", "bestRating": "10", "worstRating": "1".

Warning: “Either ‘offers’, ‘review’, or ‘aggregateRating’ should be specified”
You have Product schema but none of the three recommended properties. Add offers at minimum to unlock price rich results and move toward star rating eligibility.

Price mismatch policy violation:
If Google detects that the price in schema does not match the visible page price, it can remove your product from Shopping free listings and suppress rich results. Keep prices dynamic — update schema programmatically whenever the product price changes.


10. Interactive Tools

Product Schema Generator

Fill in your product details to generate ready-to-paste JSON-LD schema markup.












Schema Implementation Checklist

Validate your schema implementation across all required schema types.

0 of 0 complete


FAQ

Do I need schema markup if I’m already ranking well?
Schema markup does not directly improve rankings — it unlocks rich result features (stars, price, breadcrumbs) that improve click-through rate from your existing ranking positions. If you are ranking on page 1 without schema, adding schema typically increases your CTR and therefore your traffic, often improving rankings further due to the positive click signals.

How do I add schema to Shopify?
The simplest approach is a schema app (Schema Plus for SEO, JSON-LD for SEO by Tapita, or Rich Results by Booster Apps). For hands-on control, add JSON-LD directly to your product.liquid template. Shopify’s 2.0 themes (Dawn, etc.) include basic Product schema by default but usually miss AggregateRating and some Offer fields.

My schema tests clean but I still do not see star ratings in search results. Why?
Several reasons: (1) Not enough reviews — Google generally requires a meaningful number of verified reviews; (2) Reviews are self-generated, not from real buyers; (3) Google may not have re-crawled and processed the page yet — allow 2-4 weeks; (4) The search query context — stars do not display for every search result, even with valid schema.

Can I add fake reviews to my AggregateRating schema?
No. Google’s guidelines explicitly prohibit fabricated or incentivized reviews in schema markup. Violations result in removal of rich results, and in severe cases, manual actions. AggregateRating must reflect genuine verified customer reviews.

Should I use JSON-LD or Microdata for schema?
JSON-LD is Google’s recommended format and significantly easier to implement and maintain. Microdata requires embedding schema attributes throughout your HTML. Use JSON-LD — add a <script type="application/ld+json"> block to your page head, and manage it separately from your HTML.

How often should I update product schema?
Prices and availability should update dynamically — every time the product price changes or goes out of stock, the schema must reflect that immediately. Review counts update automatically if you use a review platform that generates dynamic schema. Static schema hardcoded in templates must be monitored and updated manually when prices change.


Conclusion

Schema markup is the clearest signal you can send to Google about what your product pages contain. Rich results — star ratings, price displays, breadcrumb navigation — are concrete, measurable advantages over competitors who have not implemented structured data.

The implementation is a one-time technical lift: add JSON-LD to product templates, include all recommended fields, connect your review platform to populate AggregateRating dynamically. Test with Google’s Rich Results Test, monitor GSC’s Enhancements section, and keep prices and availability current.

Every product page your competitors leave un-schema’d is an opportunity for your listing to stand out with enhanced rich result features. In a competitive SERP where multiple stores sell the same products, that visual differentiation at the search result level drives real click and revenue differences.


Ready to Grow Your Ecommerce Store?

We build ecommerce SEO systems — from product schema to category architecture to Shopping integration. → Request an Ecommerce SEO Audit


Written by the Ignited Nepal ecommerce team. ignitednepal.com

NR

Article by

Niraj Raut

Head of Search at Ignited Nepal. Drove 340% organic traffic growth for EzyDog (Australia), 4× revenue for The Turf Man (Australia), and 120% month-on-month traffic growth for ThemeGrill (Nepal). Keynote speaker at WordCamp Nepal 2023 and verified WordPress.org open-source contributor.