Self-serving review markup, and the line Google drew in 2019.
In September 2019, Google quietly killed star snippets for a particular kind of schema. Most stores never noticed. Many are still violating the policy seven years later.
CONTENTS · 07
On September 16, 2019, Google's search team published a short update to the rich results documentation. The update did not get a press release. It got a paragraph. The paragraph said that, from that point, Google would no longer display review rich results for the schema types `LocalBusiness` and `Organization` when the reviews in question were placed on a page controlled by the entity being reviewed. The technical term in the post was "self-serving reviews." The line was drawn on a Tuesday.
The policy is still in effect. It has not been rescinded, softened, or modified. The current Google documentation on review snippets contains an explicit paragraph titled "Self-serving reviews aren't allowed for `LocalBusiness` and `Organization`." The paragraph reads, almost verbatim, the way it did in 2019. Six and a half years later, a meaningful portion of the schema being shipped by mid-market ecommerce brands and their review platform partners is in technical violation of it. Most of those brands do not know.
The "complete guides to review schema" published by the large review platforms gloss the policy in a sentence, if they mention it at all. The most-trafficked guide in the category, last refreshed in early 2026, devotes a single line to it ("note: Google does not allow self-serving reviews on Organization markup") and moves on. The reader is left to infer that the rule applies to someone else.
It applies to almost everyone.
What "self-serving" actually means in the policy
The Google policy defines a self-serving review as a review of the entity, written or aggregated on a page that the entity itself controls. The canonical violation is this. A direct-to-consumer brand collects two thousand reviews of the brand-as-a-business through an on-site widget. The brand then injects `Organization` schema into its homepage or its /about page, with an `aggregateRating` block summarising those reviews, and waits for a star snippet in search results.
The star snippet does not arrive. Google has decided, since 2019, that this configuration is too easily gamed. The entity controls the page. The entity controls the review collection flow. The entity controls the moderation. The entity is asking Google to display, in a position of trust on the search results page, an aggregate score it has every incentive to inflate.
The 2019 announcement gave two specific examples of what is not allowed. The first: a company's own homepage with `Organization` schema, marking up reviews collected on that same homepage. The second: a company's contact page marking up reviews of the business as a whole. The policy makes one allowance for `LocalBusiness`: reviews of a specific named place (a restaurant, a clinic, a retail store) where the reviewer is, in practice, reviewing a physical location and not the entity that owns the website. That allowance is narrow, and the bar is "real place, real visit."
What the policy explicitly does not block is review schema for the things being sold. `Product` schema with `aggregateRating` and `review` blocks is fully supported. A serum, a tote bag, a candle, a pair of running shoes. Each product is a discrete thing. Reviews of that discrete thing, marked up on its product page, are eligible for rich results. The thing being reviewed is not the entity that owns the page; it is an inventory item on the page.
This is the line. It is sharper than it looks.
Why Google drew it
Google's own explanation, in 2019, was that self-serving reviews "weren't useful for searchers" and were "open to manipulation." Read between the lines and the company is saying something narrower: `Organization` schema's review block had become the most-spammed schema property on the open web. A site could mark up five fake reviews on its homepage, score five stars, and earn a star snippet in branded search. The snippet would lend false credibility to anything sold downstream. The fix was structural, not punitive. Stop showing the snippet at all for the schema type that had been most-abused.
The same logic explains why `Product` snippets survived. A specific product on a specific page has a much narrower attack surface. The product can be verified to exist. The reviews can be tied to a specific SKU, ideally to a verified purchase. The review platforms in the category, for all their flaws, do some of this verification.
The deeper lesson, for any operator reading this in 2026, is that Google drew the line at the entity boundary. Star snippets are available for the things you sell, individually, with their own URLs and their own reviews. Star snippets are not available for the brand-as-a-whole, marked up on a page where the brand itself is the author, editor, and judge.
What stores are actually shipping in 2026
Run a Schema Validator pass against the homepages of fifty mid-market DTC brands and roughly a third of them are still shipping `Organization` schema with an `aggregateRating` block. The block is usually injected by the review platform, sometimes by an SEO plugin, occasionally by a developer who copy-pasted it from a tutorial in 2018. The schema validates. It does not produce a rich result. It has not produced a rich result for six years. The brand assumes it is doing something useful. It is not.
The pattern is so consistent that it has become a tell. If you visit a brand's homepage, view source, and find an `Organization` block with stars in it, you can be reasonably sure that nobody in the marketing organisation has audited the schema since the policy changed. The review platform shipped the default and the brand never looked again. This is also true of brands that pay six figures a year for "enterprise" review software.
The cost is not a manual penalty. Google does not, as a rule, hand out manual actions for this. The cost is the assumption that something is working when nothing is happening. The schema sits there, validating, producing zero rich results, taking up bytes in the page weight, occasionally confusing AI crawlers that read the schema as a signal of the brand's self-evaluation.
What stores can legitimately mark up
The compliant playbook in 2026 is narrower than the schema documentation suggests, but it is real. Three patterns are clearly allowed.
The first is `Product` schema with `aggregateRating` and `review` blocks on individual product pages. This is the schema rich results were designed for. The policy is unambiguous. The implementation question is whether the review content lives in the page's server-rendered HTML or only inside a JavaScript widget; that is a different post (see the half life of a product page). The schema itself is welcome.
The second is third-party-aggregator schema, where the entity is reviewed on a page the entity does not control, and the brand simply links to it. A Trustpilot or Google Business profile page marks up its own reviews. The brand is allowed to link to those pages, can use `sameAs` to declare them as the same entity, and is not making any first-party claim about itself. This is the only legitimate way to surface "brand-level" review signal to AI search engines without violating the self-serving policy.
The third is `LocalBusiness` schema for genuine physical places. A retail location, with a real address, that customers actually visit. The reviews mark up a real-world experience tied to a real-world place, not the entity-as-a-whole. The policy explicitly preserves this case. The bar is that the place must be a place; an "address" that is a fulfilment warehouse or a registered office does not qualify.
Anything outside those three patterns is either non-compliant or not eligible for rich results, which in practice means the schema is doing nothing useful.
The non-compliant version, observed in the wild on a skincare brand's homepage in early 2026:
```json { "@context": "https://schema.org", "@type": "Organization", "name": "Brand Name", "url": "https://www.brandname.com", "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.8", "reviewCount": "2143" } } ```
This is exactly the configuration the 2019 policy disallows. The entity is the brand. The page is the brand's homepage. The 2,143 reviews are collected on the brand's own site. The schema will validate, produce zero rich results, and quietly age.
The compliant version, for the same brand, separates the concerns:
```json { "@context": "https://schema.org", "@type": "Organization", "name": "Brand Name", "url": "https://www.brandname.com", "sameAs": [ "https://www.trustpilot.com/review/brandname.com", "https://www.linkedin.com/company/brandname" ] } ```
The `aggregateRating` is gone. The `sameAs` block points at third-party pages that, independently, host their own reviews under their own schema. The brand has declared its identity (see claimreview and the schema competitors wont ship for related territory), made it easier for AI search to verify the entity, and stopped asking Google to take its word for a self-rated score.
The product pages, separately, can carry `Product` schema with real review blocks tied to verified purchases. That is the schema that earns rich results. That is the schema that is, in turn, the surface AI answer engines tend to read first.
How AI search engines read the same schema
The 2019 policy was written for blue-link search. The schema persists, however, in a web where the readers of structured data are increasingly not Google's rich-result renderer but the answer engines and their crawlers. GPTBot, ClaudeBot, PerplexityBot, and Google-Extended all parse `Organization` schema as a source of structured truth about a brand. The question of how they treat a self-serving `aggregateRating` is worth a separate look.
In testing run in early 2026 against three of the major answer engines, the pattern was consistent. When a brand's homepage shipped an `Organization` block with an `aggregateRating` of 4.9 from 2,000+ self-collected reviews, the answer engines almost never cited the score as a fact about the brand. The schema was read, the score was noted, and the score was treated, correctly, as the brand's self-evaluation rather than as evidence. Sometimes the engine surfaced the score with a hedge ("according to the brand's own site"). More often the engine ignored it and reached, instead, for a Trustpilot aggregate, a Reddit thread, or an individual customer review on the product page.
This is the same pattern Google's policy team identified in 2019, applied at a different layer. The engines treat the entity-reviewing-itself signal as low-evidence. They prefer evidence that comes from outside the entity. The schema is not punished. It is simply not used. Shipping it produces no harm and no benefit, with the small cost of bytes on the page and the slightly larger cost of a brand that thinks it is being heard when it is not. (See the citation economy for the larger architecture of which sentences engines reach for.)
What review platforms still ship by default
Three of the larger platforms in the DTC category still ship `Organization` schema with `aggregateRating` as an installable widget option, with the option turned on by default. The settings page sometimes contains a note ("for branded search snippets"). The note has been wrong since 2019.
The pattern is not malicious; it is inertia. The schema was added before the policy changed and nobody removed it. The platforms know. They will sometimes, on request, disable it for a specific account. They do not, in general, surface the issue to customers as a problem worth fixing.
For an operator auditing a site in 2026, the check is two minutes. View the homepage source. Search for `"@type": "Organization"`. If you find an `aggregateRating` block inside it, remove the schema or replace it with the compliant pattern above. The change will not move any rankings. It will stop a quiet, ongoing policy violation, clean up the page weight, and remove an artefact that confuses AI crawlers reading the page as evidence.
The closing turn
The 2019 policy is a small one. It was written for a different web, before answer engines existed, before AI search crawlers parsed schema as a citation surface, when "rich results" still meant a star snippet next to a blue link. The lesson it carries forward is not about Google. It is about where credibility is allowed to live.
Credibility, by Google's reasoning in 2019 and by every answer engine's reasoning since, has to come from somewhere outside the entity making the claim. The product is reviewed by people who bought it. The business is reviewed by people who visited it. The brand-as-a-whole, marked up by its own marketing team on its own homepage, is reviewing itself, and the search infrastructure has decided, correctly, that it will not stand behind the score. The same logic, six years later, governs the citation economy (the citation economy). The sentence that gets cited is the one written by somebody else, on something else, about a specific thing they used. Schema can declare that. Schema cannot manufacture it.
If any of this reads like something your store could use,write to us.
We will write back.