GMB Club

Store Locator: an interactive map of your locations on your website

Who this is for: you manage several locations inside the same sphere (franchise, multi-site, chain) and you want to display them on an interactive map embedded on your website (WordPress, Wix, any CMS). The widget offers city search, markers, cards with opening hours, and a direct "Directions" button.

What you'll do: enable the Store Locator for your sphere, configure it (design, features, SEO, embed), embed it on your site, and use the GMB Club Connect plugin GMB Connect to get automatic SEO pages per location.


Overview

The Store Locator is a JavaScript widget (Web Component, ~58 KB gzipped) that you copy-paste into any web page. It:

  • Shows your bubbles on a map (Leaflet + MapTiler)
  • Allows search by city (with Nominatim geocoding)
  • Detects the visitor's geolocation (with their consent)
  • Displays for each location: photo, address, opening hours, Open/Closed badge computed server-side, Google rating, directions link
  • Is customizable: colors, fonts, shadows, custom CSS

On WordPress, the GMB Club Connect plugin (already required for Articles) adds:

  • A shortcode [gmbclco_store_locator] to drop wherever you want
  • Auto-generated SEO pages for each location (CPT + Schema.org LocalBusiness + BreadcrumbList JSON-LD)
  • Automatic bubble sync every 6h via WP-Cron

Prerequisites

ItemDetail
Active sphereStore Locator is configured at the Sphere level, not Bubble (one map per sphere).
Existing bubblesAt least 1 bubble with a connected GMB listing (otherwise the map is empty). Ideally 2+ for the store locator to make sense.
Correct addressesEach bubble must have a filled-in address (otherwise no marker).

Step 1 — Enable the Store Locator

Go to "Settings" (top right via the Sphere › Bubble selector), then in the left menu click "Sphere settings" at the bottom, and finally on the "Store Locator" entry (under ORGANIZATION in the left menu).

Store Locator tab disabled

You'll see:

  • Header "Store Locator" with the subtitle "Configure the interactive map of your locations"
  • The "Enable Store Locator" toggle (default: OFF with the note "Store Locator disabled")

Flip the toggle. A green confirmation message "Configuration saved" appears. The "Configuration" section unfolds with 4 tabs: Design, Features, SEO, Embed.

Store Locator enabled: toggle ON and Configuration block expanded


Step 2 — Configure the design

Tab "Design" — controls the visual look of the widget.

SettingDescription
Primary colorColor of CTA buttons, active markers, highlights. Defaults to your brand color.
Secondary colorAccent color (hover, secondary badges).
Marker colorFor the pins on the map. You can set a different color from your primary (e.g. red markers on a blue brand).
Card styleShadow, Border, Flat — choose how location cards render visually.
Shadow levelIf style = Shadow: None, Subtle, Medium, Strong.
Card radiusSlider 0-24px for the border-radius of cards and buttons.
Main fontInherit from main font (widget picks up the host page's font-family) or System font (default).
Font weight300, Light to 800, Extra-bold for headings.
LayoutList (left sidebar with vertical list) or Grid (cards laid out as a grid).
Show logo in headerToggle to display the sphere logo in the widget's top bar.
Review CTA textE.g. "Your review matters" (visible if you enable the review CTA in Features).
Review CTA buttonE.g. "Leave a review".
Custom CSSText field to inject advanced CSS. See the "CSS classes guide" dropdown that lists every targetable class: .gmbc-wrapper, .gmbc-card, .gmbc-btn-primary, etc.

Design tab — colors and fonts

Scrolling further down the tab, you'll find the other customization sections (Typography, Cards and shapes, Card layout, Map marker, Visible sections on your site pages, Custom CSS) with the "Save" button at the bottom:

Design tab — additional sections

All changes are immediate: save, reload the page where you embedded it, you'll see them.


Step 3 — Configure the features

Tab "Features" — which behaviors to enable.

Features tab

ToggleEffect
Search barEnables the search bar at the top of the widget (Nominatim autocomplete)
Automatic geolocation"Locate me" button that asks the visitor for consent and centers the map on them
Open/Closed badgeDisplays a green "Open" / red "Closed" badge on each card, computed in real time from Google opening hours and the bubble's timezone
Marker clustersInstead of showing 50 markers side by side, group them into a zoomable cluster (useful above 10 bubbles)
Directions buttonGenerates a deep link to Google Maps / Apple Maps from the visitor's location
Google rating on cardsDisplays the average rating + review count (pulled from the bubble's GMB listing)
Review CTA on the cardAdds a "Leave a review" button that opens the bubble's Google Reviews page

Scrolling further you'll also see "Hours display mode" (Compact (default) / Today / Full) and "Primary button" (Directions / Website / Call):

Features tab — display modes

Categories

You can classify your bubbles by category (e.g. Restaurant, Bar, Snack) so visitors can filter the widget. You define the categories in this section and assign bubbles to each.

Useful for mixed spheres: if inside the "Food'Alexandre" sphere you have both restaurants and food trucks, visitors can filter to see only what they care about.


Step 4 — Configure SEO

Tab "SEO" — only useful if you use the GMB Club Connect plugin GMB Connect which generates dedicated pages per bubble.

SEO tab

FieldDescription
Index page titleThe H1 of the page listing all your locations (e.g. Our locations)
Page slugSlug of this index page URL (our-locations by default, auto-generated if empty)
Page title templateFor individual bubble pages. Variables: {bulle_name}, {sphere_name}, {city}. E.g. {bulle_name} - {sphere_name}
Meta description templateFor the <meta name="description">. E.g. Find {bulle_name} in {city}.

Note: These templates are used to generate SEO pages on your site. Click "Save" to save.


Step 5 — Embed the widget on your site

Tab "Embed" — grab the code to copy-paste.

Embed tab

The "Start integration" button opens the assistant that generates the HTML snippet to copy-paste onto your site.

You get a ready-to-use code block:

<script src="https://cdn.gmb-club.com/store-locator/v2/widget.js" defer></script>
<gmbclo-store-locator
  api-key="YOUR_PUBLIC_KEY"
  sphere-id="YOUR_SPHERE_ID"
></gmbclo-store-locator>
ElementDescription
<script src=Loads the widget async/defer. Best placed in the <head> or just before </body>.
<gmbclo-store-locator>Custom Web Component. Place it where you want the map to appear on your page.
api-keyPublic key generated for your sphere. Visible in your Settings page. Security note: the key is read-only, no risk if it sits in public HTML.
sphere-idUUID of your sphere, auto-generated.

The "Copy" button copies everything to the clipboard.

CMS tip: on your site, do NOT use this snippet — use the GMB Connect plugin shortcode instead (see below). On Wix or Webflow, use an HTML/Embed block with this snippet.


For your site: the GMB Club Connect plugin

If you've already installed the GMB Club Connect plugin (for articles), the Store Locator is available for free as a module.

Enable the Store Locator module in the plugin

  1. Go to your site admin → Plugins › GMB Club Connect › Settings
  2. Enable the "Store Locator" section
  3. The plugin automatically syncs your bubbles with GMB Club (every 6h, or manually via the "Sync now" button)

Use the shortcode

Edit the page where you want to display the map (e.g. "Our locations" page) and insert:

[gmbclco_store_locator]

You can pass parameters:

[gmbclco_store_locator height="600px" zoom="11" category="restaurant"]
ParamMeaning
heightWidget height (default: 700px)
zoomInitial map zoom (default: 6 for a France-wide view)
categoryRestricts display to a category (slug)

Auto-generated SEO pages

Once the plugin is enabled, it automatically creates:

  • A Custom Post Type gmbclco_location (one URL per bubble)
  • A taxonomy gmbclco_location_city (grouping by city)
  • Page templates: individual page (single-gmbclco_location.php) + city archive

So a bubble "Food'Alexandre Lyon Bellecour" automatically becomes a your site page at the URL yoursite.com/locations/lyon/foodalexandre-lyon-bellecour with:

  • H1 title = bubble name
  • Map centered on the bubble only
  • Info block (address, phone, website, Google listing)
  • Weekly hours block
  • CTA block (leave a review, see directions)
  • Breadcrumb (Home › Locations › Lyon › Food'Alexandre Lyon Bellecour)
  • Schema.org JSON-LD (LocalBusiness + BreadcrumbList)

SEO impact: these individual pages rank for geo-targeted searches (food alexandre lyon) and the Schema.org boosts your appearance in Google's local pack.


What your end customer sees

When the page containing the widget loads, your visitor sees:

  1. A centered map (on all your bubbles, or on their geolocation if they allow it)
  2. A city/address search bar at the top
  3. A list of cards on the left (or a grid) with: name, address, distance, Open/Closed badge, Google rating ★
  4. Clicking a card: the map zooms in on the marker, the card opens with full hours, contact, website link, "Directions" button

Performance is fast (~58 KB, browser-side geolocation, geocoding proxied through GMB Club with a Redis cache of 24h to save the Nominatim quota).


  1. Enable the Store Locator (Sphere settings › Store Locator › toggle)
  2. Configure Design to match your brand (colors, fonts, shadows)
  3. Configure Features (enable at minimum: Search, Geoloc, Open/Closed badge, Directions)
  4. If you use your site → enable the plugin + fill in the SEO tab for the URL/title templates
  5. Test: embed on a draft page on your site → check that every bubble shows up, that hours are correct, that directions work
  6. Publish the page on your site

Common issues

My bubbles don't show up on the map → Three causes: (1) they don't have an address — go to the bubble → Settings › Information. (2) geocoding failed — make sure the address is valid and clean (no typos). (3) the Redis cache takes 24h to refresh — wait or contact support to purge.

The Open/Closed badge is wrong → Check the timezone of the sphere in Settings › General (e.g. Europe/Paris (GMT+2)). The badge is computed server-side from this timezone + the bubble's Google opening hours.

The widget doesn't load, JS console shows a 401 error → Your access key is invalid or revoked. Go to Settings › your site Plugin › API Keys (yes, that's where they live), regenerate a key. Update the snippet on your site.

The widget works locally but not in production → Check CORS: the widget calls https://app.gmb-club.com/api/v2/store-locator/.... If you have a firewall blocking, allow this domain.

The GMB Club Connect plugin doesn't sync bubbles → Go to the plugin → "Sync now" button. If it fails, check the pairing status in Settings › your site Plugin. Reconnect if needed.

How do I deeply style the widget (beyond the Design tab options)? → Use the Custom CSS field in the Design tab. The "CSS classes guide" dropdown lists every targetable class (e.g. .gmbc-wrapper, .gmbc-card-active, .gmbc-badge-open). You can put arbitrary CSS in there and it will apply inside the widget's Shadow DOM.

My your site pages generated by the plugin don't appear on Google → (1) Make sure the your site XML sitemap includes the gmbclco_location CPT (Yoast / Rank Math include it by default). (2) Submit the /locations/ archive URL to Google Search Console to speed up indexing. (3) Local SEO takes 4-8 weeks to stabilize after creation.