In the Google Search Console and Analytics

For local businesses their Google My Business Page in localised search results can be a major source for leads, however it is hard to see how well it is performing. By default the traffic it generates is mixed in with normal search result listing data.

This simple task makes it possible to cleanly separate out the Local Listing information in your Google Search Console and in Google Analytics. Here are the steps:

Use a special Website URL on your Page

The first step is to make it possible to detect that traffic came from the page. This is done by adding a special hash parameter (#) to the end of the Website URL in the Contact Info for your Business Page. e.g.

https://websiteadvantage.com.au/#GoogleLocal-KentTown

This is the syntax I recommend: Start with #GoogleLocal- to make it easy to determine it is a URL only used on local pages. Then add a name to identify which page, e.g. the suburb.

The reason I use this syntax is because it is nicer to read and the use of the hash means it does not technically alter the final destination. e.g. Analytics will consider it as the same page as the one without the hash.

The more standard tactic is to place campaign tracking parameters directly into the Business Pages Website URL. These make for very ugly URLs showing up in the reports. Hard coding the campaign parameters also limit the control you have over tracking. A later step in this article makes it possible for us to have clean URLs as well as track campaigns.

Viewing My Business reports in the Google Search Console

Once you have added your tracking URLs you will be able to see search activity for your listings via your Google Search Console. Go to the Search Analytics report, select Pages, then filter Pages by "#".

You might find it even more interesting to view the Queries related to your business pages. Just switch to the Queries report...

Tracking Local Page clicks in Google Analytics

By default Analytics classes all Google search traffic as medium=organic, source=google. This includes clicks from the local pack. The following piece of code detects your My Business URLs and transforms them into campaign tracking URLs. This means we can control how Analytics classifies traffic from the local page website clicks.

I decided to continue to classify them as google/organic and add a campaign value as a way to segment out our local listing traffic. The campaign value is taken from the hash text you used.

<script type="text/javascript">
if (window.location.hash.indexOf("GoogleLocal") == 1) {
    var googleAdsAutoTagging = window.location.href.includes("gclid=");
    var utmParametersAlreadyPresent = window.location.href.includes("utm_");
    if (!googleAdsAutoTagging && !utmParametersAlreadyPresent) {
        window.location.hash = "utm_source=google&utm_medium=organic&utm_campaign="+ window.location.hash.replace('#', '');
    }
}
</script>

The code should be placed before your Google Analytics code. If you use the Google Tag Manager then adding it as a high priority tag should work fine.

The code also checks for the presence of Google Ads auto tagging (gclid) or pre-existing utm_ parameters. It will not override them if they are already present, which means traffic directly from Google Ads or other tagged campaigns will still be tracked as intended.

Note: I'm not exactly sure how Google Ads tracks GMB related ads. It seems ads in maps listings are tracked to the website, while ads in search are not (they go to normal maps listings).

Viewing Business Listing traffic in Google Analytics

Once implemented you can go to your normal Organic Search reports and add a secondary dimension of "Campaign" to see which Business Listings caused any click. I've also created a Custom Report to show your My Business traffic.

Cleaning Things Up

As a final touch, I like to remove the tracking parameters from the URL after they have been used. Then the visitor does not realise what you've been up to ;-)