Read it, chapter by chapter
The full 7-chapter guide for law firms — pick any chapter to read it here.
The aggregateRating Trap: Why Self-Serving Ratings Backfire
A law firm adds an aggregateRating node to its Organization schema: "ratingValue": 5.0, "ratingCount": 47. Google ignores it. Worse, the firm wonders why its schema is valid in validator.schema.org but no rich-result snippets appear in search results. The reason: Google's helpful-content policy explicitly penalizes self-serving claims, and a firm rating itself 5.0 stars on its own website looks exactly like that.
The correct rule: aggregateRating on the firm Organization node must come from a third-party source (real Google Business Profile reviews, Avvo ratings, Justia reviews). These are signals the firm did not create; they carry credibility. If you put your own fabricated or unsourced rating on your org node, it is ignored. If you misrepresent the GBP rating (claiming 4.8 when GBP says 4.2), it is ignored and harms your domain authority with Google.
For multi-office firms, the mistake multiplies: a single firm-wide 5.0 rating is copied to every city page, even though each city's office has a different GBP rating. A page for your San Francisco office renders a 5.0 star snippet from a Compass Law Group overall rating, even though the SF office's actual GBP rating is 4.6. Clients read the 5.0 and feel misled when they see the real 4.6 on the GBP profile.
The fix: (a) aggregateRating belongs on result/service pages with real, visible third-party reviews — customer testimonials, case-result kudos, GBP reviews quoted with permission. (b) For multi-office firms, each location page gets ITS OWN office's aggregateRating from that office's GBP profile (San Francisco page → SF office's GBP 4.6; Burbank page → Burbank office's GBP rating). (c) Derive the schema value from the same data source as the visible content (a constant or API query), so visible rating + schema rating are always in sync.
| Context | Incorrect (Ignored / Penalized) | Correct |
|---|---|---|
| Firm Organization node | Self-rated 5.0 stars; no visible justification | Third-party GBP/Avvo rating, sourced from real reviews, with a link to the real profile |
| Result/Service page | No rating at all; visible testimonials but no schema | Real third-party reviews + aggregateRating schema matching the visible quotes |
| Multi-office | One firm-wide 5.0 rating on every city page | Each city page carries that city's office GBP rating (real, location-specific) |
| Drift | Schema says 4.9, GBP says 4.3; not updated | Regenerated from live GBP API or manual sync on every deploy |
One more clarification: Google's "Detected structured data" list in the Rich Results Test will show an aggregateRating even when it is ignored for SERP ranking. The presence in the list does not mean the rating earns you a star snippet. To verify it is being used, check Google Search Console's Rich Results report — only items Google actually uses appear there. If aggregateRating appears in validator.schema.org but NOT in GSC, Google is reading it and ignoring it.

