SEO Guide · 2026
Shopify Customer Reviews and AI Agent Recommendations: The Structured Data Gap
78% of Shopify stores have zero AggregateRating in their product JSON-LD — even stores with thousands of reviews and active review apps. The problem is almost always JavaScript rendering: the review widget loads after the page, so AI crawlers never see it.
AggregateRating JSON-LD as a quality and trust signal. Review apps that render ratings as JavaScript widgets are invisible to AI crawlers. Check your page source for "AggregateRating" — if it is not there, your reviews are not helping AI recommendations. Judge.me outputs JSON-LD server-side by default; Yotpo requires explicit configuration; most others need custom fixes.
Why 78% of Shopify stores fail AggregateRating
Our CatalogScan analysis of 100 top Shopify stores found that despite most running review apps, only 22% had AggregateRating in their product JSON-LD. The root cause in almost all cases:
- JavaScript-rendered review widgets: The review app loads star ratings and counts via JavaScript after page load. AI crawlers (GPTBot, PerplexityBot, ClaudeBot, Googlebot-Shopping) execute limited or no JavaScript. They parse the HTML as initially served — and the rating is not there yet.
- App injection into Liquid, not JSON-LD: Some apps inject a visually correct rating display in Liquid templating, but do not add the corresponding JSON-LD block to the structured data. The human visitor sees 4.8 stars; the AI crawler sees no rating data at all.
- Disabled JSON-LD export in app settings: Several review apps have a toggle for "export structured data" that defaults to off. Merchants install the app, see the star widget, and assume the job is done — but the JSON-LD export was never turned on.
How to verify your AggregateRating is crawlable
# Check your product page source for AggregateRating JSON-LD # (this is what AI crawlers actually see, before JavaScript runs): curl -s -A "Mozilla/5.0 (compatible; Googlebot/2.1)" \ "https://yourstore.com/products/your-product" | \ grep -i "AggregateRating" | head -5 # Expected output if working: # "AggregateRating","ratingValue":"4.8","reviewCount":"127" # If no output: your AggregateRating is JavaScript-only and invisible to AI crawlers
Review app comparison: AggregateRating JSON-LD support
| Review app | JSON-LD output | Default state | How to enable |
|---|---|---|---|
| Judge.me | Server-rendered | Enabled by default | Works out of the box; verify in page source |
| Yotpo | Optional | Disabled by default | Settings → SEO → Enable Structured Data |
| Okendo | Configurable | Partial (may require theme integration) | Contact Okendo support for JSON-LD snippet |
| Stamped.io | JavaScript-only | Not server-rendered | Manual JSON-LD snippet required (see below) |
| Loox | JavaScript-only | Not server-rendered | Manual JSON-LD snippet required |
| Shopify Product Reviews (native) | Server-rendered | Basic JSON-LD included | Works by default; limited feature set |
| Ali Reviews | Optional | Requires theme code edit | Follow app documentation for JSON-LD snippet |
Correct AggregateRating JSON-LD format
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trailblazer Boot Mid",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5",
"worstRating": "1"
}
}
Key requirements:
ratingValue— numeric string, the average score (e.g.,"4.8")reviewCount— must be greater than 0; cannot be"0"bestRating— the maximum score on your scale (always include; defaults to 5 if omitted, which may be wrong for 10-point scales)worstRating— the minimum (include for completeness; defaults to 1)
Manual AggregateRating Liquid snippet (for apps without native JSON-LD)
{% if product.metafields.reviews.rating.value != blank %}
{% endif %}
This works if your review app stores ratings in Shopify's standard reviews.rating and reviews.rating_count metafields — which Judge.me, Yotpo, and Okendo do. Add this snippet to your product.liquid (or product-template.liquid) file.
How AI agents use AggregateRating in practice
| AI agent | AggregateRating use | Impact |
|---|---|---|
| Google AI Mode | Used in Shopping ranking; shown in product comparison cards with star display | Products with ratings rank above equivalent unrated products in price comparison results |
| ChatGPT Shopping (Bing) | Bing indexes rating from JSON-LD and Bing Webmaster verified sources; shown in chat comparison | Rated products shown with star count in ChatGPT Shopping UI; higher trust signal |
| Perplexity Commerce | Uses AggregateRating plus crawled review text to generate product quality summaries | Strong ratings + substantive reviews → cited as "highly rated" in Perplexity answers |
| Google Shopping (non-AI) | Seller ratings shown as star overlay on Shopping ads | Higher CTR on Shopping ads; eligibility for Product Ratings badge |
Common AggregateRating errors to fix
| Error | Incorrect | Correct |
|---|---|---|
| Zero reviews | "reviewCount": "0" |
Remove AggregateRating entirely until you have at least 1 review |
| Wrong scale | "ratingValue": "9.6" with "bestRating": "5" |
Use "bestRating": "10" for 10-point scales |
| Rating not in structured data | Stars shown as HTML image/CSS only | Add JSON-LD block with numeric ratingValue and reviewCount |
| JavaScript-only output | JSON-LD injected after DOMContentLoaded | Render JSON-LD in initial HTML response (server-side Liquid) |
Check if your reviews are visible to AI
CatalogScan scans your product page for AggregateRating JSON-LD and flags missing or malformed review schema.
Scan my store →FAQ
Do customer reviews affect AI shopping recommendations for Shopify stores?
Yes, significantly. AggregateRating JSON-LD is a key trust and quality signal for Google AI Mode, ChatGPT Shopping, and Perplexity Commerce. Our scan found 78% of Shopify stores have no AggregateRating in their product JSON-LD despite many running review apps — usually because review apps render ratings via JavaScript that AI crawlers don't execute.
Which Shopify review apps correctly output AggregateRating JSON-LD?
Judge.me outputs server-rendered AggregateRating JSON-LD by default — the most AI-friendly option. Yotpo requires enabling structured data in settings. Okendo requires theme integration. Stamped.io and Loox are JavaScript-only and need manual JSON-LD snippets. Always verify by checking your page source (Ctrl+U) and searching for "AggregateRating".
What is the correct AggregateRating JSON-LD format for Shopify?
Include ratingValue (average score, numeric), reviewCount (must be greater than 0), bestRating (maximum scale, typically 5), and worstRating (minimum, typically 1). Never output reviewCount: 0. Ensure it is in the initial HTML response, not JavaScript-injected after page load.
How many reviews do I need before AggregateRating helps AI recommendations?
At least 1 to be valid, but practical impact starts at 10+ reviews. Products with 10+ reviews and 4.3+ average see measurable Google AI Mode impressions uplift. Products with 50+ reviews and 4.5+ rating consistently outperform equivalent unrated competitors in AI price comparison results.