- Two types do different jobs.
Review= a single review by one author.AggregateRating= the rolled-up score across many reviews. - Required on Review:
itemReviewed,author,reviewRating. Required on AggregateRating:itemReviewed,ratingValue, and one ofratingCount/reviewCount. - Google's first-party-only policy: stars only surface for entities reviewed on the site that owns the entity (a brand can show stars on its own Product page; a publisher can't show stars on a Review-of-Brand-X article unless it sells X).
- Self-serving reviews don't qualify. Reviews of your own company / services / agency are ineligible since the 2019 update. Use a third-party aggregator (Trustpilot, G2) instead.
- Eligible itemReviewed types are limited: Book, Course, CreativeWorkSeason, CreativeWorkSeries, Episode, Event, Game, HowTo, LocalBusiness, MediaObject, Movie, MusicPlaylist, MusicRecording, Organization (with policy exception), Product, Recipe, SoftwareApplication.
Chapter 1. Before you start
Review schema is one of the highest-CTR rich-result features (stars in the SERP) but also the most aggressively policy-policed. Google has tightened the rules twice (2019 self-serving cutoff, 2023 LocalBusiness-on-Organization restriction) and continues to drop sites that ship Review schema on ineligible item types. Before you ship, confirm two things: the item being reviewed is eligible, and the reviews are first-party / non-self-serving.
- Confirm itemReviewed is on Google's eligible-types list. The list (in TL;DR) is closed - anything not on it doesn't get the stars in the SERP, no matter how good the schema is.
- Confirm reviews are visible on the page users land on. Hidden reviews / paywalled reviews / off-site reviews don't qualify. The page must clearly display the same reviews the schema references.
- Confirm reviews aren't self-serving. Reviews of your own business / services on your own site are ineligible since September 2019. Third-party platforms (Trustpilot, G2, Yelp) sidestep this if you syndicate their reviews.
- Decide Review or AggregateRating or both. For a Product with 200 reviews, ship AggregateRating + maybe 3-5 sample Reviews. For a single editorial review, ship just Review.
Chapter 2. Review vs AggregateRating: which one ships when
| You have | You ship | SERP result |
|---|---|---|
| One editorial review of a product | Review | Star + reviewer name in SERP snippet |
| Many user reviews of a product | AggregateRating + 3-5 sample Review | Star + review count in SERP snippet |
| Critic score (rotten tomatoes-style) | Review with critic Person as author | Star + critic name |
| Aggregator data (Trustpilot, G2) | Trustpilot/G2's own schema (don't duplicate) | Stars on their site, not yours |
The combined pattern - AggregateRating + sample Reviews - is the most common shape for ecommerce Product pages. The aggregate gives Google the headline rating; the sample reviews give Google something to attribute and possibly excerpt in the snippet.
Chapter 3. Required and recommended properties
Review
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {
"@type": "Product",
"name": "Capconvert Sentry",
"@id": "https://www.example.com/products/sentry#product"
},
"author": {
"@type": "Person",
"name": "Jane Doe"
},
"datePublished": "2026-04-15",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5",
"worstRating": "1"
},
"reviewBody": "Sentry caught 47 schema breakages our manual audit missed. Worth every penny."
}
AggregateRating
{
"@context": "https://schema.org",
"@type": "AggregateRating",
"itemReviewed": { "@id": "https://www.example.com/products/sentry#product" },
"ratingValue": "4.8",
"bestRating": "5",
"worstRating": "1",
"ratingCount": 142,
"reviewCount": 67
}
The distinction between ratingCount and reviewCount: ratingCount includes star-only ratings; reviewCount only counts reviews with a written body. Include both if available - they're additive signals.
Chapter 4. The first-party-only policy
Since the September 2019 update, self-serving review markup is not eligible for the review rich result. "Self-serving" means reviews about your own business, organization, or services, on your own site.
What still works
- A brand selling its own products: Product page with user reviews → eligible. The Product is the entity reviewed; the brand-seller is incidental.
- A publisher reviewing third-party products: editorial review of Brand-X-Widget → eligible (Review with itemReviewed = Brand X's Product).
- A local business with on-site customer reviews: review snippets used to be allowed in 2018-19 but the LocalBusiness review rich result was deprecated. Use Trustpilot / Yelp / GBP reviews instead.
- Movie / Book / Course / Game / Recipe reviews: editorial site reviewing a Movie → eligible (the publisher doesn't own the Movie).
What doesn't work
- An agency with testimonials from clients: Service / Organization as itemReviewed → ineligible. The reviews are of the agency itself, on the agency's own site.
- SaaS company with customer reviews on its own SoftwareApplication page: ineligible if the SoftwareApplication is the company's own product. Use G2 / Capterra syndication instead.
- Restaurant with customer reviews on its own LocalBusiness page: ineligible since 2019. Yelp / GBP for those.
Chapter 5. Eligible itemReviewed types
Per Google's review-snippet documentation, the eligible itemReviewed types are:
BookCourseCreativeWorkSeasonCreativeWorkSeriesEpisodeEventGameHowTo(note: HowTo rich results deprecated, but Review on HowTo eligibility unchanged)LocalBusiness(with self-serving exception - third-party reviews only)MediaObjectMovieMusicPlaylistMusicRecordingOrganization(with self-serving exception)Product(most common)RecipeSoftwareApplication(with self-serving exception)
Anything outside this list (Service, ProfessionalService, Person, Article, etc.) doesn't produce a review rich result, even with valid Review schema. Skip the schema entirely on those page types - it's noise.
Chapter 6. Where do you place Review schema on the site?
Review and AggregateRating are typically nested inside the schema of the item being reviewed, not standalone:
{
"@type": "Product",
"name": "Capconvert Sentry",
"@id": "https://www.example.com/products/sentry#product",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"ratingCount": 142
},
"review": [
{ "@type": "Review", "author": { ... }, "reviewRating": { ... }, "reviewBody": "..." },
{ "@type": "Review", "author": { ... }, "reviewRating": { ... }, "reviewBody": "..." }
]
}
This inline pattern is preferred. The standalone pattern (separate Review with itemReviewed) is valid but heavier and rarely necessary on ecommerce pages.
Chapter 7. The breakages we see most often
Ranked by frequency across 58 sites shipping review schema:
- Self-serving review schema on Service / Organization / Agency pages. Ineligible since 2019. 24 of 58.
- Review schema on ineligible
itemReviewedtypes (Person, Article, Service). 19 of 58. - Review with no
author. Anonymous reviews don't qualify. 14 of 58. - AggregateRating schema with no visible reviews on the page. Google requires the reviews to be visible. 11 of 58.
ratingValueoutsideworstRating-bestRatingrange (e.g., 4.8 with bestRating implicit 5 but worstRating set to 3). 9 of 58.- Aggregating reviews from off-site sources without displaying them on the page. 7 of 58.
- Reviews with
reviewBodytruncated to <50 chars. Google deprioritizes thin review content. 5 of 58.
We track every breakage above on running sites through our Sentry structured-data rule set.
FAQ
Can my agency ship Review schema for client testimonials on our own site?
No. That's self-serving (the agency is the entity being reviewed, on the agency's own site). Use Trustpilot, Clutch, or G2 to host the reviews; their schema produces stars on their listings, and you can syndicate the score in body copy on your own pages without shipping schema.
What if I have real customer reviews on my own SoftwareApplication page?
Real or not, self-serving is the policy disqualifier. Syndicate to G2 / Capterra / Software Advice instead - their pages will rank for "X reviews" queries and earn the stars in the SERP on their domain.
How many sample Reviews should I ship alongside AggregateRating?
3-5 is the sweet spot. Enough for Google to attribute and excerpt; not so many that the schema payload bloats. The sample should be representative - mix of high and low ratings, recent and older. Don't cherry-pick only 5-star reviews; that's the kind of pattern that triggers policy review.
What's the difference between ratingCount and reviewCount?
ratingCount includes star-only ratings (no written review). reviewCount only counts reviews with a written body. Include both when available - they're additive signals. If only one exists, ship that one and omit the other.
Can I ship Review schema for a product I sell on Amazon?
If the product is on your own site (you sell the same product on your own ecommerce page), yes - the Product page can carry Review schema based on your own site's reviews. You can't aggregate Amazon's reviews onto your site; those belong to Amazon's domain.
Are critic reviews different from user reviews?
For schema purposes, no. Both use Review with author = Person. The Movie/Book vertical sometimes uses a special "critic" badge in the rich result, driven by author entity recognition (well-known critic Persons get the badge), not by a specific schema field.
References
- Schema.org. "Review." schema.org/Review
- Schema.org. "AggregateRating." schema.org/AggregateRating
- Google Search Central. "Review snippet (Review, AggregateRating) structured data." developers.google.com/search/docs/appearance/structured-data/review-snippet
- Google Webmaster Central Blog. "Making review rich results more helpful" (Sep 2019). developers.google.com/search/blog/2019/09/making-review-rich-results-more-helpful
- Schema.org. "Rating." schema.org/Rating
- Schema.org. "Schema Markup Validator." validator.schema.org