Google product schema: the properties that matter, a copyable block, and the mismatch that breaks it

Product structured data for snippets and merchant listings, how to handle variants with ProductGroup, and the review rules Google enforces.

Published by AI Knows Us · Updated 12 October 2026

Google product schema is Product structured data, usually written as JSON-LD in the head of a product page, that tells Google the name, image, identifier, price, availability, shipping and returns terms and review data for an item. Add it correctly and the page becomes eligible for product rich results: price and availability in the search listing, review stars, and merchant listing experiences such as the Shopping tab and Google Images. The markup must describe exactly what a shopper sees on the page, because Google cross checks the two.

Two different experiences, two sets of requirements

Google documents product structured data as two experiences, and knowing which you are aiming at saves a lot of confusion:

  • Product snippets. Enhanced listings for a page about a product, including review stars. Found on retailer pages and also on reviews and comparison content.
  • Merchant listing experiences. Your product shown where Google surfaces items that can be bought directly, which needs offer data including price, currency, availability, and benefits from shipping and returns detail.

The property names are the same. Merchant listings simply require more of them, and require them to be right.

The properties that do the work

PropertyStatusNotes
nameRequiredThe product name a shopper sees, without marketing additions
imageRequired for rich resultsFull URLs, the product only, no overlaid text or badges
offersRequired for merchant listingsOffer with price, priceCurrency, availability, itemCondition and the product URL
gtin, mpn, sku, brandStrongly recommendedIdentifiers are how Google matches your item to the same product elsewhere
aggregateRating, reviewOptionalOnly for reviews genuinely collected and visible on that page
shippingDetails, hasMerchantReturnPolicyRecommendedMakes delivery and returns terms eligible to appear with the listing
descriptionRecommendedThe real product description, not keywords

A copyable block

Put this in the page head, with your own values. Keep every value identical to what the page displays.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trailhead Waterproof Walking Boot",
  "image": [
    "https://example.com/img/boot-1x1.jpg",
    "https://example.com/img/boot-4x3.jpg"
  ],
  "description": "Full grain leather walking boot with a waterproof membrane and a wide fit last.",
  "sku": "TH-WB-204",
  "gtin13": "0614141999996",
  "brand": { "@type": "Brand", "name": "Trailhead" },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/boots/trailhead-waterproof",
    "price": "149.00",
    "priceCurrency": "GBP",
    "itemCondition": "https://schema.org/NewCondition",
    "availability": "https://schema.org/InStock",
    "priceValidUntil": "2027-03-31",
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "GB",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30,
      "returnMethod": "https://schema.org/ReturnByMail",
      "returnFees": "https://schema.org/FreeReturn"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "118"
  }
}
</script>

The values above are placeholders to show the shape. Replace all of them, including the identifier, and never publish a rating you did not collect.

Variants: use ProductGroup

A page that sells one boot in six sizes and three colours should not pretend to be one product with one price. Google supports ProductGroup for this: the group carries the shared information and a productGroupID, variesBy names the attributes that differ, and each variant is a Product with its own sku, identifier, price and availability inside hasVariant. This is what lets the right size and colour be surfaced at the right price instead of a single from price.

Review markup, done the way Google allows

  • Mark up only reviews that are visible on that page and that were written by customers or by an independent reviewer.
  • Never mark up ratings you averaged from other sites, invented, or placed in the markup but not on the page.
  • Self serving reviews, where a business marks up a review of its own entity on its own site, are not eligible. Product reviews on your own product pages are fine.
  • If you remove reviews from the page, remove them from the markup the same day.

The mistakes that cost rich results

  • Price mismatch. Markup says one figure, the page shows another, usually because of a cached template, a members price or tax treatment. This is the single commonest reason product rich results stop showing.
  • Markup on category pages. Product markup belongs on a page about a single product. Use ItemList for listing pages.
  • Images blocked by robots.txt, so Google can see the markup but never the picture.
  • availability guessed. If the page says out of stock, the markup must say OutOfStock.
  • Markup injected after load by a tag manager, where it is unreliable. Put it in the server rendered HTML.
  • Different data in markup, feed and page. Pick one source of truth and generate all three from it.

Test it, then watch it

Validate with Google's Rich Results Test for eligibility and with the Schema Markup Validator for syntax. After deployment, use the Product snippets and Merchant listings reports in Search Console, which show errors and warnings across the whole catalogue rather than one URL at a time. Check after every template change and every platform update, because markup breaks silently when a theme is edited.

This page covers Product structured data on your own pages. For sending the same data to Google as a feed, read a guide on Google Merchant Center, which uses the same facts in a different format.

Questions buyers ask about google product schema

Does product schema improve rankings?

Structured data is not a ranking factor by itself. What it does is make the page eligible for richer listings that take more space and give a shopper price, stock and review information before the click, which is why pages with correct markup tend to earn more of the clicks available.

Is JSON-LD better than microdata for products?

Google supports JSON-LD, microdata and RDFa, and recommends JSON-LD. It is easier to generate, easier to audit and does not get broken by front end template edits.

Do I need a GTIN in the markup?

Supply it where the product has one, because identifiers help Google match your item to the same product elsewhere. For handmade or own brand items with no GTIN, give brand plus sku or mpn.

Can I use product schema for a service?

No. Use Service, or Offer inside the relevant type. Marking a service up as a Product is a misrepresentation of the page and can cost you eligibility across the site.

How do I handle prices that change often?

Generate the markup from the same system that prints the price on the page, so they cannot diverge, and keep priceValidUntil current. For frequent changes, server side generation at request time is the reliable approach.

My markup is valid but no rich result appears. What now?

Rich results are eligibility, not entitlement. Confirm the page is indexed, confirm the markup is in the rendered HTML Google sees, check the Search Console enhancement report for warnings on the missing recommended properties, and make sure the page is a single product page with a visible price and availability.

The product answer that reads your page, not your feed

Shoppers now ask assistants to do the comparison. ChatGPT, Gemini and Perplexity answer "which walking boot suits wide feet" with a written recommendation naming products and retailers, built from the pages and sources those systems read. Clean, accurate product data on your own pages is exactly what makes a product describable in that answer, and no structured data testing tool reports on whether you appear in it. AI Knows Us tests which assistants name a business when buyers ask and shows what each answer was assembled from, with a free scan at aiknowsus.com.

Read next

Or browse the whole archive.

See what AI says about you.

The first scan is free, it needs no account, and it asks the questions your buyers ask.

Free. No card. We ask 5 real buyer questions on 2 AI apps.

Already sure you want this? Join the waitlist. We open on 31 October 2026. It costs an email address. No card, and nothing is charged. Or talk to a person if you have a question first. Or read how we fix what it finds.