What AggregateRating is
Per Schema.org v30.0, AggregateRating is 'the average rating based on multiple ratings or reviews.' Type hierarchy: Thing > Intangible > Rating > AggregateRating. The required-by-Google fields are ratingValue, ratingCount or reviewCount (at least one), itemReviewed (handled implicitly when AggregateRating is a sub-object on Product). Recommended: bestRating and worstRating to disambiguate the rating scale.
The self-serving review rule on Shopify
Google's Review snippet documentation states 'don't aggregate ratings or reviews that are self-serving.' An entity collecting and displaying reviews about itself on its own site is self-serving. Reviews about an entity collected and verified by an independent third-party platform are not. The structural JSON-LD is identical in both cases; eligibility for the star snippet depends on the source. This matters on Shopify because Shopify's first-party Product Reviews app, and most simple in-house review systems, are self-serving by Google's definition.
Shopify review apps that emit AggregateRating cleanly
The 2026 Shopify review-app market splits into three groups. (1) Third-party platforms that emit AggregateRating in their app block: Yotpo, Stamped.io, Judge.me, Reviews.io, Okendo, Loox. (2) First-party Shopify: Shopify Product Reviews (self-serving), Shop reviews from the Shop channel. (3) Custom in-house systems built on Shopify metafields or metaobjects, which require the merchant to author AggregateRating JSON-LD by hand.
AggregateRating fields
The properties that matter: ratingValue (Number/Text — the average, e.g. 4.8), ratingCount (Integer — total ratings received), reviewCount (Integer — total reviews received; can equal ratingCount), bestRating (Number/Text — the highest possible, e.g. 5), worstRating (Number/Text — the lowest possible, e.g. 1).
JSON-LD example — AggregateRating from a third-party review app
The block below shows AggregateRating inside a Shopify Product block, using Liquid metafields from a third-party review platform (Judge.me's metafield namespace shown — adjust per the actual app in use).
Validation
Rich Results Test against a PDP with AggregateRating should report Product detected, AggregateRating parsed, and (if the reviews are independent third-party) eligibility for the review snippet. If reviews are self-serving, the test typically reports 'Either the rating is not from an aggregate source, or the page is the subject of the review' — informational, not an error. The schema is valid; the snippet just won't render. For AI engine citation, that's fine; the markup still helps.
Shopify gotchas on AggregateRating
Four gotchas. First: emitting AggregateRating with ratingValue '0' and reviewCount '0' on products that haven't been reviewed (branch on the metafield, see above). Second: assuming Shopify Product Reviews app reviews are eligible for stars (they are not — self-serving). Third: emitting AggregateRating both from your manual block AND from a review-app's auto-emitted block, producing duplicate AggregateRating on one Product. Fourth: hard-coding bestRating as 10 when the app uses a 1–5 scale, causing 4.8 to render as '4.8 out of 10'.