Track GBP Calls in GA4: The Setup That Ends the Guessing
GA4 can't see every GBP call. But with UTM tags, click-to-call events, and a simple report, you can prove whether your Business Profile work is actually bringing calls.
"How'd you find us?" "Google." That's the whole conversation. No details. Meanwhile, you've been fixing categories, adding photos, collecting reviews for months and you genuinely don't know if any of it is moving the needle. GA4 can't see every call that starts inside your Business Profile. But you can track GBP calls in a way that's useful, repeatable, and close enough to make real decisions.
A customer calls, you ask, “How’d you find us?”, and they say, “Google.” That’s it. No details. Meanwhile, you’ve been improving your Google Business Profile for months — fixing categories, adding photos, collecting reviews — and you genuinely don’t know if any of it is moving the needle.
Here’s the honest part: GA4 can’t see every phone call that starts inside your Google Business Profile. But you can track GBP calls in a way that’s useful, repeatable, and close enough to make real decisions — not just guesses.
Below is the setup that works for local businesses. The UTM tagging. The click-to-call event. The GA4 custom report. And what to do when you need something more precise than on-site phone clicks.
What “tracking GBP calls in GA4” actually means
A Google Business Profile generates calls in two ways:
- Calls that start on the listing. Someone taps the Call button in the Map Pack or on your GBP in Google Maps. No website visit required.
- Calls that start on your site. Someone clicks from your GBP to your website, then taps a phone link on your site.
GA4 only tracks what happens on your website or app. So if someone calls straight from your listing, GA4 will not see that call unless you bring in a call tracking system that pipes data back into GA4.
GBP has its own call count reporting inside the Performance tab — those numbers tell you calls happened, but they don’t connect to your other marketing data. They’re isolated.
To make the difference clear:
The takeaway: if you don’t tag your GBP links and track phone clicks on-site, GA4 lumps local intent into generic “organic” and you keep guessing.
The core setup: UTMs on GBP links + click-to-call events in GA4
This is the baseline. It’s not fancy, but it works and it’s free. Three steps.
Step 1: Add UTMs to your GBP website link
Log into your Google Business Profile and update your website link — plus any appointment or menu links — with UTM parameters. This is what lets GA4 separate “someone found us on Google and came through our GBP profile” from “someone found us in regular search results.”
Use this URL structure:
https://yoursite.com/?utm_source=gbp&utm_medium=organic&utm_campaign=gbp-profile&utm_content=website-link
Breaking that down:
- utm_source=gbp — tells GA4 this traffic came from your Google Business Profile
- utm_medium=organic — it’s organic, not paid
- utm_campaign=gbp-profile — labels the campaign so you can filter it in reports
- utm_content=website-link — if you have multiple GBP links (website, appointment, menu), use this to differentiate them
To build the URL without typos, use Google’s Campaign URL Builder. Paste in your base URL, fill in the fields, copy the result, and paste it into the “Website” field in your GBP dashboard.
Once this is live, any visitor who clicks from your GBP to your site shows up in GA4 with a clean source/medium of gbp / organic. That’s the foundation everything else builds on.
Step 2: Track phone link clicks on your site
Most local business websites have phone links in the header, footer, and contact page. Those are tel: links — when someone taps one on mobile, it opens the dialer. That tap is trackable as a GA4 event.
Here’s the setup using Google Tag Manager (GTM):
- Create a new trigger in GTM. Set the trigger type to “Click — Just Links.” Set the condition to “Click URL starts with tel:.” This fires every time someone taps a phone link.
- Create a new GA4 Event tag. Set the event name to
click_to_call(all lowercase, underscores — GA4 is case-sensitive). Set it to fire on the trigger you just created. - Preview and test. Use GTM Preview mode + GA4 Realtime to confirm the event fires when you tap a phone link on mobile. Test on a real phone, not just desktop — the dialer intent is what matters and it can behave differently.
- Publish the GTM container. Once you’ve confirmed the event fires correctly, publish.
- Mark it as a conversion in GA4. In GA4 Admin → Events → find
click_to_call→ toggle “Mark as conversion.” This tells GA4 this event counts as a key action, not just a pageview metric.
Common gotcha: if your phone link opens the dialer too fast, the GTM tag might not have time to fire. If you see the event firing inconsistently, add a small link click delay in GTM (100ms usually solves it).
Step 3: Build a GBP calls report in GA4
Once UTMs and click-to-call are live, here’s how to see the data that matters.
Option 1 — Exploration report (most flexible):
- In GA4, go to Explore → Blank exploration.
- Add the dimension Session source / medium.
- Add the metric Conversions (or Event count if you haven’t marked it as conversion yet).
- Filter by Session campaign =
gbp-profile(or whatever you named it). - Add Event name as a secondary dimension to see
click_to_callbroken out separately from other events.
This shows you exactly how many phone clicks came from GBP-driven sessions this month, this quarter, or whatever date range you set.
Option 2 — Comparisons in standard reports:
In the standard GA4 Acquisition report, use the comparison feature to segment by your UTM campaign. You won’t get the same granularity as an exploration, but it’s faster for a quick check.
Either way, you can now answer: “How many phone clicks came from GBP traffic this month?” and “Did calls go up after I fixed my GBP categories?”
When you need true call attribution from the GBP listing itself
The UTM + click-to-call setup above only captures calls that come through your website. If most of your customers call straight from the Map Pack listing — never visiting your site — you need a stronger setup.
Option A: Use a call tracking number on your GBP
You can add a tracking number to your GBP, but you need to do it without breaking your NAP consistency (name, address, phone) across the web.
The safe approach:
- Keep your real main number as the primary phone number in your GBP. This is what Google uses for local ranking signals and what directories should match.
- Add a call tracking number as a secondary phone number. Many GBP categories allow this. The tracking number captures calls from the listing; your real number stays consistent for NAP purposes.
- Confirm your website, Yelp, Bing Places, and other directories all show the same primary number — not the tracking number.
This works well when you want clean “calls directly from the GBP listing” counts and your category supports secondary numbers.
Option B: Third-party call tracking that pushes into GA4
If you’re running Google Ads, Local Services Ads, and organic all at once, a call tracking platform can assign unique numbers per channel and push call events into GA4 directly. This gives you the most complete picture: you see calls from the GBP listing, from ads, and from organic — all in one place.
The tradeoff is cost and setup complexity. For most local businesses running organic-first, the UTM + click-to-call setup from Step 1-2 is enough to prove GBP is working.
A real example: one home services client tightened up their Map Pack visibility alongside proper UTM tracking. Within 60 days they moved from Map Pack position 9 to position 3, and calls tracked to the GBP rose 38%. The ranking improvement was visible — but the call proof ended the internal debate about whether GBP optimization was worth the ongoing attention.
QA checklist: test before you trust the data
A tracking setup you haven’t tested is a guess dressed up as a system. Do these checks before you start reporting the numbers.
UTM tag verification
- Open your GBP on your phone and tap your website link. It should take you to your site with the UTM parameters in the URL — check the address bar.
- In GA4 Realtime, confirm you see an active session with source/medium of
gbp / organicand campaign ofgbp-profile. - If you see
google / organicinstead, the UTM parameters didn’t carry through — double-check the link in your GBP dashboard.
Click-to-call event verification
- On mobile, tap your phone number link on the homepage or contact page.
- In GA4 Realtime → Events, confirm you see
click_to_callappear within 30 seconds. - If it doesn’t appear: check that your GTM container is published, not in preview mode. Check that the trigger condition matches your phone link format exactly (
tel:notTel:— case matters in some configurations). - Test on at least two different phones. iOS and Android handle
tel:links slightly differently and can behave inconsistently with link-click delays.
Double-counting check
- Tap the phone link once. Confirm the event logs once in Realtime — not twice.
- If you see duplicate events, you may have two tags firing on the same trigger. Check GTM for duplicate GA4 tags.
Troubleshooting: common failure modes
The event fires on desktop but not mobile. Mobile browsers handle tel: links differently — the dialer launches fast enough that GTM’s link click listener doesn’t capture it in time. Fix: add a GTM click delay (100ms) or use a form-based phone number instead of a bare tel: link for the tracked element.
GA4 shows GBP traffic but zero conversions. Your click_to_call event is probably not marked as a conversion in GA4. Go to Admin → Events, find the event, toggle “Mark as conversion.”
UTM traffic shows up as “(not set)” campaign. The UTM parameters in your GBP link have a typo or extra character. Rebuild the URL using Google’s Campaign URL Builder and verify each parameter field before saving.
GBP Performance tab shows calls but GA4 shows zero from GBP. This is expected if all those calls happened from the Map Pack listing directly (no website click). Your UTM + click-to-call setup only captures website-based calls. For direct listing calls, you need a call tracking number on the GBP itself.
Frequently asked questions
Can GA4 track calls that come directly from the Google Maps listing?
Not by default. GA4 only tracks what happens on your website. Calls that happen when someone taps “Call” directly in Google Maps never touch your site, so GA4 doesn’t see them. To track those, you need a call tracking number added to your GBP, or a third-party platform that integrates with GA4.
Will adding UTMs to my GBP website link hurt my local rankings?
No. UTM parameters are tracking tags — they don’t change the destination URL or affect how Google ranks your GBP. The only thing to watch is that your UTM-tagged URL still resolves to a real, working page. Don’t tag a URL that redirects incorrectly or 404s.
Will using a call tracking number on my GBP hurt my NAP consistency?
It can, if you’re not careful. The key is keeping your real primary number consistent across your website, GBP, and major directories like Yelp and Bing Places. The tracking number goes in as a secondary phone number on your GBP — it captures calls from the listing without replacing your primary NAP number.
What GA4 event name should I use for phone click tracking?
Use click_to_call or phone_click — lowercase, with underscores, no spaces. GA4 event names are case-sensitive, so Click_To_Call and click_to_call are treated as different events. Pick one format and stick with it. Mark it as a conversion in GA4 Admin so it appears in your conversion reports, not just the event list.
How do I know if my GBP optimization is actually driving more calls?
Set a baseline before you make changes. Pull one month of click_to_call conversions filtered to GBP UTM traffic. Make your GBP changes — category update, photo addition, Q&A seeding, whatever you’re testing. Pull the same report 30 and 60 days later. If the number is moving, you have evidence. If it’s flat, something else is the bottleneck. That’s the point: you stop guessing about what’s working.
Do I need Google Tag Manager, or can I add the GA4 event directly?
You can use either, but GTM is easier for most local business setups because you don’t need a developer to update code on the site. GTM lets you add, test, and update tracking tags without touching the website’s codebase. If your site is WordPress and you don’t have GTM installed yet, the GTM4WP plugin handles the GTM snippet installation in about five minutes.
The bottom line: track the calls that matter, then defend what’s working
The clean path forward is three steps: tag your GBP website link with UTMs, track phone clicks on-site as a GA4 event, and build a report that shows both. That setup doesn’t cost anything extra, and it turns “GBP might be driving calls” into a number you can point to.
When you can show that GBP traffic converted to calls — and that the number went up after you improved the profile — the guessing stops. You know what’s working. You know what to keep. And you know exactly what you’d lose if you stopped paying attention to your GBP.
If you want someone to build this setup and manage your GBP optimization on an ongoing basis, that’s exactly what we do at Curve. Flat monthly fee. No contracts. Start for $500/mo.