Optimization Guide

Shopify Seller Rating and Store Aggregate Rating Structured Data for AI Shopping Agents

AI shopping agents make two separate trust checks: product quality (from product reviews) and seller reliability (from store-level ratings). Most Shopify stores wire up product AggregateRating and skip the seller-level signal entirely — leaving fulfillment reputation data invisible to agents that answer "best-rated shops for leather bags" or "most reliable Shopify stores for X."

TL;DR Add AggregateRating to your Organization entity in theme.liquid to declare store-level seller ratings separately from product-level reviews. Source rating data from your third-party platform (Trustpilot, Judge.me, Okendo) and keep it current. Product ratings belong on Product types on product pages; seller ratings belong on Organization in your layout. Both signals are independent and both are processed by AI shopping agents.

Product Ratings vs. Seller Ratings: Two Distinct AI Signals

When an AI shopping agent answers "where should I buy a cashmere sweater?", it evaluates two independent trust dimensions:

  1. Product quality signal: AggregateRating on Product — sourced from product-specific reviews (fit, quality, durability, accuracy). Varies by product. Present on product pages.
  2. Seller trust signal: AggregateRating on Organization — sourced from store reviews (shipping speed, packaging, returns, customer support). Applies store-wide. Present in site layout.

Shopify stores with product review apps (Judge.me, Okendo, Yotpo) typically have the product rating wired up automatically. The seller-level rating is almost universally missing from structured data, even when the store has hundreds of positive reviews on Trustpilot or Google reviews.

How AI agents use each rating type

Rating type Schema type Source AI agent use case
Product rating Product > AggregateRating Product-specific reviews (size, quality, material) "Best-rated linen sheets" — sorts by product quality
Seller rating Organization > AggregateRating Store-level reviews (shipping, returns, support) "Most reliable store for baby clothes" — sorts by fulfillment trust
Google Seller Ratings Google Merchant Center signal (not schema) Google-certified review partners Stars in Google Shopping ads and organic panels

Seller Rating JSON-LD Patterns

Organization AggregateRating in theme.liquid

Place this JSON-LD block in your layout/theme.liquid inside the <head> or before </body>. It applies to the entire domain and is crawled on every page:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your Store Name",
  "url": "https://yourstore.com",
  "logo": {
    "@type": "ImageObject",
    "url": "https://yourstore.com/assets/logo.svg"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "ratingCount": "2347",
    "bestRating": "5",
    "worstRating": "1",
    "reviewCount": "2347"
  },
  "sameAs": [
    "https://www.trustpilot.com/review/yourstore.com",
    "https://www.google.com/maps/place/your-store"
  ]
}

Full Organization entity with seller ratings and contact

A more complete Organization entity pairs seller ratings with contact information, return policy, and shipping policy — all signals that AI agents use for seller trustworthiness scoring:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Meadow & Oak Home Goods",
  "url": "https://meadowandoak.com",
  "logo": {
    "@type": "ImageObject",
    "url": "https://meadowandoak.com/assets/logo.svg"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer service",
    "email": "hello@meadowandoak.com",
    "availableLanguage": "English"
  },
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Home goods and furniture"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "ratingCount": "1892",
    "bestRating": "5",
    "worstRating": "1",
    "reviewCount": "1892"
  },
  "sameAs": [
    "https://www.trustpilot.com/review/meadowandoak.com"
  ]
}

Combining seller and product ratings on a product page

Both rating types can coexist on a product page without conflict — they are on different schema types. The product rating is on the Product type; the seller rating is on the Organization type rendered by the layout:

/* In product.liquid (product rating) */
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Linen Duvet Cover — King",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9",
    "ratingCount": "312",
    "bestRating": "5"
  },
  "offers": { "@type": "Offer", "price": "149.00" }
}

/* In theme.liquid (seller/store rating — separate block) */
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Meadow & Oak",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "ratingCount": "1892",
    "bestRating": "5"
  }
}

Shopify Liquid Implementation

The challenge with seller ratings in Shopify is keeping the ratingValue and ratingCount current without manual theme edits every time your review score changes. Two approaches:

Approach 1: Shopify global settings metaobject (recommended)

Create a single-instance metaobject called store_ratings with fields for rating_value, rating_count, and rating_source. Update it via the Shopify Admin API on a schedule (daily or weekly) from your review platform's API. Inject into theme.liquid:

{% assign ratings = shop.metaobjects.store_ratings.first %}

{% if ratings != blank and ratings.rating_count.value != blank %}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": {{ shop.name | json }},
  "url": {{ shop.url | json }},
  "logo": {
    "@type": "ImageObject",
    "url": "{{ shop.url }}/assets/logo.svg"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": {{ ratings.rating_value.value | json }},
    "ratingCount": {{ ratings.rating_count.value | json }},
    "bestRating": "5",
    "worstRating": "1"
  }
  {% if ratings.trustpilot_url.value != blank %}
  ,"sameAs": [{{ ratings.trustpilot_url.value | json }}]
  {% endif %}
}
</script>
{% endif %}

Approach 2: Hardcoded with update reminder

If you don't have automation, hardcode the current values and set a calendar reminder to update monthly. Add a comment with the source and last-updated date so the team knows when it's stale:

/* Last updated: 2026-06-01. Source: Trustpilot API.
   Update monthly or when rating changes by ±0.1 */
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your Store Name",
  "url": "https://yourstore.com",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "ratingCount": "2347",
    "bestRating": "5",
    "worstRating": "1"
  }
}

Metaobject fields for store_ratings

Field keyTypeExample valuePurpose
rating_value Number (decimal) 4.8 Average store rating (1–5)
rating_count Integer 2347 Total number of seller reviews
rating_source Single line text Trustpilot Platform attribution for internal tracking
trustpilot_url URL https://www.trustpilot.com/review/... sameAs link for Organization entity
last_synced_at Date and time 2026-06-01T00:00:00Z Staleness tracking for automation alerts

Review Platform Integration Reference

Platform API endpoint for rating data Google Seller Ratings eligible Schema.org compatible
Trustpilot GET /v1/business-units/{id} (public API) Yes (Google-certified partner) Yes — parse score.trustScore and numberOfReviews.total
Judge.me Shopify app badge widget + REST API Via Google integration Yes — exports AggregateRating for Organization
Okendo REST API + Shopify Storefront API Via Google integration Yes — separate product and seller ratings
Yotpo REST API /apps/{app_key}/bottom_line Yes (Google-certified partner) Yes — parse store_average_score and total_reviews
Google Customer Reviews Merchant Center API Direct (native integration) No schema needed — feeds Google Shopping directly

Common Mistakes to Avoid

Mistake AI agent consequence Fix
Placing seller AggregateRating on Product type instead of Organization Schema.org validator error; AI agent confusion between product and seller scores Move seller rating to Organization type in theme.liquid
Hardcoding ratingValue that drifts from actual platform score Structured data policy violation; potential trust penalty from Google Sync via metaobject updated from review platform API on schedule
Using ratingCount below 10 for a store with thousands of reviews AI agent deprioritizes signal as statistically insignificant Use total published review count from your review platform
Missing bestRating and worstRating Schema.org validator warning; agents can't normalize score to 5-star scale Always include bestRating: "5" and worstRating: "1"
No sameAs linking to review platform profile AI agents can't cross-reference platform source for validation Add sameAs array with Trustpilot/Google profile URL

Implementation Checklist

Frequently Asked Questions

What is the difference between a product AggregateRating and a seller AggregateRating?

A product AggregateRating (on Product) reflects reviews of a specific item — quality, fit, durability. A seller AggregateRating (on Organization) reflects the store's fulfillment experience — shipping speed, packaging, returns, support. AI agents use both independently: product ratings filter product quality, seller ratings filter store trustworthiness.

Where should seller rating JSON-LD be placed on a Shopify store?

Place seller AggregateRating on the Organization type in layout/theme.liquid — not on product pages. The Organization-level rating applies site-wide and is crawled on every page. Product pages should carry product AggregateRating on the Product type separately.

Which review platforms feed into seller ratings for AI shopping agents?

For Google AI Mode and Google Shopping, seller ratings aggregate from Google Customer Reviews, Trustpilot, Yotpo, and other Google-certified partners. For ChatGPT Shopping and Perplexity Shopping, the agents read your Organization AggregateRating JSON-LD directly from your site. Add both: Organization JSON-LD sourced from your review platform, plus Google Customer Reviews enrollment for Google Shopping stars.

What is the minimum ratingCount required for AggregateRating to be valid?

Schema.org requires at least 1. Google recommends at least 3 for rich snippet eligibility. Google Shopping seller rating stars require 100+ ratings over 12 months. For AI agent recommendations specifically, there is no documented minimum — any valid AggregateRating with a non-trivial count is processed as a trust signal.

Can I use Trustpilot or Judge.me data in my Organization AggregateRating JSON-LD?

Yes, provided the data is accurate and current. The ratingValue and ratingCount must match your actual published ratings. Use a metaobject synced from your review platform's API rather than hardcoding values — stale scores drift and become a policy violation. If your Trustpilot rating changes, your JSON-LD must reflect the update within a reasonable timeframe.

Related Resources