Review snippet schema: Review and AggregateRating examples, rules and WordPress setup

Review snippet markup is the structured data behind star ratings in search results. There are two forms: a Review is one person's rating of one thing, and an AggregateRating is the average of many ratings with a count. Both are attached to the thing being reviewed, usually by nesting them inside that item's markup, such as a Product or Recipe.

The rules are stricter than the syntax. Ratings must come from real reviews that visitors can see on the page, the reviewed item must be one of the types Google supports, and a business cannot earn stars by marking up reviews of itself on its own website. That last rule, Google's self-serving review policy, is the one most sites trip over.

JSON-LD example

Copy this into a <script type="application/ld+json"> tag and replace the values with your own.

json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Ledgerly",
  "operatingSystem": "iOS, Android",
  "applicationCategory": "FinanceApplication",
  "offers": {
    "@type": "Offer",
    "price": 0,
    "priceCurrency": "USD"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.4,
    "ratingCount": 1893,
    "bestRating": 5,
    "worstRating": 1
  },
  "review": [
    {
      "@type": "Review",
      "author": {
        "@type": "Person",
        "name": "Tom Achebe"
      },
      "datePublished": "2026-07-02",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": 5
      },
      "reviewBody": "Finally a budgeting app that splits shared expenses without a spreadsheet."
    },
    {
      "@type": "Review",
      "author": {
        "@type": "Person",
        "name": "Lena Park"
      },
      "datePublished": "2026-08-15",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": 4
      },
      "reviewBody": "Clean and fast. I wish bank sync covered my credit union."
    }
  ]
}

Properties

PropertyStatusWhat it is
itemReviewedRequiredThe thing being reviewed. Implied when the Review or AggregateRating is nested inside that item.
Review.authorRequiredA Person or Organization with a name. Keep it to the reviewer's name.
Review.reviewRatingRequiredA Rating with ratingValue, plus bestRating and worstRating if the scale is not 1 to 5.
AggregateRating.ratingValueRequiredThe average score, as a number.
AggregateRating.ratingCount or reviewCountRequiredHow many ratings or written reviews the average is based on. At least one is required.
bestRating / worstRatingRecommendedThe top and bottom of the scale. Defaults are 5 and 1.
Review.datePublishedRecommendedWhen the review was published.
Review.reviewBodyRecommendedThe review text.

Which items can show stars

Google shows review snippets for a defined list of types, including Book, Course, CreativeWorkSeason, CreativeWorkSeries, Episode, Event, Game, HowTo, LocalBusiness, MediaObject, Movie, MusicPlaylist, MusicRecording, Organization, Product, Recipe and SoftwareApplication. Ratings on other types, such as an Article or a WebPage, will not produce stars.

In practice, most sites use review markup inside Product, Recipe or SoftwareApplication markup, where Google's own feature documentation also lists ratings as a property.

The self-serving review rule

Since September 2019, Google does not show review stars for self-serving reviews: reviews of a LocalBusiness or Organization (or their subtypes) that the business itself hosts or embeds on its own site. A dentist marking up patient testimonials on the dentist's homepage will not get stars, even if the reviews are genuine. The same applies to third-party review widgets embedded on your own site.

This rule is about the entity, not the product. A store can still mark up customer ratings of the individual products it sells on each product page. A site that reviews other businesses, like a restaurant guide, can mark up its reviews of those restaurants.

Two related rules: don't aggregate ratings from other websites into your AggregateRating, and don't mark up reviews that visitors cannot see on the page.

Add it in WordPress

By hand. Add aggregateRating and review inside the item's JSON-LD, generated from your review data so the numbers stay current. Review plugins and WooCommerce often output ratings already; check the page source first.

With Hydrogen SEO. Hydrogen SEO's docs do not list a standalone Review type. Ratings belong inside the reviewed item's markup, and developers can add aggregateRating or review to a type such as Product with the hydrogen_seo_schema_markup filter, which lets you modify the schema array for a post before it prints.

Our in-app generator does not have a separate Review form; its Product form includes an optional rating and review count.

Common mistakes

  • Stars on your own business. Self-serving LocalBusiness and Organization reviews are not eligible.
  • Hardcoded ratings. An AggregateRating that never changes while reviews keep coming in is inaccurate.
  • Ratings copied from another site. Aggregate only reviews collected and shown on your page.
  • Missing count. AggregateRating needs ratingCount or reviewCount.
  • Unsupported item types. Stars on a blog post or category page will not show.
  • Scale mismatch. A 10-point score needs bestRating 10.

More help: invalid structured data.

Test it

Paste your draft Review markup into the JSON-LD validator to catch missing properties early; the published page still needs a pass through Google's Rich Results Test. The Rich Results Test reports review snippets as their own item. Passing does not override policy: self-serving reviews can validate cleanly and still never show stars. Search Console's Review snippets report shows issues across the site.

Common questions

Why don't my testimonials show stars in Google?

Reviews of your own LocalBusiness or Organization shown on your own site are considered self-serving, and Google does not display stars for them.

What is the difference between Review and AggregateRating?

A Review is one person's rating with an author. An AggregateRating is the average of many ratings, with a count.

Can I use my Google Business Profile rating in schema?

No. AggregateRating should summarize reviews collected on and shown on your own page, not ratings from other platforms.

Do I need individual reviews if I have an AggregateRating?

No. Either one can make an item eligible, though including a few visible reviews gives readers and machines more context.