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 (example.com).
- 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.

The Wrong Way To Track GMB
One way you can track GMB traffic is with UTM parameters (brooklynblackpipe.com/?utm_source=google&utm_medium=gmb 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:
- brooklynblackpipe.com/?utm_source=google&utm_medium=gmb
- brooklynblackpipe.com/?utm_source=bing&utm_medium=bing_places
- brooklynblackpipe.com/?utm_source=yelp&utm_medium=yelp_listing
..we can simply use one link for all three:
- brooklynblackpipe.com/?local=true

And if we have multiple locations we want to account for, we just add an extra parameter:
- brooklynblackpipe.com/?local=true&location=portland
- brooklynblackpipe.com/?local=true&location=brooklyn
The beauty of this method is that I keep all my original data.

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.

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:
- Create Custom Channels in Analytics (all you need for the most basic implementation)
- Create Custom Variables, Triggers and Tags in Google Tag Manager
- Build and Test Your New Link

Build your custom Channels.
Go to Analytics
- Select Admin tab
- Select “Channel Settings > Channel Grouping” under View column
- Click into “Default Channel Grouping”
- Click “Define New Channel”
- Name the Channel “GMB”
- Define the first rule as follows: Landing Page URL – contains – ?local=true
- Select “And” to the right.
- Define the next rule as Source – contains – google
- Click “Done
- Repeat for Bing Places, naming the channel “Bing Places” and naming the source in the second rule as “bing” (no quotes)
- Create a third Channel named “Misc. Citation”
- Use the exact same first rule
- Create a second rule defined as follows: Source – is not one of – google (hit Enter to add a second line) Add “bing” (no quotes)
- Click Done.

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.
- Arrange the new Channels in the following order #1 GMB, #2 Bing Places, #3 Misc. Citations
- 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.

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.

Go to GTM
A. Select Variables tab on left
- Click “New” in the User-Defined Variables section
- Name the Variable “Local”
- Click the Lego-looking icon in the middle
- Select “URL” from the menu appears on the right
- In the Component Type menu, select “Query”
- Enter “local” into Query Key field. Hit Save
- Repeat, but name the next Variable “Location” and enter “location” into Query Key field.
- Hit Save.

B. Select “Triggers” from menu on the left.
- Click New.
- Name the Trigger “Citation Traffic”
- Click the double-ring icon in the middle.
- Select “Page View” from the menu that appears on the right.
- Select the “Some Page Views” radio button
- In the first dropdown, select “Local”
- In the second dropdown, leave as “contains”
- In the field on the far right, enter “true” (no quotes). Hit Save.

C. Click “Tags” on the menu on the left.
- Click New.
- Name the Tag “Citation View”
- Click in the Tag Configuration box
- Select the Google Analytics: Universal Analytics tag from the menu on the right
- In the Track Type dropdown, select Event
- In the Category field, enter “Local” (no quotes)
- In the Action field, select the Lego-looking icon to the right.
- Select the “Location” Variable
- Click the “Enable overriding settings in this tag” box at the bottom of that section
- Enter the Analytics tracking ID for that client
- Go to Analytics
- Select Admin
- Click Property Settings in the center column
- Copy the entire Tracking ID (UA-XXXXXXXXX-X)
- Return to GTM and paste ID
- Click into the Triggering section below
- Select “Citation Traffic” from the menu on the right
- Click Save
D. Hit Save, then Submit in the top right
E. Name the Version “Citation Tracking Implementation”
F. Click Publish

Build and Test Your New Links
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.
- Enter the Client’s tracking url into a fresh Incognito browser session
– domain.com/?local=true&location=(your_location) - Go to Analytics
- Click the Realtime section
- Click into the Events sub-section
- Verify “Local” is showing under Event Category and “(your_location)” under Event Action
- 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.