WiseAI Agency — Google Reviews Onsite Display
What renders
wiseaiagency.com home page — a "What clients say" section (id #reviews,
between the "Who we're for / not for" section and the FAQ) renders every
review tagged wiseaiagency in src/lib/reviews/google-business-reviews.ts,
one card per review: star rating, reviewer name, full verbatim text
(paragraph breaks preserved), and a "Read on Google" link to the public
listing.
realtywiseai.com home page — the same data source, filtered to reviews
tagged realtywiseai, replaces the page's former "illustrative" placeholder
testimonial figure (which was explicitly labelled as not a real quote).
Attribution rules (hard requirement)
reviewerNameis copied exactly as Google Maps displays it — full name if Google shows a full name, first-name-and-initial if that is what Google shows. Never expand, infer, or "clean up" a name.textis verbatim — no paraphrasing, trimming, or copy-editing. Paragraph breaks the reviewer typed are preserved.ratinganddatePublishedare recorded as Google displayed them at capture time. Google Maps shows only a relative date ("6 days ago"), never an absolute one —datePublishedis that relative time resolved against the capture date and is documented in the data file as approximate (accurate to the day, not the minute).- Every review links to the public listing
(
WISEAI_AGENCY_GOOGLE_LISTING_URL) via "Read on Google" so a visitor can verify it themselves. - No fabricated content. A review that cannot be captured verbatim is omitted, not reconstructed from a partial/truncated preview. (See the Terry Beckett Sutton Woodstock omission below — a live example of this rule being applied.)
No fabricated content — the Terry Beckett omission
At capture time (2026-09-29) the public listing showed three 5-star reviews: Terry Beckett Sutton Woodstock, Sheri Beckett, and Anthony Denny. Terry Beckett's review could not be captured in full: Google's "See more" control would not expand it across roughly 15 different interaction attempts (direct click, keyboard Enter/Space activation, a fresh browser tab, the dedicated Reviews tab, re-sorting), and partway through the capture session it stopped appearing in the reviews list entirely — even though the listing's aggregate count stayed at "3 reviews" / 5.0 average.
Rather than publish a truncated fragment or reconstruct the missing body
text, that review is not included in google-business-reviews.ts. The
data file documents this at its top and is shaped so a fourth object can be
appended the moment the full text is captured verbatim (e.g., from the
Business Profile owner dashboard, or once the public listing stabilizes).
Consequence: realtywiseai.com currently shows only one real-estate review (Sheri Beckett of Team Beckett) instead of the two originally expected (Sheri + Terry, the two halves of Team Beckett).
Schema.org
No Review and no aggregateRating markup is emitted for these reviews
(since 2026-10-06). They are visible HTML only.
History: PR #1772 nested each review as a Review node under the site's
Organization JSON-LD (wiseaiagency.com: ORG_JSON_LD in
src/app/wiseaiagency/layout.tsx; realtywiseai.com:
REALTYWISE_JSON_LD.organization in src/lib/vertical-json-ld.ts) with no
aggregateRating. On 2026-10-06 Google Search Console emailed the critical
issue "Multiple reviews without aggregateRating object" for
wiseaiagency.com (critical = the page is ineligible for the review-snippet
feature). The review arrays and the googleReviewJsonLd() builder were
removed from both sites in response.
Why removal rather than adding aggregateRating:
- Google's review-snippet guidelines treat reviews about an
OrganizationorLocalBusinessthat are published on that entity's own site as self-serving. They are never shown as a rich result, so the markup could not earn anything even when valid. - Google's own count/average for the listing drifts from what this file captures (see the Terry Beckett omission), so an asserted aggregate would be a false, verifiable-as-wrong claim.
Acceptance: the Organization JSON-LD on wiseaiagency.com and
realtywiseai.com contains neither a review nor an aggregateRating
property, and the "What clients say" sections still render every review from
reviewsForSite() with the "Read on Google" link. Do not reintroduce either
property for these reviews.
Adding a review later
Append one object to GOOGLE_BUSINESS_REVIEWS in
src/lib/reviews/google-business-reviews.ts with the reviewer's name,
rating, an approximate datePublished, the verbatim text, and the
sites array it should appear on. No component change is needed — both
pages render whatever reviewsForSite() returns.
Related PRs
- Implementation: churchwiseai-web PR #1772 (
feat/google-reviews-onsite). FEATURE_REGISTRY.mdentry: DEV repo PR (branchdocs/feature-registry-google-reviews), a one-line addition under WiseAI Agency → Local Business Platform.