Field notes
Shopify Review Schema Guide: Review Snippets Without a Manual Action
November 11, 2025
Why review schema is the most dangerous structured data on Shopify
A health and wellness client received a manual action in early 2025 because their review app was still emitting Critic Review markup on pages that only had customer testimonials. Not Review. Critic Review. The distinction matters because Google's spam team treats the wrong @type as misleading structured data. It took six weeks to get the action lifted, during which organic traffic dropped 34 percent. All because a review app's default config had not kept up with policy changes.
TL;DR ▸ Review schema is the highest-stakes structured data type on a Shopify store because manual actions are common and brutal ▸ Only first-party reviews collected directly from customers are eligible for markup ▸ Match the visible stars and count exactly to the JSON-LD output ▸ Wait for five genuine reviews before shipping AggregateRating on a PDP
The four rules Google will not bend on
First, reviews must be first-party. You collected them. The customer bought the product from you. No syndication from Amazon, no imported TrustPilot reviews, no industry roundups stitched into the markup. Second, reviews must be about the specific product on the page, not the store as a whole. Store reviews belong on your homepage Organization schema, not PDP markup. Third, the visible rating on the page must match the aggregate rating in JSON-LD, rounded identically. Fourth, fake or incentivized reviews are a policy violation regardless of disclosure.
Violations of any of these trigger either silent ineligibility or an active manual action. Silent ineligibility is more common and harder to detect because Search Console will show the schema as valid while the SERP shows no stars. The only reliable signal is the CTR drop on affected URLs, which you will not notice until monthly reporting.
The safe review block for Shopify PDPs
This is the shape we ship after auditing the apps and dropping raw markup into product.liquid. Two components: AggregateRating as a property of Product, and one or more Review objects if you want individual reviews surfaced to crawlers.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Merino 200 Crew",
"sku": "SKU-2201",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "143"
},
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
},
"author": {
"@type": "Person",
"name": "Jordan M."
},
"reviewBody": "Great fit, warm without being bulky. Exactly what I needed for winter hikes."
}
]
}
The AggregateRating is the main ranking factor for review stars in the SERP. The individual Review entries feed AI Overview excerpts and knowledge graph context. You can ship AggregateRating alone. You should not ship Review entries alone without AggregateRating, because isolated reviews signal a non-product page.
Which review app does this correctly in 2026
We have audited the four major apps in the last twelve months. Each has distinct failure modes.
| App | Default schema correct? | Common issue | Fix |
|---|---|---|---|
| Judge.me | Yes when widget is installed | Emits markup even for zero-review products | Conditionally wrap JSON-LD in a review-count check |
| Yotpo | Partial | Duplicates Product schema, causing conflicts | Disable Yotpo's Product emission, keep AggregateRating only |
| Okendo | Yes | Adds itemReviewed with full Product again | Strip itemReviewed to avoid nested duplicate Product |
| Stamped | Partial | Uses deprecated ratingValue format | Override with snippet-based emitter |
| Native loox or junip | Varies | Individual review nodes sometimes lack author | Add fallback author string in template |
None of these are set-and-forget. On every Shopify build with reviews, we replace the app's default schema output with a controlled emitter that reads the review data from the app's metaobject or API and ships a single canonical Product+AggregateRating block. Fewer moving parts, easier to audit, no duplicate Product markup.
The duplicate Product problem that kills rich results
Shopify themes emit Product schema natively. Review apps often emit their own Product schema with AggregateRating attached. Now you have two Product blocks on one PDP with different properties. Google picks one or ignores both, unpredictably. The symptom: stars show up sometimes and not other times, with no pattern you can diagnose.
Fix: one Product block per page, period. Disable the app's schema emission in its settings. Render a single Product JSON-LD script in the theme that pulls AggregateRating data from the app's metaobjects or API response. Every field in one place.
The product schema for Shopify guide has the full Product block we ship on client sites, with the hooks for AggregateRating, Offer, and brand entities all in one emitter. Pair that guide with this one and you will not have duplicate schema problems.
Review collection practices that protect your markup
Three practices that keep markup safe long-term. First, verified-purchase flags on every review. The app should stamp each review with a verified-purchase boolean drawn from order data. Unverified reviews can still appear on the page, but only verified ones should feed the aggregate count. Second, moderation turnaround of 24 hours for flagged reviews. Fake or incentivized reviews detected after the fact should be purged from the aggregate immediately, not left to age out. Third, a written review solicitation policy that complies with FTC guidance. Incentives for reviews are permitted only when disclosed, and disclosed incentives disqualify those reviews from AggregateRating.
Shopify stores that treat review collection as a growth lever tend to ignore these practices. The short-term gain from aggressive incentive programs is real. The long-term cost of a manual action is larger than the gain. Our CRO services engagements treat review velocity as a conversion asset but enforce the moderation and verification layer strictly.
Reviews and the wider trust stack
Review stars in the SERP move CTR by 10 to 25 percent on commercial queries when implemented correctly. That is the biggest single pre-click win available in structured data. Stack it with breadcrumbs and Product schema and you have the three rich result surfaces that still move real click volume in 2026.
The downstream effect on conversion rate is separate and larger. Visible stars on the PDP, real review text below the fold, photo reviews in the carousel, all of these compound. The schema layer makes the stars visible in Google. The conversion layer makes them persuasive after the click. Both matter. Our product page CRO patterns essay covers the on-page side.
If you are building a full schema stack, the order is: Organization on the homepage, Product on every PDP, BreadcrumbList everywhere, FAQPage on pages that earn it, AggregateRating only on PDPs with five or more verified reviews. Skipping steps in this order creates gaps that AI engines exploit to cite competitors instead.
Handling negative reviews and disputes
A 4.2 average rating outperforms a 5.0 average on conversion because users trust it more. Do not filter or hide low ratings. The AggregateRating that includes a reasonable distribution of ratings is the one that converts. If a product has structural quality problems, the fix is product redesign, not review filtering.
When a customer disputes a review as false, the correct process is to verify the purchase, contact the reviewer, and only remove after a documented process. Removing reviews under pressure from brand teams is the most common trigger for the FTC-facing lawsuits that have reshaped the space. A clear, written moderation policy with named decision-makers is the protection.
For brands operating across multiple regions, review aggregation gets complex. A product sold in the US and the UK should have one aggregate across both markets, not separate aggregates per locale, unless the product is meaningfully different per market. The Shopify hreflang setup work becomes relevant when variants differ by region.
Monitoring and maintenance
Two dashboards. First, a weekly Search Console pull filtered to the Product Snippets enhancement report. Any new invalid URLs get investigated same day. Second, a monthly SERP sample of the top 30 commercial queries checked manually for star visibility. The second dashboard catches silent ineligibility that Search Console misses.
Alerting on the CTR of top PDPs with a week-over-week threshold of 20 percent drop is the other early warning. When star markup breaks, CTR drops before any coverage report reflects the change. Our analytics and reporting retainers include this alerting as a default because review schema failure modes are too silent to rely on manual checks.
What to do this week
▸ Audit which schema blocks your review app is emitting and identify duplicates with theme-level Product schema ▸ Disable the app's Product emission and consolidate to a single Product plus AggregateRating block in theme code ▸ Remove AggregateRating from any PDP with fewer than five verified reviews ▸ Confirm every reviewCount and ratingValue in JSON-LD matches the number visible on the page ▸ Set a weekly Search Console review for the Product Snippets report and a monthly SERP sample of your top 30 queries ▸ Document your review moderation policy and tie it to the verified-purchase flag in your review app
One-page resource
Get the Vendor Recovery Checklist.
The 12 steps every displaced maker should take in the next 30 days. Delivered in your inbox.