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:
priceandpriceCurrency— 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, orPreOrder, kept genuinely current; a page that marketsInStockbut 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
- 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.
- Confirm price, currency, and availability match what's visibly on the page, not stale or default values left over from setup.
- Remove or fix
aggregateRating/Reviewschema on any product with no visible reviews — this is the single highest-risk item to leave wrong. - Add
BreadcrumbListschema if it's missing — low effort, reliably useful, no real downside. - Treat
FAQPageschema as a semantic-clarity addition, not a guaranteed rich-result win, given how narrow eligibility has become. - 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.



