GHL Google Reviews Widget Setup and WordPress Embedding
Purpose
This SOP documents how to configure a Google Reviews widget inside a GHL sub-account and embed it on the client's WordPress site. The widget replaces hardcoded testimonials with live, filtered reviews pulled directly from the client's connected Google Business Profile. Filtering by minimum star rating ensures only qualifying reviews render on the site.
Scope
Covers:
- Creating and configuring a Reviews widget in the GHL Reputation module
- Applying a minimum star-rating filter (commonly 3-star or 4-star and above)
- Styling the widget to match client brand (colors, layout)
- Copying the widget embed snippet
- Embedding the widget on a WordPress site using Elementor, Gutenberg, or the LeadConnector shortcode
- Testing the embedded widget on mobile and desktop
- Ongoing management (filter changes, styling updates, sync monitoring)
Does Not Cover:
- Generating review requests (see Manual Google Review Request Configuration SOP)
- AI-drafted responses to incoming reviews (see AI Review Response Configuration SOP)
- Initial WordPress hosting, DNS, or plugin installation (see GHL WordPress Setup Procedures)
- Displaying reviews from sources other than Google Business Profile (Facebook, Yelp, etc.)
- Building a custom testimonial component outside the GHL widget
Prerequisites
- GHL sub-account access (admin level)
- Google Business Profile already connected to the sub-account and syncing reviews into the Reputation module (follow Manual Google Review Request Configuration SOP, Step 1, if not yet connected)
- At least one review visible under Reputation > Reviews (the widget renders nothing until reviews exist)
- WordPress site running the Symphony Core stack (Astra + Elementor + LeadConnector) per WordPress Setup Procedures, with edit access to the page where the widget will appear
- Client brand colors and (optionally) fonts for widget styling
Step-by-Step Procedure
Step 1: Open the Reviews Widget Builder
- Log into the GHL sub-account
- Click Reputation in the left navigation
- Click Widgets in the Reputation sidebar
- Click + New Widget (or Create Widget)
Step 2: Select Widget Type and Layout
- Select Reviews Widget (as opposed to a review-request widget)
- Choose a layout:
- Carousel -- recommended for homepage hero and above-the-fold sections; rotates through reviews automatically
- Grid -- recommended for a dedicated "Testimonials" page; shows multiple reviews at once
- List -- single-column stack; best for narrow sidebars or long-scroll pages
- Set the number of reviews to display (carousel defaults: 5–10; grid defaults: 6–9)
Step 3: Configure Review Filter
- Locate the Minimum Rating (or Rating Filter) control
- Set the threshold:
- 3 stars and above -- broadest inclusion while hiding clearly negative reviews
- 4 stars and above -- stricter filter; recommended when the client has a large review volume and wants a curated feel
- (Optional) Set a minimum review length to suppress one-word reviews
- (Optional) Toggle whether to require a written comment (excludes star-only reviews)
Document the chosen threshold in the client's profile or operational notes so future edits preserve intent.
Step 4: Choose Display Fields
Select which review attributes render in each card:
- Reviewer name (default: on)
- Star rating (default: on)
- Review text (default: on; set a character truncation with "read more" expansion if reviews are long)
- Relative date (e.g., "3 weeks ago") or absolute date
- Reviewer avatar / Google profile photo (default: on)
- Google logo / "Verified Google review" badge (recommended on -- reinforces authenticity)
Step 5: Apply Brand Styling
- Open the widget's Style or Appearance panel
- Configure:
- Card background -- usually white or a light neutral matching the site palette
- Primary accent color -- used for the star fill; should match the client's primary brand color
- Text color -- ensure contrast passes WCAG AA against the card background
- Border radius, shadow, padding -- match existing site card components
- Font family -- if the widget exposes font overrides, match the site's heading and body fonts
- Preview the widget on both mobile and desktop previews inside GHL
- Adjust until the widget visually blends with the target site section
Step 6: Save and Copy Embed Snippet
- Click Save (or Publish)
- Open the widget's detail view and locate the Embed Code section
- Copy the snippet. It will be one of:
- An
<iframe>element with asrcURL, or - A
<script>tag plus a<div>target
- An
- Paste the snippet into a secure scratch location (ClickUp task, password manager note, or the client's operational doc) so it can be re-applied later without re-generating
Step 7: Embed in WordPress
Choose one method based on where the widget will appear.
Method A: Elementor HTML Widget (most common)
- Open the WordPress page in Elementor
- Drag the HTML widget into the target section
- Paste the embed snippet into the Code area
- Set the widget's container to full width if the site uses boxed layouts
- Set a sensible minimum height (carousel: 350–500px desktop, 450–600px mobile) to prevent layout shift during load
- Click Update / Publish
Method B: Gutenberg Custom HTML Block
- Open the WordPress page in the block editor
- Insert a Custom HTML block
- Paste the embed snippet
- Click Preview to confirm it renders, then Update
Method C: LeadConnector Shortcode (if supported by current plugin version)
- Confirm LeadConnector is connected per WordPress Setup Procedures, Section 5.4
- In LeadConnector > Widgets (or equivalent), locate the reviews widget by its GHL widget ID
- Copy the generated shortcode (format varies, e.g.,
[ghl_reviews id="ABC123"]) - Paste the shortcode into any WordPress page, post, or text widget
If the shortcode method is unavailable in the plugin version installed, fall back to Method A.
Step 8: Verify the Live Embed
- Open the published WordPress page in an incognito browser window
- Check:
- Widget renders within 2–3 seconds
- Only reviews at or above the configured star threshold appear
- Reviewer names, text, and dates display correctly
- Stars render in the brand accent color
- No horizontal scroll on mobile (test at 320px, 768px, and 1024px breakpoints)
- Click into one review card (if the widget supports drill-down) and confirm it links to the actual Google review
- Inspect the browser console for errors or CSP violations (see Troubleshooting)
Step 9: Confirm Sync Behavior
- Note the most recent review currently shown on the live widget
- When a new qualifying review arrives on the client's Google Business Profile, confirm it appears on the embedded widget within GHL's sync window (typically minutes to a few hours)
- If a new review does not appear after 24 hours, see Troubleshooting
Required Inputs
- GHL sub-account credentials
- Connected Google Business Profile with at least one synced review
- WordPress admin / Elementor edit access
- Client brand colors and fonts
- Decision on minimum star-rating filter (3★+ or 4★+)
- Target page URL and section placement
Expected Outputs
- Configured Reviews widget visible in Reputation > Widgets
- Documented widget ID and embed snippet stored in client operational notes
- Embed snippet installed on the target WordPress page(s)
- Live widget rendering filtered reviews and matching brand styling
- Sync confirmed between GHL Reputation module and the live widget
Troubleshooting
Common Issues
Issue: Widget shows "No reviews to display" Solution:
- Verify reviews exist under Reputation > Reviews in the sub-account
- Confirm reviews meet the minimum rating filter (a 3★+ filter with only 2★ reviews will appear empty)
- Check that the Google Business Profile is still connected -- OAuth disconnects silently
- Lower the filter temporarily (e.g., 1★+) to confirm the widget itself is working, then restore the intended threshold
Issue: Widget does not render at all on the WordPress page Solution:
- View page source and confirm the iframe/script tag is present in the HTML (Elementor sometimes strips tags if pasted into a rich-text block instead of the HTML widget)
- Open browser developer tools and check the Console and Network tabs for errors
- If errors mention
X-Frame-OptionsorContent-Security-Policy, see the CSP issue below - Confirm a security plugin (Wordfence, iThemes, Solid Security) is not blocking the GHL domain -- allowlist
msgsndr.comand the widget domain if necessary
Issue: CSP / iframe blocked (console shows "Refused to frame..." or "X-Frame-Options: deny") Solution:
- Check WordPress security plugin settings for Content Security Policy rules
- Add the widget domain to the plugin's iframe/frame-ancestors allowlist
- If using a CDN (Cloudflare, Bunny), check for transform rules or page rules that strip iframes
- If the widget is on an HTTPS site, confirm the embed URL is also HTTPS (never mix)
Issue: Widget styling looks off on the live site (colors, fonts wrong) Solution:
- Confirm the styling was saved in GHL (not just previewed) -- click Save after each edit
- Hard-refresh the WordPress page (Ctrl+Shift+R) to bypass any cached version
- Clear any caching plugin layer (WP Rocket, W3 Total Cache, LiteSpeed)
- If the site enforces its own typography via
!important, the iframe widget may be unaffected -- edit fonts inside GHL widget settings instead
Issue: New reviews not appearing on the live widget Solution:
- Confirm the new review is visible under Reputation > Reviews in GHL (if not, the issue is upstream -- see Manual Google Review Request SOP troubleshooting)
- Wait up to 24 hours -- GHL's sync from Google Business Profile is not real-time
- Disconnect and reconnect the Google Business Profile if the review has been on Google for >48 hours without syncing
- Verify the new review meets the widget's minimum rating filter
Issue: Mobile layout broken (cards overflow, buttons clipped) Solution:
- Reduce the number of visible reviews on mobile in the widget's responsive settings
- Increase the Elementor HTML widget's minimum height at the mobile breakpoint
- Switch from grid to carousel layout -- grids often need more horizontal space than mobile allows
Exceptions and Edge Cases
- Case A: Client has fewer than 3 qualifying reviews -- the widget may look sparse. Either lower the filter temporarily, hide the widget until more reviews arrive, or run a review-request campaign (see Manual Google Review Request SOP)
- Case B: Multi-location client -- each Google Business Profile connection generates its own reviews pool. Confirm the widget is pulling from the correct location, and consider one widget per location page
- Case C: Non-English reviews -- the widget renders reviews as written. If the client's site is English-only, consider excluding languages via minimum-length filter or displaying a mix with a note
- Case D: Reviews mentioning competitor names or inappropriate language -- filter threshold alone will not catch these. Respond via the AI Review Response SOP and flag for Google removal; the widget cannot exclude individual reviews
- Case E: GHL widget product changes -- GHL periodically updates the Reputation widget builder UI. Step labels in this SOP may drift. The flow (type → filter → style → embed) remains stable; verify against current UI and log discrepancies against this SOP
Related Documents
- GHL Asset Handoff SOP -- parent context: this widget is one of the assets catalogued in the handoff record; follow that SOP for end-to-end handoff and verification
- Manual Google Review Request Configuration SOP -- prerequisite: connect Google Business Profile and generate reviews
- AI Review Response Configuration SOP -- companion workflow for responding to reviews
- GHL WordPress Setup Procedures -- covers LeadConnector installation and WordPress hosting
- Google Business Profile Holiday Hours Modification SOP -- other GBP-related operations
- Website Copy Client Review SOP -- related client review process for site content
Revision History
| Date | Version | Change Description | Author |
|---|---|---|---|
| 2026-04-17 | 1.0 | Initial version, triggered by Moots Law testimonial widget implementation | Symphony Core Systems Team |