Reviews Blocks: Honest Aggregation and Rating Alignment
Build a reviews block from authentic customer feedback, handle zero reviews honestly, and keep visible ratings aligned with AggregateRating schema markup.
A reviews block summarizes authentic customer feedback for one clearly identified product, service, business, or location. It shows the average rating, rating scale, total eligible review count, source scope, and a small set of review excerpts without turning selected praise into manufactured social proof.
Customer reviews
No customer reviews yet
Be the first to share an experience after using the service.
This rendered zero-review state is deliberately honest. It does not show empty stars, a zero-out-of-five score, a review count of one, or a reassuring quote written by the business. When eligible reviews arrive, the same source-controlled component can replace this state with a real aggregate and attributable excerpts.
Why this element matters
Reviews reduce a specific kind of buyer uncertainty: the gap between what an organization claims and what customers say happened. A useful reviews block does not merely add enthusiasm. It helps a reader estimate consistency, recognize recurring strengths and limitations, and judge whether the experiences came from people in a situation like theirs. Count and distribution matter because a 5.0 average from one review communicates something different from a 4.7 average across a larger, varied record.
The psychology depends on credibility cues. A named source, visible date, disclosed verification method, mixed sentiment, and route to the underlying record help a reader inspect the evidence. A perfect score with no count, no source, and three polished quotations produces the opposite effect: the block asks for trust while withholding the facts needed to grant it. Negative and moderate reviews are not design defects. Suppressing them can make the remaining praise less believable and can distort the aggregate.
Machine extractability means software can identify the rated entity, rating value, scale, count, source, and individual review relationships without guessing from visual proximity. A row of five icons beside a product heading may look obvious to a person, yet a crawler cannot safely infer whether the icons rate the product, the seller, the delivery service, or the page itself. One typed block creates a bounded record whose visible facts can feed search, internal analytics, content migrations, and AI agents consistently.
The element writing rules provide the precedence rule: choose a component by purpose, not appearance. If a section aggregates customer evaluations, use a reviews block even when ordinary headings, star icons, and quotations could imitate it. The typed element enforces source ownership, entity identity, zero-state behavior, accessible labels, and structured-data alignment that loose markup cannot.
When to use it
Use a reviews block when authentic reviews exist in an approved first-party review system or an identified third-party platform and the feedback concerns the exact entity represented by the page. It is useful near a purchase or enquiry decision, after the page has explained what is offered and before a final action. It can also summarize a review corpus when readers need distribution and recent themes rather than a single testimonial.
Use it only when the inclusion policy is stable. “All published reviews from the last 24 months,” “all verified-purchase reviews,” and “the latest three reviews, while the aggregate uses all eligible reviews” are understandable rules. “The nicest comments we could find” is not. If the system cannot explain which reviews count, it cannot defend the displayed average.
Near-miss cases need different treatment:
- One attributed customer story with context and a specific outcome is a testimonial, not an aggregate.
- An editor’s hands-on verdict is editorial review content, not a customer rating.
- A case study explains an intervention and outcome; its approval does not turn it into a review.
- Employee, partner, influencer, or gifted-product comments require relationship disclosure and must not be labelled verified customer reviews unless the verification claim is true.
- Ratings for a company may not be reused as ratings for one product. Ratings for a nationwide brand may not be presented as evidence for one branch.
- A survey result is research evidence. Do not convert a satisfaction question into star ratings unless the survey instrument and conversion method were designed and disclosed for that use.
Do not use the block when the organization has zero reviews simply to fill a template. A visible zero state is appropriate when accepting reviews is part of the page task, such as a new product detail page. On a feature explanation where reviews are incidental, suppressing the entire block is usually clearer.
Where to place it
Placement works when the reader knows what is being rated before seeing the score. Put the block after the product, service, solution, or location has been identified and its essential facts explained. On a long commercial page, place the aggregate after the main value proposition and supporting details, then place the primary call to action after the reviews or after the next objection-handling section.
For a product page, the usual position is below specifications, fit, delivery, and returns information. For a service or solution page, put reviews after scope and process, where customer experience can test the claims already made. For a location page, keep the block close to the branch identity and local contact details so the rated location is unambiguous.
Do not place a reviews block:
- above the page’s direct description, where the reader cannot identify the rated entity;
- between a claim and the evidence that supports that claim;
- beside a different entity’s card, price, or booking action;
- beside an unlabelled testimonial carousel that could be mistaken for part of the aggregate;
- next to a countdown, stock-pressure message, or guarantee that makes the proof feel coercive;
- inside a comparison table, where one aggregate may appear to apply to several options;
- beside a conflicting rating value copied into prose, badges, or navigation.
If reviews come from multiple sources, keep the overall scope and source breakdown inside one block. Do not scatter platform badges around the page and expect readers or machines to reconcile them.
Anatomy
- Rated entity: the exact product, service, business, or location represented by the aggregate.
- Average and scale: a numeric value with an explicit maximum, such as “4.6 out of 5,” not icons alone.
- Eligible review count: the number of records used in the calculation, separate from the number of excerpts shown.
- Rating distribution: counts or proportions for each rating level, all calculated from the same eligible set.
- Source scope: the first-party system or named platforms included, plus the applicable date range or last-sync time.
- Review excerpt: customer-authored text kept faithful to the source and linked to or traceable back to its record.
- Attribution and date: the permitted public identity, review date, and relationship or verification label.
- Full-set route: a link or control that exposes more reviews, filtering, moderation information, and source details.
Design examples
Every variant preserves entity, scale, count, and source. Layout may change; evidence may not.
Standard summary with excerpts
Show the average, count, distribution, and three to six excerpts. This is the default for a detail page where reviews support a decision and enough records exist to make distribution useful.
Compact aggregate
Show the explicit numeric rating, scale, count, and source link without excerpts. Use this in a constrained summary area only when a full reviews block exists later on the same page or the destination provides the complete record.
Multi-source breakdown
Show one combined aggregate only when scales have a documented normalization and all sources rate the same entity. Include source-level counts so an auditor can reproduce the total and detect duplicates.
Filtered or segmented view
Allow readers to filter by rating, recency, verified status, or relevant product variant. Keep the unfiltered aggregate visible and label the filtered result count; never recalculate the headline silently from the selected subset.
Zero-review state
State that no reviews exist and offer a legitimate review action only to eligible customers. Do not render an average, AggregateRating markup, distribution, or fabricated example quote.
Parameters
Values marked “review source” are resolved records, not copy typed into the article. Limits keep the block scannable while the full review system retains the complete corpus.
| Name | Type | Required | Min/max | Default | Source |
|---|---|---|---|---|---|
source-id | Plain string | Yes | 1 stable identifier; 1–100 characters | None | Attribute |
entity-id | Plain string | Yes | 1 exact entity identifier; 1–100 characters | Current page entity when safely resolved | Attribute or page metadata |
variant | Enum: standard, compact, multi-source | No | 1 value | standard | Attribute |
heading | Plain string | No | 2–6 words; 60 characters maximum | “Customer reviews” | First heading in body |
max-excerpts | Integer | No | 0–6 | 3 for standard; 0 for compact | Attribute |
selection | Enum: newest, most-helpful, representative | No | 1 declared rule | newest | Attribute |
rating-value | Decimal | Required when count is above zero | Within source scale; one calculated value | None | Review source calculation |
best-rating | Decimal | Required when a rating is shown | Greater than worst-rating | Source scale maximum | Review source |
worst-rating | Decimal | Required when a rating is shown | Less than best-rating | Source scale minimum | Review source |
review-count | Integer | Yes | 0 or greater | 0 | Review source after eligibility and deduplication |
distribution | Rating-to-count map | No | One entry per scale level; sum equals review-count | Hidden when unavailable | Review source calculation |
reviews | Array of review records | No | 0–6 visible records | Selected by selection | Review source body records |
source-label | Plain string | Yes | 1–5 sources; 80 characters each | None | Review source configuration |
last-synced | Datetime | Yes for imported sources | One valid timestamp | None | Import pipeline |
Each visible review record contains a stable review ID, permitted public attribution, publication date, rating, source URL where available, verification or relationship status, and original review text. The body may supply the optional first heading only. Authors must never put review quotations, names, scores, or counts in the directive body.
Reviews-block syntax and code examples
All three notations identify the entity and approved review source. Rendering and structured data resolve from that same source snapshot.
Portable Markdown directive
:::reviews-block{source-id="reviews-main" entity-id="product-4821" variant=standard max-excerpts=3 selection=representative}
## Customer reviews
:::
Hugo shortcode
{{< reviews-block sourceId="reviews-main" entityId="product-4821" variant="standard" maxExcerpts="3" selection="representative" >}}
Customer reviews
{{< /reviews-block >}}
The Hugo adapter must resolve a server-side or build-time review record. Passing rating="4.9" or writing quotations in the body would create author-controlled social proof and fails the contract.
WordPress
<!-- wp:amicited/reviews {"sourceId":"reviews-main","entityId":"product-4821","variant":"standard","maxExcerpts":3,"selection":"representative"} /-->
[amicited_reviews source_id="reviews-main" entity_id="product-4821" variant="standard" max_excerpts="3" selection="representative"]
Use a dynamic block or registered shortcode that reads a protected review store. Editors may choose the approved source, display variant, and selection policy, but they may not overwrite the returned score, count, reviewer identity, or text.
Good and bad examples
Good: transparent source and mixed evidence
Customer reviews
4.4 out of 5 from 37 eligible reviews. Reviews are collected after completed appointments; last updated 26 August 2026.
“Booking was straightforward, although the first available date was two weeks away.” — verified appointment, July 2026
This is an illustrative specification, not a claim about a real business. It works as a production pattern because the entity would be known from the page, the numeric scale and eligible count are explicit, the collection method and update date are visible, and the excerpt retains a meaningful limitation. The published component would resolve every value from review records rather than copy this example.
Bad: invented certainty
Our customers love us!
★★★★★
“Simply the best. Five stars every time.” — Sarah
Trusted by thousands of happy customers.
This fails because the icons have no numeric scale or count, the reviewer cannot be traced to an approved source, and “thousands” is an unsupported quantity. The unqualified superlative and polished quote may have been written by marketing. Adding AggregateRating code would make the mismatch machine-readable rather than fix it. With zero authentic reviews, replace the entire block with the zero state or omit it.
Schema markup and accessibility
An eligible block can feed Schema.org AggregateRating for the same entity shown on the page. ratingValue maps to the visible average, reviewCount to the count of eligible reviews, and bestRating and worstRating to the visible scale. Individual visible records may feed Review objects with their review rating, author, date, and reviewed item when the site’s schema policy permits it.
Alignment is exact, not approximate. The markup and visible block must use the same entity, source scope, deduplication policy, scale, count, and calculation snapshot. Do not mark up 2,400 lifetime company reviews while showing 18 product-specific reviews. Do not emit AggregateRating in the zero state, use zero as a synthetic rating, hide the count, or mark up imported reviews that are not visibly represented. Structured data describes review evidence; it does not create eligibility for a search feature or validate the reviews as genuine.
Accessibility requires text equivalents for every visual encoding. Render “4.4 out of 5 from 37 reviews” as text even when stars are present. Give distribution bars accessible names such as “Five stars: 21 reviews,” and do not rely on bar width or color alone. Each excerpt should be a semantic article or list item with its attribution, rating, and date associated in reading order.
Filter controls need visible labels, keyboard operation, and announced result changes. Truncated reviews require an actual button whose expanded state is communicated; a visual fade is not enough. Reviewer avatars are usually decorative when the person’s name is already present and should use empty alternative text. Never expose email addresses, order numbers, or other private verification data to prove authenticity.
Writing rules
Every rule protects either authenticity or interpretability:
- One block rates one entity. Never merge company, product, seller, delivery, and branch feedback into one number, because readers cannot tell which experience the score represents.
- The source owns evidence. Rating, count, excerpt, name, date, verification status, and source URL come from approved records. Authors control only placement, heading, variant, and declared selection method.
- Zero means no claim. At zero reviews, show a sentence or nothing. Do not show zero stars, 0.0, “not yet rated” beside full stars, a seeded staff review, or AggregateRating markup.
- The aggregate uses the full eligible set. Do not calculate the headline from the three displayed excerpts. Apply the documented eligibility, moderation, and duplicate-removal rules before calculation.
- Excerpts show a fair range. Display three to six and use newest, most helpful, or a documented representative method. Never select only five-star records while implying they represent the corpus.
- Quotations remain faithful. Keep excerpts to 15–60 words. Truncate only at a natural boundary, mark omission, preserve the original meaning, and provide a route to the complete review where policy allows.
- Labels state what can be proven. Use “verified purchase” or “verified appointment” only when the system validates that event. “Verified review” is too vague unless the verification process is defined.
- Tone stays neutral. Prefer “Customer reviews” to “Why everyone loves us.” The block presents evidence; nearby prose can explain context without celebrating or dismissing reviewers.
- Recency remains visible. Show review dates and the import’s last-sync date. A current score derived from an abandoned feed is not current evidence.
- Moderation is not curation for praise. Remove spam, prohibited content, or private data under a published policy. Do not remove criticism because it lowers the average or rewrite a review to strengthen a claim.
Never place employee endorsements, composite quotations, AI-generated summaries presented as customer words, confidential details, unpublished incentive terms, unsupported outcome claims, competitor attacks, or legal rebuttals inside the block. A generated thematic summary may appear only as clearly labelled analysis outside the quoted reviews, with a disclosed method and a route to the underlying records.
Post types that use it
The postTypes array in frontmatter is the canonical relationship. “Conditional” means the block appears only when authentic, entity-matched review records exist and the placement helps the page’s decision.
| Post type | Requirement | Reviews-block role |
|---|---|---|
| Product page | Core when reviews exist | Aggregate feedback for the exact product or variant after specifications and purchase conditions are clear. |
| Category page | Conditional | Summarize category-level experience only when reviews genuinely rate the category experience; do not merge product ratings into one category score. |
| Service page | Conditional | Test service-scope and process claims with customer experience tied to that service, not the company generally. |
| Solution page | Conditional | Show feedback from customers who used the named solution for the represented audience without implying universal outcomes. |
| Feature page | Conditional | Use only when the source records explicitly concern the feature; general product reviews are a near miss. |
| Pricing page | Conditional | Address value and billing experience after plan facts, while keeping rating evidence separate from price claims. |
| Location page | Core when local reviews exist | Aggregate records for the exact branch or service location close to its identity and contact information. |
| Review page | Conditional and secondary | Separate customer-review aggregation from the publisher’s hands-on verdict; never use popularity as a substitute for testing. |
QA checklist
- Does the block aggregate authentic customer feedback rather than imitate a testimonial or editorial verdict?
- Is one exact rated entity established before the block appears?
- Does every record come from an approved, traceable source with a stable review ID?
- Is the eligibility, moderation, normalization, and duplicate-removal policy documented?
- Do the average, count, distribution, excerpts, and source breakdown use the same eligible set?
- Is the rating shown numerically with its best and worst scale values?
- Does the distribution sum to the eligible review count?
- Are three to six excerpts chosen by a declared method rather than by praise alone?
- Do excerpts preserve meaning, attribution, date, and verification status without exposing private data?
- Are incentives, gifts, employment, and other material relationships disclosed where applicable?
- Does the block render a truthful zero state or nothing when the count is zero?
- Is AggregateRating omitted in the zero state?
- Does any emitted AggregateRating match the visible entity, value, count, scale, source scope, and snapshot exactly?
- Are individual Review objects limited to visible, eligible review records?
- Is the source or full review set reachable for inspection where policy permits?
- Is
last-syncedrecent enough for the page’s freshness policy, with stale feeds failing visibly or suppressing the block? - Do stars, distributions, filters, and expanded states have complete text and keyboard equivalents?
- Is the block separated from conflicting scores, unrelated entities, coercive urgency, and unlabelled testimonials?
- Has the page avoided unsupported superlatives, manufactured quotations, and vague “verified” labels?
- Can an editor reproduce the displayed aggregate from the source records and documented calculation?
A reviews block is ready when a skeptical reader can understand what was rated, how much evidence exists, where it came from, and what its limits are—and a machine receives those same facts without a second, inflated version hidden in markup.
More tutorials in this section
Ready to put it into practice?
Free check · 7-day trial · no credit card