Skip to content
DevMarDe
Crawl Audit check 14Crawl AuditStructured data

Review and AggregateRating schema: check 14

Crawl Audit check 14 tests review schema. Why Google won't show stars for a business's reviews of itself, when review markup is eligible, and what it needs.

Zain Kazmi3 min read
On this page
Check
14 of 200
Module
AI Search Visibility & GEO
Group
Structured Data & Schema Markup
Impact
Low

Short answer: Review and AggregateRating markup is what can put star ratings under a search result. But Google has a rule most businesses don't know about. If a business controls the reviews about itself, for example testimonials on its own website, its LocalBusiness or Organization markup is not eligible for stars. Crawl Audit check 14 warns when a page shows reviews without markup. For your own testimonials, adding markup won't bring stars. For reviews of products you sell, it can.

What Crawl Audit checks

  • Pass: the page has a Review or AggregateRating node.
  • Warning: neither, but the page has an element whose class contains "review", "testimonial" or "rating".
  • Pass: no review content, so the markup isn't needed.

Google's self-serving review rule

Google's review snippet documentation says: "If the entity that's being reviewed controls the reviews about itself, their pages that use LocalBusiness or any other type of Organization structured data are ineligible for star review feature." The rule dates from September 2019, when Google wrote: "Self-serving reviews aren't allowed for LocalBusiness and Organization", and confirmed it covers both Review and AggregateRating.

In July 2026 Google added one more guideline: "Don't include fake or undisclosed incentivized reviews".

So for a typical service business:

  • Testimonials about your business, on your site: markup is allowed, but it won't produce stars. Keep the testimonials as visible text, with a real name and role, because people read them.
  • Product pages where real customers review a product you sell: review markup can be eligible for a product snippet.
  • Reviews of your business on other sites: those sites mark them up, not you.

On this site, we only publish reviews from people who have agreed to their words being used, and attribute them by role and company.

What valid markup needs

  • A Review needs an author, a reviewRating with a ratingValue, and an itemReviewed, unless it's nested inside the thing being reviewed.
  • An AggregateRating needs a ratingValue, an itemReviewed unless nested, and "At least one of ratingCount or reviewCount is required."
<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Example product",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.6,
    "bestRating": 5,
    "ratingCount": 20
  }
}
</script>

How to handle it on your platform

  • Shopify and other stores: review apps usually add product review markup themselves. Check one product page in Google's Rich Results Test and make sure only one source adds it.
  • WordPress: if a testimonials plugin adds AggregateRating to your Organization or homepage, it won't earn stars. Make sure it doesn't invent a rating from a handful of hand-picked quotes.
  • Wix, Squarespace and Next.js: keep testimonials as plain text with names and roles. Add review markup only on product pages with real customer reviews.

Common mistakes

  • An AggregateRating for your own business, built from testimonials you chose. It's ineligible, and it's the kind of thing that makes a site look less trustworthy, not more.
  • A rating with no visible reviews behind it. Google's general rule: "Don't mark up content that is not visible to readers of the page."
  • Reviews you paid for or gave a discount for, without saying so.

Sources

All 200 Crawl Audit checks

See how your site does on every check.

Crawl Audit runs this check and 199 others on your domain. The full report is $7.89, one time. The free check on this site covers 25.