Ecommerce SEO

Product Schema for Ecommerce: A Complete Guide With Examples

How to add Product, Offer, review, shipping and return policy structured data to an online store, keep it in sync with Merchant Center, and test it.

Lou HewieQube Digital
  • Updated
  • 3 min read
Key takeawaysTL;DR
  • Product structured data tells search engines the name, price, availability, brand and reviews of a product in a format they can read without guessing.
  • Google supports two kinds of product rich results: product snippets for review-style pages and merchant listings for pages where the product can be bought.
  • Include identifiers (brand, GTIN or SKU), offers, reviews, shipping details and return policy for the best eligibility.
  • The data in your markup, on the page and in Merchant Center should match. Mismatches cost visibility.
On this page7 sections
  1. What kinds of product rich results are there?
  2. Which properties should you include?
  3. What does a complete example look like?
  4. How do you handle variants?
  5. How do you keep schema, pages and feeds in sync?
  6. How do you test product schema?
  7. Does product schema help with AI search?

Product schema is structured data that describes each product in a format search engines can read without guessing: its name, image, brand, identifiers, price, availability, reviews, shipping and returns. It makes products eligible for rich results in Google, keeps Google Shopping accurate and gives AI shopping assistants the details they need to match products to questions.

What kinds of product rich results are there?

Google documents two types:

  • Product snippets for pages that review or discuss a product, showing ratings and price ranges.
  • Merchant listings for pages where a shopper can buy the product, which can show price, availability, shipping and returns, and appear in shopping experiences across Google.

Most online stores should aim for merchant listing eligibility on product pages.

Which properties should you include?

Property Why it matters
name, image, description The basics every product needs
brand Helps match brand searches and comparisons
gtin, mpn or sku Identifies the exact product across sellers
offers.price, priceCurrency Price shown in results
offers.availability In stock, out of stock, preorder
offers.itemCondition New, used or refurbished
aggregateRating, review Review stars and trust
shippingDetails Delivery cost and time to each country
hasMerchantReturnPolicy Return window and method

What does a complete example look like?

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Oud Noir Eau de Parfum 100 ml",
  "image": ["https://yourstore.com/images/oud-noir-100ml.jpg"],
  "description": "A long-lasting oud with amber and smoked wood.",
  "sku": "OUD-NOIR-100",
  "gtin13": "0000000000000",
  "brand": { "@type": "Brand", "name": "Your Brand" },
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.8", "reviewCount": "412" },
  "offers": {
    "@type": "Offer",
    "url": "https://yourstore.com/products/oud-noir",
    "priceCurrency": "USD",
    "price": "128.00",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "GB" },
      "shippingRate": { "@type": "MonetaryAmount", "value": "0", "currency": "USD" }
    },
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "GB",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30
    }
  }
}

Replace the placeholder GTIN with the real barcode number. Delivery times can be added with deliveryTime, and Google also supports shipping and return policies defined once at the organisation level instead of on every product.

How do you handle variants?

If sizes or colours share one URL, you can describe them with ProductGroup and hasVariant, with each variant listing its own SKU, price and availability. If each variant has its own URL, each page gets its own Product markup. Either way, the price and availability in the markup should match what the shopper sees.

How do you keep schema, pages and feeds in sync?

The most common problem we find is not missing markup but mismatched data: a sale price on the page, the old price in the markup and a third price in Merchant Center. Generate all three from the same source (your platform’s product data) rather than hard-coding values in a theme or plugin.

How do you test product schema?

  1. Rich Results Test for a single URL, to see eligibility and warnings.
  2. Search Console enhancements reports for Product snippets and Merchant listings, to see errors across the store.
  3. Merchant Center diagnostics, to spot price or availability mismatches between feed and page.

AI assistants lean on structured product data to answer detailed questions: size, material, price, delivery and returns. Complete markup does not guarantee a recommendation, but thin or wrong data makes one unlikely. See how to get products into ChatGPT Shopping.

Structured data is one piece of ecommerce SEO. For the full process, read our ecommerce SEO guide or see our ecommerce SEO services.

Frequently asked questions

What is product schema?

Product schema is structured data, usually written in JSON-LD, that describes a product in a standard vocabulary from schema.org: its name, image, brand, identifiers, price, availability, reviews, shipping and returns.

Does product schema improve rankings?

Structured data is not a direct ranking factor, but it makes products eligible for rich results such as price and review stars, which can lift click-through rates. It also gives Google Shopping and AI assistants accurate product details.

Should I use JSON-LD or microdata?

Google supports both, but recommends JSON-LD because it is easier to maintain and does not have to be woven into the HTML.

Do Shopify and WooCommerce add product schema automatically?

Most themes and SEO plugins add basic Product markup. It is often missing brand, GTIN, shipping details and return policy, so check it with Google's Rich Results Test.

Sources

  1. Google Search Central: Introduction to Product structured data
  2. Google Search Central: Merchant listing structured data
  3. Google Search Central: Product snippet structured data
  4. Google Search Central: Shipping policy structured data
  5. Google Search Central: Return policy structured data
  6. Google Merchant Center: Product data specification
Lou Hewie
Written by

Lou Hewie

Lou writes Qube Digital’s guides on SEO and AI search for ecommerce brands and UAE businesses.

Free strategy call

Find out where you rank, and where AI leaves you out.

A free 30-minute call. We review your site, your competitors and your AI visibility live. No pitch deck. You keep the notes.

Book your free strategy call →
Call agenda30 min
  1. 00:00Your goals and current numbers
  2. 05:00Live site and competitor review
  3. 15:00AI visibility spot-check
  4. 25:00Quick wins and a realistic plan