Structured data for products: rich results explained

Price, stock and rating in search results come from product structured data. What it must contain, how to check it, and where stores go wrong.

3 minread 673words last updated

The short answer

When a search result shows a product’s price, whether it is in stock and its star rating directly in the listing, that information came from structured data on the product page: a machine-readable block describing the product in a standard vocabulary. Search engines read it to build rich results; AI systems read it to answer questions about your products accurately. It must match what the visible page says, it must be complete enough to qualify, and it must not be duplicated or contradicted by blocks that apps inject. Themes generate a starting version. Almost every store has something to fix in it, and the check takes ten minutes.

What the block should contain

FieldWhyCommon problem
Name, description, imageIdentifies the productImage missing or a tiny thumbnail
BrandTrust and matchingAbsent
Identifiers: SKU, GTIN or MPNMatches your product to the same product elsewhereAbsent, or a placeholder
Offer: price, currency, availability, URLThe rich result itselfPrice out of sync with the page; availability always “in stock”
VariantsSizes and colours as separate offers or a groupOne variant’s data shown for all
Rating and review countStars in the listingInjected by an app as a second block that conflicts with the theme’s
Shipping detailsCost and delivery time shown in resultsAbsent
Return policyShown in results in some regionsAbsent

Checking and fixing it

  1. Open a product page in the search engine’s rich results testing tool and read what it found.
  2. Compare with the visible page: price, availability, rating must match exactly.
  3. Look for duplicates: two product blocks, one from the theme and one from a review or upsell app, is the most common fault.
  4. Fill the gaps: identifiers, brand, shipping, returns, from the store’s settings and product data.
  5. Handle variants so each has its own price and availability.
  6. Recheck after every app install or theme update, because both change the output.
  7. Watch the search console for product enhancement reports and errors.

On a headless storefront

When the storefront is built separately from the commerce platform, the structured data is generated by the storefront from the same product data that renders the page, which is the cleanest possible arrangement: one source, no app injecting a conflicting block, every field controllable. It is one of the quieter advantages of building the storefront yourself.

What this means for you

Product structured data is how your prices, stock and ratings reach search listings and AI answers. Make it complete, consistent with the page, free of duplicates and generated from the same source as the visible product. Validate once per template and after every app change. It is a small, mechanical task with a visible effect on the listings your customers see before they ever reach your store.

Written by the CivSec S.M.A.R.T team

We build and run websites, software and AI systems for businesses. We write about what we see in that work, in plain language, and we update articles when things change.

Last checked . Spotted something outdated? Tell us.

Frequently asked questions

Our theme already adds structured data. Is that enough?

Often it is a start with gaps: missing identifiers, no shipping or return details, ratings from an app injected as a second conflicting block, variants mishandled. Validate a product page with the search engine's testing tool and read what is present, what is missing and what is duplicated. Ten minutes of this usually turns up something worth fixing.

Do rich results actually change sales?

A listing showing price, in-stock status and a rating stands out against plain listings and pre-qualifies the click: the visitor already knows the price and availability. Measured effects vary by category, but the click-through improvement is consistent enough that the effort is justified, and the same data feeds AI answers about your products.

What about collection and category pages?

Product structured data belongs on product pages. Collection pages can carry list markup and breadcrumbs, and the store itself carries organisation markup. Putting full product data on a collection page for every product is discouraged and usually counterproductive; keep each type where it belongs.

Sources

  1. Google Search Central: Product structured data (accessed 2026-09-12)
  2. Schema.org: Product (accessed 2026-09-12)