Review schema for SaaS in 2026: what Google allows
Review schema is structured data that tells machines what your testimonials are: who said what, and what rating they gave. For a SaaS company it is one of the cheapest changes you can make to a page. It is also one of the easiest to get wrong, because Google has rules about whose reviews count.
This post is a plain-language summary. It isn't legal advice, and Google's guidelines change, so read the current ones before you ship: search for "Google review snippet structured data guidelines".
What review schema is
Schema.org defines a vocabulary. You publish it in the page as JSON-LD, a block of JSON in a script tag. For testimonials, the pieces are:
Product(or another item type): the thing being reviewed.Review: one review, with anauthor, areviewBodyand optionally areviewRating.AggregateRating: a summary, with a rating value and a count.
Here is the shape, trimmed:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Example product",
"review": [
{
"@type": "Review",
"author": { "@type": "Person", "name": "Alex Doe" },
"reviewRating": { "@type": "Rating", "ratingValue": 5, "bestRating": 5 },
"reviewBody": "Setup took ten minutes."
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 5,
"ratingCount": 1
}
}The review schema generator builds this for you from a list of reviews and warns about the problems below.
What markup can and cannot do
Markup describes the page. It is not an instruction to Google. Google decides whether to show a review snippet for your page, and it can choose not to. No tool and no markup can promise a particular appearance or position in search results.
What markup does reliably is remove ambiguity. A crawler reading your HTML can tell a quote from a headline and a rating from a price. That helps search engines and the AI assistants that read pages.
Rules that matter
Reviews must be visible on the page
The reviews in your markup have to be on the page a visitor sees. Marking up reviews that aren't visible is against the guidelines. If your JSON-LD lists twenty reviews, the page should show those twenty, or the ones you mark up should be the ones on show.
Self-serving reviews of your own business
Google's guidelines say reviews about a LocalBusiness or Organization that the business controls and puts on its own site, are not eligible for review snippets. This is the rule most SaaS sites trip over when they mark up their own testimonials as reviews of their own company. A product has more room, but read the current wording of the rule and consider which item type fits.
Reviews should be about the item
If your markup says the item is your product, the reviews should be about your product. A quote about a person, a service you sold last year or another company's tool doesn't belong there.
Ratings come from real people
Only mark up ratings that reviewers actually gave. Don't compute a star rating from sentiment, and don't round up. An average of 4.6 stays 4.6.
Don't mark up third-party quotes you don't control
If you pull in a quote from another site, such as a directory listing, be careful about marking it up as if it were first-party. The simplest approach is to mark up only the reviews that were collected on your own page, with the author's permission.
A short checklist
- Every marked-up review is visible on the same page.
- The item type fits, and you have read the rule for self-serving reviews.
- Names, ratings and text match what the reviewer submitted.
- The count in
AggregateRatingequals the number of ratings you hold. - The JSON-LD is in the HTML your server returns, not added later by JavaScript. See what crawlers actually see.
- You have tested the page with Google's Rich Results Test and fixed the errors it reports.
Errors people make
- Counting without ratings. An aggregate with a count but no rating values is invalid.
- Stars from nowhere. If a testimonial has no rating, leave
reviewRatingout. - Hidden reviews. Markup for a carousel slide that is never displayed.
- Duplicate markup. Two plugins both adding schema to one page.
- One review at 5.0 shown as a "rating". A single review is a review, not a trend. Describe it honestly on the page.
What to do on a HappySaid proof page
Your proof page publishes the reviews it shows, with the markup in the HTML. See review schema, explained for the fields we include and how we compute the average.
The honest summary
Add markup because it makes your page clearer to machines, not because it is a trick. Keep it true, keep it visible and keep it matched to what a visitor reads. Whether a search engine rewards it is outside your control.