E-commerce

Product Schema Markup for WooCommerce & Online Stores

For an online store, the difference between a plain blue link and a listing that shows price, "In stock," and a row of review stars is often the difference between a click and a scroll-past. Product schema markup is what makes that richer listing possible. It hands Google (and increasingly, AI shopping assistants) a structured description of exactly what you're selling, what it costs, and whether it's available right now.

Get Started Free

What is Product schema?

Product schema is structured data (JSON-LD) that describes an individual product to search engines. The core Product type carries identity, name, image, brand, SKU, and nests two other important types: Offer, which holds price, currency, and availability, and AggregateRating, which holds your review score and count.

Together these tell Google enough to generate a product rich result: the enhanced snippet that can display price, stock status, and star ratings directly in search. On the shopping side, the same structured data underpins your eligibility for merchant listing experiences.

Why online stores need Product schema

Rich results win the click

A product snippet showing price and availability takes up more space and communicates more value than a standard result. It qualifies your listing for review stars, which lift click-through in a crowded SERP.

Shopping and merchant surfaces

Google increasingly blends free product listings into search. Clean Product markup with accurate price, availability, and identifiers is the baseline for appearing in these surfaces.

AI shopping citations

When someone asks an AI assistant "what's a good trail running shoe under $150," the systems that answer lean on structured product data to understand price, specs, and availability. A store whose products are cleanly marked up is far easier for an answer engine to surface and cite than one where that information lives only in page copy.

A complete Product JSON-LD example

Here's correct markup for a single product, including offer and rating data:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "@id": "https://example.com/products/trailblaze#product",
  "name": "TrailBlaze Running Shoes",
  "image": "https://example.com/images/trailblaze.jpg",
  "description": "Lightweight trail running shoes with responsive cushioning.",
  "sku": "TB-2200",
  "brand": { "@type": "Brand", "name": "TrailBlaze" },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/trailblaze",
    "priceCurrency": "USD",
    "price": "129.00",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "priceValidUntil": "2026-12-31"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "218"
  }
}

offers.price + priceCurrency must match the price shown on the page exactly. A mismatch is the fastest way to lose the rich result.

availabilityshould reflect real stock (InStock, OutOfStock, PreOrder). This is what powers the "In stock" line.

sku / gtin / brand are product identifiers that help Google match your item to the wider catalog and to shopping surfaces.

aggregateRating must correspond to reviews that are genuinely visible on the page.

Product snippet vs merchant listing: two different rich results

Most ecommerce schema guides treat "Product schema" as one thing. Google doesn't. There are two distinct rich results, with different requirements, and knowing which you're targeting changes what you need to mark up.

Product snippet

The enhanced search listing: review stars, ratings, price, and basic availability attached to your organic result. This is the baseline most stores want.

Merchant listing

The richer commercial experience, and it's where shopping surfaces pull from. It expects more: detailed pricing, shipping, and return information rather than just a price and a stock status.

Google documents a family of markup around merchant listings that most stores never implement:

Merchant return policy

Return window, method, and fees.

Merchant shipping policy

Shipping costs and delivery estimates.

Loyalty program

Member pricing and loyalty point benefits.

Variants

Size, colour, and configuration handling.

Shipping and return details aren't optional extras here; they're part of what qualifies a listing for the fuller merchant treatment. If you compete on free shipping or a generous return window, marking that up puts it in front of shoppers at the moment they're comparing, rather than burying it on a policy page.

Product variants and identifiers

If a product comes in multiple variants (sizes, colors, configurations), model them with ProductGroup and hasVariant so each variant carries its own price, availability, and identifier rather than collapsing into one ambiguous listing. Google publishes dedicated variant guidance, and getting this wrong is one of the most common reasons a catalog underperforms in shopping surfaces.

For serious shopping visibility, include a global identifier (gtin, mpn) wherever you have one; these help Google confidently connect your listing to the exact product.

How to add Product schema in WooCommerce

Doing this by hand across a catalog is impractical: prices, stock, and ratings change constantly, and static markup goes stale the moment they do. You have three realistic paths.

1. Manual JSON-LD

Per product. Unmanageable at scale and immediately outdated.

2. A general SEO plugin

Coverage varies, and product-specific fields are often thin.

3. Generate it automatically with AI Schema Gen

Reads live WooCommerce data, price, availability, and ratings, and keeps the markup in sync as they change.

If you're weighing option 2, our AI Schema Gen vs Rank Math comparison shows exactly where the gaps are for WooCommerce stores.

With AI Schema Gen the flow is:

  1. 1Install the plugin and connect your free account.
  2. 2Point it at your product pages, it pulls price, availability, and rating straight from WooCommerce.
  3. 3Generate complete Product schema with correct Offer and AggregateRating nesting.
  4. 4Enable auto-apply so markup regenerates when stock or price changes.
  5. 5Validate before publishing.

Setup specifics live in the documentation.

Common mistakes that break Product rich results

Price mismatch

Between schema and the visible page. This alone can suppress the rich result.

Stale availability

Marking everything InStock regardless of real stock.

Review markup with no visible reviews

aggregateRating must reflect ratings shown on the page; inventing them risks a manual action.

Marking up category or listing pages as a single Product

Product markup belongs on individual product pages.

Missing identifiers

No SKU, GTIN, or brand makes it harder for Google to trust and match your listing.

Ignoring priceValidUntil

Which can cause Google to treat a price as expired.

Product schema and AI search

Shopping is one of the fastest-moving areas of AI search. Comparison questions such as "which of these is cheaper," "what's in stock near me," or "best rated option under $X" are answered by systems that need structured, trustworthy product data to respond. A catalog with accurate, consistently maintained Product schema is positioned to be surfaced and cited in those answers, not overlooked. The same entity-clarity principle applies whether you sell physical goods, software, or serve a local market.

Frequently Asked Questions

Turn plain product pages into rich, citable listings

Free plan includes 30 AI generations per month. No credit card required.

Explore more use cases.