โ€ข 8 min read

Schema Markup for Ecommerce: Product, Offer & Review

schema ecommerce rich results

Schema markup turns plain HTML into rich data that search engines can show in special results, the price under your product, the star rating, the in-stock badge. For ecommerce, getting Product, Offer, and Review right is the difference between a boring blue link and an eye-catching listing that doubles your CTR.

What schema actually does for commerce sites

  • Triggers product rich results: price, availability, rating, review count visible directly in search.
  • Powers Google Shopping free listings via the Merchant Center feed.
  • Feeds Google Lens and visual search.
  • Without it, Google guesses, and often gets it wrong.

The minimum viable Product schema

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Acme Wireless Headphones",
  "image": "https://example.com/img/headphones.jpg",
  "description": "Over-ear noise-cancelling wireless headphones with 30-hour battery life.",
  "sku": "AC-WH-100",
  "brand": {
    "@type": "Brand",
    "name": "Acme"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/acme-wh-100",
    "priceCurrency": "USD",
    "price": "129.00",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  }
}
</script>

Adding Reviews and AggregateRating

This is where rich results get visually loud. Stars in the SERP boost CTR by 20-30% at the same position.

{
  "@type": "Product",
  "name": "Acme Wireless Headphones",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "847"
  },
  "review": [
    {
      "@type": "Review",
      "author": { "@type": "Person", "name": "Jamie L." },
      "datePublished": "2026-03-12",
      "reviewBody": "Battery life is the real deal, three flights, no charge.",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5"
      }
    }
  ]
}

Critical rule: the rating must come from real, on-page user reviews. Google penalizes sites that markup ratings that don't appear visibly on the page.

Offer details that matter

  • availability: InStock, OutOfStock, PreOrder, Discontinued, BackOrder. Always full URLs from schema.org.
  • priceValidUntil: required if you have a sale price. Format: YYYY-MM-DD.
  • shippingDetails: shipping rate and delivery time. Required for free shipping badges in some countries.
  • hasMerchantReturnPolicy: critical for Shopping listings. Returns days, fees, method.

Variants: AggregateOffer

One product, multiple SKUs (sizes, colors)? Use AggregateOffer on the parent and Offer per variant on each detail page.

{
  "@type": "Product",
  "name": "Acme Sneakers",
  "offers": {
    "@type": "AggregateOffer",
    "priceCurrency": "USD",
    "lowPrice": "79.00",
    "highPrice": "99.00",
    "offerCount": "12",
    "availability": "https://schema.org/InStock"
  }
}

Categories and Breadcrumbs

Pair Product with BreadcrumbList on every product page. Google uses it for the path display in search results.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
    { "@type": "ListItem", "position": 2, "name": "Audio", "item": "https://example.com/audio" },
    { "@type": "ListItem", "position": 3, "name": "Acme Wireless Headphones" }
  ]
}

FAQ schema for product Q&A

If you have a real Q&A section on the product page, add FAQPage schema. Google may surface it as expandable FAQs in the SERP, though Google narrowed FAQ rich results in 2023, they still appear for authoritative sites.

Validation workflow

  1. Render your page.
  2. Copy the page URL into Google's Rich Results Test.
  3. Check for errors AND warnings, warnings often hide the rich result.
  4. Cross-check with the Schema.org validator for spec compliance.
  5. Monitor "Enhancements" reports in Google Search Console weekly.

Common mistakes

  • Marking up ratings that don't appear on the page โ†’ manual penalty.
  • Missing priceValidUntil on sale prices โ†’ loss of rich result.
  • Wrong currency code (use ISO 4217: USD, EUR, GBP, TRY).
  • Generic image URL that doesn't represent the product.
  • Schema in HTML comments or hidden divs, must be in <script type="application/ld+json">.

How AuditAI helps

Our scanner detects all major schema types on every page, validates them against Schema.org spec, and flags missing rich-result eligibility. Audit your store free โ†’

Ready to audit your site?

Run an AI-powered SEO audit in under 30 seconds. Free, no signup required.

Run a free audit โ†’