SEO

Structured Data for Ecommerce: The Schema Markup That Actually Earns Rich Results

Schema markup doesn't move rankings directly, but it decides whether a search result shows a price, a star rating and stock status — or just a plain blue link. The specific schema types worth implementing, and the mistakes that get them ignored.

BangkokSync6 min read

Two product pages can rank in the same position on a Google search results page and still perform completely differently — one showing a price, a star rating, and "In Stock" directly in the search result, the other showing nothing but a title and a snippet of text. The difference is almost never ranking. It's structured data: machine-readable markup embedded in the page that tells Google specifically what a price field, a review count, or a stock status actually means, rather than leaving Google to guess from the visible text.

What structured data actually does, and doesn't do

Schema markup (most commonly implemented as JSON-LD, a script block in the page's HTML) doesn't directly improve a page's ranking position — Google has said this plainly, and it's worth internalising because a lot of structured-data effort gets justified on the wrong premise. What it does is make a page eligible for rich results: the star rating, price, and stock status shown directly in search, or a FAQ accordion expanding under a result. Two listings in the same position have measurably different click-through rates when one shows this extra information and the other doesn't — the ranking is the same, but the result that looks more complete and trustworthy gets clicked more.

Product schema is the highest-leverage type for ecommerce

The Product schema type, usually paired with Offer for price and availability and AggregateRating for review data, is what makes a product listing eligible to show price, stock status, and star rating directly in search results. The specific fields that matter most:

  • price and priceCurrency — accurate, current, and matching what the page actually shows, since a mismatch between schema and visible price is both a trust problem and a policy violation Google actively checks for.
  • availability — InStock, OutOfStock, or PreOrder, kept genuinely current; a page that markets InStock but is actually sold out is exactly the kind of mismatch that erodes trust in rich results generally, not just for that one listing.
  • aggregateRating — requires real review data actually present on the page, not just numbers injected into the schema with no visible reviews backing them; Google's guidelines specifically prohibit fabricated or undisclosed review data, and this is one of the more actively enforced rules.

Review schema needs genuine reviews behind it

Review and AggregateRating schema markup is only valid when real review content is visibly present on the page — not a rating pulled from somewhere else and attached to a product that has no actual reviews shown. This is one of the more common structured-data violations, usually not malicious but careless: a theme or app adds review schema by default, populated from aggregate data that doesn't actually appear anywhere a visitor can see it. Google's manual actions for this specifically target review-rich-result abuse, and the penalty is losing rich results sitewide, not just for the offending product.

Breadcrumb schema is low-effort and consistently useful

BreadcrumbList schema mirrors a site's visible breadcrumb navigation in machine-readable form, and Google commonly uses it to show a cleaner, category-aware URL path in search results instead of the raw URL string. This is one of the lowest-effort, lowest-risk schema types to implement — it mirrors navigation that should already exist on the page — and it measurably improves how a result presents even when it doesn't unlock a dramatic new rich-result type.

FAQ schema has gotten more restrictive, not less

FAQPage schema used to be one of the most reliable ways to win extra search real estate, expanding a question-and-answer accordion directly under a result. Google has since tightened eligibility significantly — FAQ rich results are now largely limited to established, authoritative sites in specific categories (notably government and health), and most commercial ecommerce pages won't see this rich result even with correctly implemented FAQPage schema. It's still worth implementing for the genuine semantic clarity it gives search engines about page content, but it shouldn't be the primary reason a store invests significant effort in restructuring FAQ content.

Organization and LocalBusiness schema support trust, not rich results directly

Organization schema (company name, logo, social profiles) and LocalBusiness schema (address, hours, for a business with a physical location) don't typically produce a flashy rich result on their own, but they feed into how Google understands and represents a brand across search more broadly — including the knowledge panel that can appear for branded searches. This is foundational trust-signal markup worth having sitewide, even though its payoff is less immediately visible than Product or Review schema's.

Validate before shipping, not after noticing something's wrong

Schema markup with a syntax error or a missing required field doesn't necessarily break the page — it just silently fails to produce the rich result it was meant to enable, which is exactly why it goes unnoticed for months. Google's Rich Results Test and the Schema Markup Validator both check this directly, and running a page through one of them before shipping a template change is the difference between catching a mistake in minutes and discovering it months later when someone finally asks why competitor listings show stars and ours doesn't.

What platforms handle automatically, and what still needs checking

Shopify, Magento, and WooCommerce all generate a meaningful amount of basic schema automatically through their themes and platform defaults — which is genuinely useful, and also exactly where mistakes hide, since "the platform handles it" is often only half true. A default theme's auto-generated schema frequently has gaps: missing availability on variant-level stock, aggregateRating populated even when a product has zero actual reviews, or priceCurrency set incorrectly for a store that's been localized for a different market after the fact. Checking what a platform actually outputs, rather than assuming it's handled because schema exists somewhere in the page source, is worth doing directly rather than inferring from the platform's marketing claims.

A practical audit order

  1. Test a representative sample of product pages through Google's Rich Results Test, not just one — different templates or product types can have different schema completeness.
  2. Confirm price, currency, and availability match what's visibly on the page, not stale or default values left over from setup.
  3. Remove or fix aggregateRating/Review schema on any product with no visible reviews — this is the single highest-risk item to leave wrong.
  4. Add BreadcrumbList schema if it's missing — low effort, reliably useful, no real downside.
  5. Treat FAQPage schema as a semantic-clarity addition, not a guaranteed rich-result win, given how narrow eligibility has become.
  6. Re-check after any theme or platform update, since an update can silently change what schema gets auto-generated without anyone noticing until a rich result disappears.

Structured data is a genuinely high-leverage, low-cost layer of SEO work — it doesn't move rankings, but it decides whether the ranking a page already has translates into a search result someone actually wants to click.

Not sure if your structured data is actually valid and showing up in search?

We'll audit your Product, Review, and Breadcrumb schema against Google's actual requirements and tell you exactly why a rich result isn't appearing, if it isn't.