Structured DataMay 1, 202610 min read

Product Schema Markup for Ecommerce: The Complete 2026 Guide

Product schema is the difference between a plain blue link and a rich result with stars, price, and stock status. Here's the spec, the required vs. recommended fields, and the validation workflow.

StoreVitals Team

Two product pages, identical content, identical authority. One ranks with a plain blue title and meta description. The other ranks with stars, price, "In stock," and a thumbnail. Same position; very different click-through rate.

The difference is Product schema markup. It's structured data, written in JSON-LD, that tells Google exactly what your page is selling — and Google rewards it with richer search results that earn 2-3x the CTR of plain results.

Most ecommerce platforms emit some Product schema by default. Most of what they emit is incomplete, and the missing fields are exactly the ones that unlock rich results.

The Spec, in Order of Importance

Product schema is defined at schema.org/Product. Google's ingester reads a subset and uses additional fields for rich results. The fields, ranked by impact:

Required (no rich results without these)

  • name — product name. The single non-negotiable field.
  • image — at least one image URL. Google requires multiple images at high resolution (1200x1200 ideal) for the best visual rich results.
  • offers — at minimum, an Offer object with price, priceCurrency, and availability. Without this, Google treats your page as informational, not commercial.

Strongly recommended (unlocks star ratings)

  • aggregateRating — overall rating object with ratingValue and reviewCount. This is what produces the gold stars in search results. Requires real review data, not invented ratings (Google penalizes fake reviews aggressively).
  • review — individual Review objects, optionally. Helpful for surfacing review excerpts in rich results.

Recommended (improves matching and feed quality)

  • brand — Brand object with name. Affects matching to Google Shopping product database.
  • sku — your internal stock-keeping unit.
  • gtin / gtin13 / gtin8 / mpn — globally unique product identifiers (UPC, EAN, ISBN, MPN). Critical for matching to manufacturer data and unlocking richer Google Shopping treatment.
  • description — product description, typically the first 150-300 chars.
  • category — Google Product Taxonomy category if you have it.

The Offers Object: Where Most Stores Get It Wrong

The offers field is where the technical detail lives. Two patterns:

Single Offer (one variant, one price)

"offers": {
  "@type": "Offer",
  "url": "https://store.com/product/blue-widget",
  "priceCurrency": "USD",
  "price": "29.99",
  "priceValidUntil": "2026-12-31",
  "availability": "https://schema.org/InStock",
  "itemCondition": "https://schema.org/NewCondition"
}

AggregateOffer (multiple variants/prices)

"offers": {
  "@type": "AggregateOffer",
  "lowPrice": "19.99",
  "highPrice": "49.99",
  "priceCurrency": "USD",
  "offerCount": "5",
  "availability": "https://schema.org/InStock"
}

Common mistakes:

  • Missing priceCurrency — without it, Google can't show price in rich results.
  • availability as a string ("In Stock") instead of a schema.org URL (https://schema.org/InStock). Use the URL form.
  • Stale priceValidUntil — if you set this to a past date, Google may suppress the price from rich results. Either set a future date or omit the field.
  • Currency mismatch with the page — if your page renders prices in EUR but JSON-LD says USD, Google flags it as a data inconsistency.

Reviews and the Trust Trap

Star ratings in search results are gold for CTR — and Google polices them aggressively. The rules:

  • aggregateRating must reflect actual reviews collected on your site. You cannot import third-party Trustpilot ratings into your Product schema — those go in Organization schema as a brand-level signal.
  • reviewCount must match the visible reviews on the page. If schema says 247 reviews and the page only shows 12, Google treats it as misleading markup.
  • Self-serving reviews (paid, fake, or staff-written) violate Google's structured data policies. Penalty: removal of all rich results across the entire domain, not just the offending page.

If you don't yet have organic review data, leave aggregateRating out. Adding it later when you have real reviews is fine. Faking it now is a domain-wide risk.

Variants and Multi-SKU Pages

For products with size/color variants on a single URL, you have two clean options:

  1. Single Product schema with AggregateOffer — best for pages where variants share the same name and most attributes (e.g., "T-Shirt" with sizes S/M/L/XL).
  2. ProductGroup schema (introduced 2022) — formal way to declare a group with member Product entries, each with their own SKU, GTIN, and Offer. Better for products with meaningful variant differences.

Both work. ProductGroup is the more correct modern pattern, but Shopify, WooCommerce, and most platforms still emit Single Product + AggregateOffer by default — that's fine.

The Validation Workflow

Three tools, in order:

  1. Google Rich Results Test (search.google.com/test/rich-results) — paste a URL, see what rich result types Google detects and any required-field warnings. The authoritative tool.
  2. Schema.org Validator (validator.schema.org) — broader spec compliance check. Catches schema-level errors that Google's tester might tolerate.
  3. StoreVitals Product Schema Generator (store-vitals.com/tools/product-schema) — fill in product fields, get production-ready JSON-LD with all required and recommended fields. Useful when adding schema to a custom-built page or fixing what your CMS emits.

Workflow: build the schema, validate it in Rich Results Test, deploy, monitor Search Console's "Enhancements → Products" report for warnings. Fix warnings within 24 hours — Google reduces rich result eligibility for pages with persistent schema errors.

The CTR Math

Industry benchmarks for rich vs. plain product results in SERPs:

  • Plain blue link, position 1-3: ~25-30% CTR
  • Rich result with stars + price, position 1-3: ~45-55% CTR
  • Rich result with image carousel, position 1-3: ~55-65% CTR

For a store doing 100k organic clicks per month, a 1.5x CTR uplift on rich results is 50k additional clicks. The work is one-time schema markup. The compounding return is permanent.

Bottom Line

Product schema is the single highest-ROI structured data investment for ecommerce. Most platforms emit something; most of what they emit is incomplete. Audit your top 20 product pages this week. Add the missing fields (most commonly: brand, gtin, aggregateRating with real data, complete offers object). Validate with Rich Results Test. Watch the rich result coverage in Search Console grow over the next 4-8 weeks.

If you're starting fresh on a custom build, use the StoreVitals Product Schema Generator as your starting point — it includes every field Google looks at, in the right format, with example values to replace.

product schemastructured dataJSON-LDrich resultsecommerce SEO

See these issues on your store?

Run a free scan and find out in seconds.

Run Free Scan