Reusable embed served from widgets.bentliquid.com. Config lives entirely in the embed tag — no database, no per-client server records.
<script src="https://widgets.bentliquid.com/google-reviews.js" async></script>
<!-- Use place-id="PLACE_ID_HERE" instead of gbp-location if this client
isn't on the Business Profile API yet (see scripts/gbp-list-locations.mjs) -->
<google-reviews-widget
gbp-location="GBP_LOCATION_HERE"
layout="marquee"
direction="elevated"
min-rating="5"
primary-color="#1a1a1a"
text-color="#1a1a1a"
theme="light"
align="left"
hide-summary="false"
hide-empty-reviews="true"
></google-reviews-widget>
place-id | Google Place ID. Required unless gbp-location is set. |
gbp-location | Business Profile resource name, accounts/{id}/locations/{id}. Opt-in — switches this embed from the Places API (≤5 reviews, always live) to the Business Profile API (every review, cached 1 hour). Takes priority over place-id when both are set. Find it with scripts/gbp-list-locations.mjs. |
layout | marquee (default), grid, list, spotlight, badge |
direction | elevated (default), minimal, editorial — visual treatment, independent of layout |
max-reviews | Default 5 on Places (Google's own cap), 200 on the Business Profile path (clamped 1–200) — leave unset there to show everything. |
min-rating | 0–5, default 0. Hides reviews below this rating. Opt-in curation — see CLAUDE.md. On Places, Google picks which ≤5 reviews it returns, so a strict value can leave very few. On the Business Profile path this is a real "5-star only" filter over every review. |
primary-color | Interactive accent (links, dots, "read full review") |
text-color | Body text color |
theme | light (default) or dark |
hide-empty-reviews | Default true — hides reviews with no written text (a bare star rating). Keys off text only, not rating. Set "false" to show every review. |
api-base | Override the proxy origin (rarely needed) |
align | left (default), center — summary + attribution row only, for full-width embeds |
hide-summary | true hides the business-name/rating row. Attribution row stays regardless. |
draggable | Default false. marquee only — grab the auto-scrolling strip mid-motion and drag it; releases back into auto-scroll from that spot, no snap. No effect under reduced-motion. |
Renders when a ?place_id= query param is present, e.g. ?place_id=ChIJ...
Add ?place_id= to the URL to preview.