Setup guide: connect platforms, match your brand

Everything needed to get your widget live: where your reviews come from, what to send us, how to make the widget look native to your website (there's an AI prompt that does it for you), and how reviewer avatars work.

1. Connect your review platforms

Connection difficulty varies by platform — some sync automatically forever, some need a one-time export. Every source feeds the same widget and the same weekly re-sync.

🟢 Google Business Profile

Auto-sync

What we need from you: your Google Business Profile link — open business.google.com, or just send us the link that appears when you search your business name on Google Maps.

What syncs: your TRUE Google rating and total review count (shown in the widget's header and schema), the review texts Google exposes via its official API, reviewer names, dates, and reviewer profile photos (avatars). Re-synced weekly through Google's official Places API — no third-party tools, no GoHighLevel, nothing to install on your side.

🔴 Yelp

Auto-sync

What we need from you: your Yelp business page URL (e.g. yelp.com/biz/your-business-name).

What syncs: reviewer name, rating, text, date and reviewer avatar. Yelp blocks automated servers, so the connection uses our 30-second browser import (below) — you run one snippet on your own Yelp page while logged into your normal browser, and it captures your reviews and true totals. We refresh it quarterly, or whenever you re-run the snippet.

🔵 Facebook

Semi-automatic

What we need from you: your Facebook page URL, plus one of:

  • Recommended: connect via your GHL/reputation tool (Facebook reviews flow automatically), or
  • Make us a Page collaborator with read access (Settings → Page access), or
  • One-time export: send screenshots or copy-paste of your recommendations — we import via CSV and refresh quarterly.

What syncs: reviewer name, recommendation text, date. Avatars only via Page access.

⚡ GoHighLevel / ReputationHub

Auto-sync — optional

Completely optional — ReviewUnion connects to every platform directly and does not require GoHighLevel. But if your business or your marketing agency already uses GHL's reputation tools, it's a convenient shortcut: GHL already aggregates your Google, Facebook and other reviews, so one link connects everything at once.

What we need from you: the link to any page where your GHL review widget is embedded (we detect it automatically), or ask your agency for the widget's location ID and widget ID.

What syncs: everything GHL has — names, ratings, full text, dates, platform badges — re-synced weekly forever. (GHL does not expose reviewer photos; avatars fall back to initials.)

🔷 Thumbtack, Angi, Houzz, BBB, Nextdoor

Semi-automatic

What we need from you: your public profile URL on the platform.

What syncs: whatever the platform exposes publicly — typically name, rating, text and date; avatars where available (Thumbtack and Houzz usually yes; Nextdoor no). Platforms that restrict public access fall back to a quarterly CSV refresh that we handle.

🧲 Universal browser import — Yelp, Facebook, Nextdoor, anything

30 seconds, no account access

Some platforms block automated servers but happily show you your own reviews. This snippet runs in your browser on any review page and captures the reviews that page contains — no passwords, no API keys, nothing installed. It reads only what's already on your screen.

  1. Open your business's review page (your Yelp listing, Facebook reviews tab, etc.) in Chrome.
  2. Press F12 (or right-click → Inspect) and open the Console tab.
  3. Paste the snippet below, hit Enter — it copies your reviews as JSON to the clipboard.
  4. Paste the result into an email to us. Done — they merge into your widget with platform badges.
(()=>{const out=[];const walk=o=>{if(!o||typeof o!=="object")return;if(Array.isArray(o))return o.forEach(walk);const t=[].concat(o["@type"]||[]);if(t.includes("Review")&&(o.reviewBody||o.description)){const a=o.author;const rating=parseFloat((o.reviewRating&&o.reviewRating.ratingValue)||o.reviewRating);if(rating)out.push({author:typeof a==="string"?a:(a&&a.name)||"Anonymous",rating:rating,text:String(o.reviewBody||o.description).trim(),date:String(o.datePublished||"").slice(0,10),source:location.hostname.replace(/^www\./,"").split(".")[0]})}Object.values(o).forEach(walk)};document.querySelectorAll('script[type="application/ld+json"]').forEach(s=>{try{walk(JSON.parse(s.textContent))}catch(e){}});const json=JSON.stringify(out,null,1);console.log(json);if(navigator.clipboard)navigator.clipboard.writeText(json);alert("ReviewUnion: extracted "+out.length+" reviews — JSON copied to clipboard.")})()

Scroll down the page first so more reviews load, then run it. Works on any site that marks up its reviews with schema.org — Yelp, Houzz, BBB, TrustPilot and most directories do.

📄 CSV import — anything else

Manual

Reviews from anywhere — email testimonials, Reddit threads, industry directories — via a simple spreadsheet:

author,rating,text,date,source,avatar
"Jane D.",5,"Fantastic work, on time and on budget","2026-05-14",google,https://…/jane.jpg
"Mike R.",5,"Best crew we've hired","2026-04-02",nextdoor,

The avatar column is optional — leave it empty and the widget shows the reviewer's initials in your brand color.

⚠️ Only real reviews. We publish your true cross-platform average in schema markup that Google can verify against the source platforms. Fabricated reviews put your search rankings at risk — we won't import them.

2. Match the widget to your website — the AI prompt

The widget has five styling controls. You can set them by hand, or let any AI assistant (ChatGPT, Claude, Gemini) read your website and write the embed code for you.

AttributeWhat it doesValues
data-accentStars, buttons, avatarsany CSS color, e.g. #38512F
data-themeCard background schemelight / dark
data-fontTypographyinherit (adopts your site's font) or any font stack
data-layoutArrangementgrid / carousel / list / badge
data-min-rating / data-limitFilteringe.g. 4 / 6

Copy this prompt into any AI assistant

You are a front-end designer. I'm installing the ReviewUnion review widget on my website and want it to look like a native part of my site's design.

MY WEBSITE: {{paste your website URL here}}
MY WIDGET KEY: {{paste your ru_… key here}}

Analyze my website's visual identity (fetch the URL if you can; otherwise I'll paste my CSS or a screenshot below). Determine:

1. PRIMARY BRAND COLOR — the color used for buttons, links, or headings that best represents the brand. Convert it to a hex code. Avoid pure black; if the site is monochrome, pick the strongest accent used on CTAs.
2. THEME — if the section where reviews will live has a dark background, choose "dark"; otherwise "light".
3. TYPOGRAPHY — identify the site's body font family. If it's a custom or Google font already loaded on my site, the widget should inherit it.
4. LAYOUT — recommend: "grid" for spacious pages, "carousel" for narrow sections or long review lists, "list" for text-heavy minimal sites, "badge" for headers/footers.

Then output exactly this, filled in:

<!-- Place where reviews should appear -->
<div data-reviewunion
     data-accent="{hex}"
     data-theme="{light|dark}"
     data-font="inherit"
     data-layout="{grid|carousel|list|badge}"></div>
<script src="https://reviewunion.net/widget.js" data-key="{{my key}}" async></script>

Rules:
- data-font should be "inherit" unless my site uses a default system font AND has poor typography — in that case omit data-font entirely.
- Only include data-theme="dark" if you're confident the background is dark; the widget defaults to light.
- After the snippet, briefly explain (2-3 sentences) which color and font you detected and where on my site you found them, so I can sanity-check.
- If you cannot access my site, ask me for either (a) a screenshot of my homepage, or (b) the CSS :root/body rules — then proceed.

Paste the AI's output into your page — done. If you're on our done-for-you setup ($99), skip all of this: we do it and send you a preview link.

Manual example

<div data-reviewunion data-accent="#38512F" data-font="inherit" data-layout="grid"></div>
<script src="https://reviewunion.net/widget.js" data-key="ru_yourbusiness" async></script>

3. Reviewer avatars

When a platform provides the reviewer's profile photo, the widget shows it automatically; when it doesn't (or the photo fails to load), it falls back to the reviewer's initials in your accent color — no broken images, ever.

PlatformAvatars available?
Google Business Profile✅ Yes (profile photos)
Yelp (via browser import)✅ Yes
Thumbtack / Houzz✅ Usually
Facebook⚠️ Only with Page access
GoHighLevel sync (optional)❌ Not exposed — initials fallback
CSV import✅ If you include an avatar URL column

Privacy note: avatars are the public profile photos reviewers chose to attach to their public reviews. We hotlink with referrerpolicy="no-referrer" and never store or redistribute the images.

4. Onboarding checklist — what to send us

  1. Business basics: name, website URL, phone, service area.
  2. The domain(s) your widget will run on (it's licensed per domain).
  3. Platform links: Google Maps link, Yelp URL, Facebook page, Thumbtack profile — whatever you have. Or one GHL widget link if you use GoHighLevel.
  4. Your brand color (or skip it — the AI prompt above, or we, will detect it).
  5. Where you want reviews shown (homepage section, dedicated reviews page, or both).

Email it all to vitalii@reviewunion.net — your widget key and install page arrive within one business day.