WriteMySEO / Blog / Review Markup After the Self-Serving Review Change
SEO technology

Review Markup After the Self-Serving Review Change

Which review markup still earns stars in Google, why local business and Organization testimonials do not, and how to structure review content that actually qualifies.

Plenty of sites still ship aggregateRating on their homepage Organization block, watch it validate cleanly in the Rich Results Test, and then file a ticket because the stars never appear. The markup isn't broken. It's ineligible, and it has been since 2019.

Google's September 2019 change to review rich results did two things at once, and conflating them causes most of the confusion that persists today. It restricted review snippets to a specific list of schema.org types, and it disqualified self-serving reviews — reviews about an entity, placed on that entity's own site — for LocalBusiness and Organization. Neither change removed review markup as a concept. Both changed which markup does anything.

What actually changed, and what didn't

Google documented the change as a narrowing of the review snippet feature, not a penalty. Three parts are worth separating:

What did not change: leaving ineligible review markup in place is not itself a violation. It's inert. The exception is markup that misrepresents content — fabricated ratings, or ratings aggregated from sources the page doesn't actually show — which falls under spammy structured data and can attract a manual action.

Who counts as "self-serving"?

The test is relational, not typographic. It asks whether the site publishing the markup is the same entity as, or controlled by, the entity being reviewed. A directory reviewing a plumber is a third party. The plumber reviewing the plumber is not.

SituationType usedReview snippet eligible?
Retailer marks up customer reviews of a product it sellsProductYes
Manufacturer marks up reviews of its own productProductYes
Restaurant marks up testimonials about itselfLocalBusinessNo — self-serving
Agency marks up client praise on its homepageOrganizationNo — self-serving
Directory marks up user reviews of listed businessesLocalBusinessYes, if reviews are genuine and visible
Publisher's critic review of a filmMovieYes
Brand copies its G2 rating onto its own siteOrganization / SoftwareApplicationNo — self-serving and aggregated from elsewhere

The last row is where most disagreement lives. Some practitioners argue that a SoftwareApplication rating is a product rating, not an organization rating, and therefore escapes the self-serving rule. The counterargument is that for a single-product SaaS company the application is the entity, and Google's guidelines separately instruct publishers not to aggregate ratings from other sites. The decision criterion: if the reviews were collected by you, are displayed in full on the page, and describe a product rather than the company, you have a defensible case. If you scraped a score off a third-party platform, you do not.

Why product reviews are the exception that matters

The self-serving restriction names LocalBusiness and Organization specifically. It does not extend to Product. That asymmetry is deliberate and it is the single most useful thing to understand about the current state of review markup: an ecommerce site can still mark up its own customers' reviews of its own products and be eligible for stars.

The mechanism is that a product review is about a discrete item that exists independently of the seller, and multiple sellers can host reviews of it. A testimonial about your agency exists only in your interest. Google drew the line where third-party corroboration is plausible.

This is also where the review ecosystem moved. Brand-level and store-level stars now come from sources Google controls or trusts rather than from your markup — merchant and seller rating signals collected from Google's own review programs and approved third-party review providers. You influence those by collecting real reviews through a supported provider, not by editing JSON-LD.

Structuring review content that qualifies

Eligibility requires the marked-up reviews to be genuine, visible on the page, and attributable. A minimum viable product review block:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Aeron Chair, Size B",
  "sku": "AER-B-GR",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "218",
    "bestRating": "5"
  },
  "review": [{
    "@type": "Review",
    "author": { "@type": "Person", "name": "Dana R." },
    "datePublished": "2024-11-02",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5",
      "bestRating": "5"
    },
    "reviewBody": "Third year of daily use, no sag in the mesh."
  }]
}

The rules that trip people up:

  1. The rating must be visible. If ratingValue is 4.6 and the page shows nothing, the item is not eligible. Users must be able to find the reviews on the marked-up page.
  2. author.name must be a real reviewer name, person or organization — not the product, not your brand, not "Verified Buyer" alone as the entire identity.
  3. reviewCount must match reality. Counting the same review across variant URLs inflates numbers and is a common accidental misrepresentation.
  4. Don't import scores. Ratings should come from users who submitted them to you.
  5. One reviewed item per rating. A category page rating that averages across many products has no valid subject.

How to tell whether markup or eligibility is the problem

Syntax validity and feature eligibility are different checks, and confusing them wastes days. The Rich Results Test tells you whether Google can parse the item and whether the item is eligible for a feature it supports. It will not tell you that your LocalBusiness self-review is philosophically disqualified in a way you'd recognize as an error message.

A practical decision path:

What to do this week

  1. Crawl your own site for aggregateRating and review nodes and record the parent @type for each. Anything on Organization, LocalBusiness, Service, WebPage, or Article about yourself is dead weight — remove it or move the content to a type that qualifies.
  2. Keep the testimonials page. Keep the reviews visible. They still do conversion and E-E-A-T work; they just don't earn stars.
  3. Audit reviewCount against your actual review database, per canonical URL, not per variant.
  4. If you want store-level stars, route review collection through a review provider Google supports instead of hand-authoring an Organization rating.
  5. Add the structured data check to your deploy pipeline so a template refactor doesn't silently drop name or author from product review blocks.

The short version: reviews of things you sell are still fair game. Reviews of yourself, on your own site, are not — and no amount of valid JSON-LD changes that.

structured datarich resultsreviewsschema.org

WriteMySEO produces marketing content, not legal, medical, financial, or compliance advice. Figures cited reflect publicly reported industry data at time of writing and shift over time.

Get started

We write this well about your industry, every month.

AI-drafted, human-reviewed SEO content on a flat subscription. Blog posts, metadata, schema, and internal links, shipped on a monthly rhythm.

See plans

More from the blog