Best Way to Track GMB Traffic in Analytics – Detailed Walkthrough

track gmb traffic in analytics

GA4 is the latest iteration of Google Analytics.

Why Track GMB Separately?

Google My Business (GMB) traffic is a major source of traffic for many businesses and being able to identify traffic from GMB apart from other normal organic traffic is going to allow for better optimization. And if you’re managing a Client’s account, it good to be able to demonstrate how the work you’re doing on their GMB is having a meaningful impact.

A Little Background

There’s no prebuilt way to differentiate your GMB traffic from your other Google Search traffic. It’s odd, but true.

As an agency or freelancer, it’s crucial for you to show that the work you do in SEO is working. If you do local SEO, you know that a big part of your job is managing citations—Google My Business (GMB), Bing, Yelp, Apple Maps and Facebook probably being the most important listings. The problem is each of these sources gets lumped into Channels that don’t properly attribute for traffic coming from these listings. For example, if a user searches for a service you offer, finds your Maps listing in Google and clicks to your site, that traffic will go to Google Analytics as a Channel of Organic with a source/medium of “google/organic,” which the same as if they were to click on an organic link in regular organic search. For Yelp, it may come through in the Referral Channel. For Facebook, it may come through in the Social Channel. So, how do we attribute traffic from our listings to a clean and organized report that distinguishes traffic from our listings.

  • Source – This is the WHERE. It’s the origin of your traffic, such as a search engine (for example, google) or a domain ( 
  • Medium – This the TYPE. It’s the general category of the source. For example, organic search (organic), paid search (cpc), web referral (referral) and (none) for Direct traffic.
  • Channel – A channel is a grouping of traffic sources. Google Analytics has prebuilt Channels that aggregate typical types of traffic. For example, Organic Search is a Channel. It’s defined as traffic from the Organic Medium and from selected Sources that Google identifies as search engines. So, if someone visits your site with a Source of Google and Medium of Organic, that traffic will be associated with the Organic Search Channel. You can view Channel data in the Acquisition report in Analytics.
wrong way to track gmb traffic
wrong way to track gmb traffic

The Wrong Way To Track GMB

One way you can track GMB traffic is with UTM parameters ( will produce the result shown above), but there are problems with that method. First of all, you lose your natural source/medium data because you a manually overwriting it. Then there’s the fact that you need to manually set each of your listings/links/campaigns with specific UTM parameters, which is tedious, unscalable and can be difficult to adjust on sites like Yelp or other minor listings. On top of that, if that UTM parameter gets copied or shared by another listing or user, that traffic will show up in Analytics incorrectly. Some listings will copy url data straight from your GMB or somewhere else on the web and use that as your url. For example: Better Business Bureau will grab your GMB link and add it to their site if they create a listing for your business before you do. Now anyone who uses that link will be defined as being from the GMB Campaign. Now you’ve got traffic coming in from all over the internet and its been falsely identified with the wrong Source and Campaign—which will lead to inaccurate reporting. Finally, if you use data aggregators to push your client’s listing data online to be available for any listing to use, you simply cannot use UTM parameters because you have to use a single link with those services.

The Right Way To Track GMB

But there’s actually a pretty easy solution—custom query parameters. They’re like UTMs, but custom. This way your traffic can keep its original source/medium data and be used on any listing/link/campaign without any modifications.

For example, rather than:


..we can simply use one link for all three:

proper gmb tracking link
proper gmb tracking link

And if we have multiple locations we want to account for, we just add an extra parameter:


The beauty of this method is that I keep all my original data.

source medium gmb tracking
source medium gmb tracking

I can’t stress the above statement enough. When you use your own parameters, traffic from GMB will still have a source of Google/Bing/Yelp and a Medium of Organic/etc. If you use UTMs, you lose that. Your traffic will not keep its Medium of Organic. And viewing your organic data means combining data manually. The parameters you created here are going to be used in Custom Channels, Dimensions and Metrics, which is like a layering of data, rather than a crude replacement. 

event label gmb tracking
event label gmb tracking

The image above shows that this link can be used to create an Event, which is important to verify your implementation and do anything more than the most basic version of this system. If you have multiple locations, Event tracking is going to be a must.

So, how do we implement this? In short: 

  1. Create Custom Channels in Analytics (all you need for the most basic implementation)
  2. Create Custom Variables, Triggers and Tags in Google Tag Manager
  3. Build and Test Your New Link
channel grouping analytics
channel grouping analytics

Build your custom Channels.

Go to Analytics

  1. Select Admin tab
  2. Select “Channel Settings > Channel Grouping” under View column
  3. Click into “Default Channel Grouping”
  4. Click “Define New Channel”
  5. Name the Channel “GMB”
  6. Define the first rule as follows: Landing Page URL – contains – ?local=true
  7. Select “And” to the right.
  8. Define the next rule as Source – contains – google
  9. Click “Done
  10. Repeat for Bing Places, naming the channel “Bing Places” and naming the source in the second rule as “bing” (no quotes)
  11. Create a third Channel named “Misc. Citation”
  12. Use the exact same first rule
  13. Create a second rule defined as follows: Source – is not one of – google (hit Enter to add a second line) Add “bing” (no quotes)
  14. Click Done.
channel settings analytics
channel settings analytics

Channels work like a waterfall. They start at the top and work down. You have a list of Channels and if traffic matches the requirements of the first Channel on the list, it goes to that Channel. So, we’ll just build custom Channels that get to your traffic before Google’s Organic Search Channel.

  1. Arrange the new Channels in the following order #1 GMB, #2 Bing Places, #3 Misc. Citations
  2. Click Save at the bottom

The reason Channels are so useful here is because no matter which Channel your traffic goes to, the Source and Medium won’t change. So, you can always analyze your Organic data as one complete set without having to piece together a bunch of data that you’ve piped in with UTM parameters. Thats just an ugly mess and limits your ability to do proper analysis.

variable settings gtm location
variable settings gtm location

Create Custom Variables, Triggers and Tags in Google Tag Manager

If you have only one location and aren’t interested in acquiring any Event-level data along with your traffic, you’re already done… 🙂 If you have multiple locations or are interested in sending other types of Event-level data (like variations of your link such as a menu/contact link or custom dimension data we’ll create later on) to Analytics or just want to track your data in a more scalable, extendable, modular way, you’ll need to create a tag in Google Tag Manager (GTM). Even if you only have one location and one link, you should still continue because if you want to add a location, an additional type of link, or other types of data variables in the future, your data will remain consistent and you’ll be prepared.

variable settings gtm
variable settings gtm

Go to GTM

A. Select Variables tab on left

  1. Click “New” in the User-Defined Variables section
  2. Name the Variable “Local”
  3. Click the Lego-looking icon in the middle
  4. Select “URL” from the menu appears on the right
  5. In the Component Type menu, select “Query”
  6. Enter “local” into Query Key field. Hit Save
  7. Repeat, but name the next Variable “Location” and enter “location” into Query Key field.
  8. Hit Save.
trigger settings gtm
trigger settings gtm

B. Select “Triggers” from menu on the left.

  1. Click New.
  2. Name the Trigger “Citation Traffic”
  3. Click the double-ring icon in the middle.
  4. Select “Page View” from the menu that appears on the right.
  5. Select the “Some Page Views” radio button
  6. In the first dropdown, select “Local”
  7. In the second dropdown, leave as “contains”
  8. In the field on the far right, enter “true” (no quotes). Hit Save.
tag settings gtm
tag settings gtm

C. Click “Tags” on the menu on the left.

  1. Click New.
  2. Name the Tag “Citation View”
  3. Click in the Tag Configuration box
  4. Select the Google Analytics: Universal Analytics tag from the menu on the right
  5. In the Track Type dropdown, select Event
  6. In the Category field, enter “Local” (no quotes)
  7. In the Action field, select the Lego-looking icon to the right.
  8. Select the “Location” Variable
  9. Click the “Enable overriding settings in this tag” box at the bottom of that section
  10. Enter the Analytics tracking ID for that client
  11. Go to Analytics
    1. Select Admin
    2. Click Property Settings in the center column
    3. Copy the entire Tracking ID (UA-XXXXXXXXX-X)
  12. Return to GTM and paste ID
  13. Click into the Triggering section below
  14. Select “Citation Traffic” from the menu on the right
  15. Click Save

D. Hit Save, then Submit in the top right

E. Name the Version “Citation Tracking Implementation”

F. Click Publish

event label gmb tracking
event label gmb tracking

In the end, it’s a very simple, but elegant solution. Just verify the tag and you’re all done. And if you’ve never built a tag or sent custom data to Analytics before, this part is actually super satisfying.

  1. Enter the Client’s tracking url into a fresh Incognito browser session
  2. Go to Analytics
  3. Click the Realtime section
  4. Click into the Events sub-section
  5. Verify “Local” is showing under Event Category and “(your_location)” under Event Action
  6. If this fails, double check your steps, in the rare case it doesn’t work, you will need install the modified tracking code manually to your site. I won’t get into how to do that here, but if you have a friendly developer handy, they’ll be able to do it without breaking much of a sweat. (this test will show a source/medium of “direct/none”)

NOTE: To verify the source/medium data on an organic search, do the above test, then update your GMB link to your custom link and test again from an incognito click from your GMB listing.

Thats it. And the best part is that the data is just as it should be. So you don’t have to do any ninja reporting or teach people how to look at your charts.

That was a lot. Feel free to ask questions below. And this was only Part 1. In part 2, we’ll setup custom dimensions so that we can view all of our content data, rather than just acquisition data, in terms of original source data.  

© 2023 Nic Pederson. Built with Care