Do you want to run a Google Analytics audit, but not sure where to start?
Fortunately, you've come to the right place. Because, today, I'm sharing my complete Google Analytics audit guide.
I've used this in the past with paying clients, and I've seen this information fix TONS of Google Analytics related issues.
Before starting, though, let's get clear on how to use this guide.
Table of Contents
- How to Use This Guide
- Goals and KPIs
- 1. Accounts With No Goals: Switch from Metrics to KPIs
- 2. Accounts With Existing Goals: Do they make sense? Are they properly configured?
- 1. 1 site = 1 property
- 2. Always Have at Least 3 Views… ALWAYS
- 3. Filters against language spam, referrals spam, and bot traffic
- 4. IP filter (if applicable)
- 5. Cross-domain tracking (and self-referrals)
- 6. Is the Google Analytics tracking code (aka, snippet) properly installed?
- 7. Know your audience by enabling demographic data
- 8. Augment your organic and advertising data by linking Google Search Console & Google Ads accounts
- 9. Custom metrics & dimensions
- 1. Empty or unexpected hostname
- 2. Querystring
- 3. Are UTM parameters used?
- 4. Events
- 5. Duplicated URLs
- 6. Invalid or weird entries in language, referrals or other dimensions
- General Recommendations
An audit is conducted in multiple phases.
We start by looking at all the configuration options and the implementation on the site to see if best practices are being followed. Then we make sure that everything is configured properly so we can trust and properly use the data.
That’s all in the “Configuration” section which will come later in this free audit.
Next up is the data. We look at all the data and try to find symptoms of any problems that are hidden in there.
We’ll use a set of custom reports to help us look at some of the most common issues. But we also go through all of the data to make sure we don’t miss any problems that might be less common.
But before anything, we need to get clear on our Goals and KPIs).
WARNING: Do not skip this section.
To be honest, this is where most marketers fail. They have a vague understanding of their goals, but haven’t concretely identified what makes a metric a success or a failure.
Then they get a bunch of data and determine if it’s “good” or “bad” after the fact.
In my years of experience, the companies that have made the best use of their data had gone through the process outlined in this section.
To put it more bluntly, moving forward through this audit without defining goals and KPIs will be a huge waste of your time.
Here’s why: If you don’t have relevant and useful goals to add context to your Google Analytics data, you may as well go back to hoping things work auto-magically.
And spoiler alert... things just NEVER work that way.
For more information on the importance of having concrete KPIs, I recommend reading this article: What KPI Metrics Make a Valuable Report for Small Businesses.
That resource will provide you with more context on the difference between KPIs and neutral metrics.
So let’s take a step back and ask ourselves a fundamental question that many marketers miss: why are we using Google Analytics (GA) in the first place?
For most of us, it’s to understand what works and what doesn’t in our marketing efforts. We typically use GA to calculate the ROI of our strategy so that we can focus on what matters the most.
How do we measure that? Generally, it will be with conversions related to sales or lead acquisition for each of our marketing campaigns and systems.
Sadly, most Google Analytics accounts I’ve encountered in my consulting career had ZERO conversion goals configured.
So take a minute and write down what you specifically want to track in Google Analytics including:
- Conversion goals you already have in place
- Conversion goals you want to set up but haven’t yet
You’ll be in one of the two possible situations above: either your account already has one or multiple goals setup or it doesn’t.
Fortunately, we have one section covering each case below.
I don’t know about you, but last time I checked I couldn’t pay my mortgage with pageviews.
Knowing which channel brings the most visits isn’t as useful as you may think. That’s because visits don’t necessarily translate into sales.
This isn’t to say that pageviews or website visits aren’t useful. Of course they are. But only if you can identify what’s happening on those visits.
And for that, you need concrete goals for each metric. In other words, you need KPIs to determine if your data is good, bad, or neutral.
Because without goals, you need to assume that the channels bringing the most visits also bring the highest revenue.
But this isn’t always the case. Having goals will tell you which channel is actually the most profitable.
Need some proof? How about a quick story...
I once had a client that had one referral bringing about 90% of their visits. They had no goals configured, so I went and set some up for them. Then, we then realized that this 90% of traffic resulted in 1% of sales.
Yes, that’s right… let it sink in: 90% of their traffic only accounted for 1% of their sales! All this time they put a ton of effort into one channel, but with no real ROI.
You don’t want to be in that position. That’s why you need to avoid assuming that the channel with the most visits is also the one affecting your bottom line the most.
The “magic” of Google Analytics happens when you have the proper conversion tracking systems in place.
But how can you help someone that doesn’t know what should be tracked?
The question I always ask to unblock this situation very quickly is:
“Why do you have a website? Why did you pay thousands or tens of thousands of dollars to get a website?”
Some people will reply with things like “because we don’t really have the choice nowadays.” Every company needs a website to run their business.
I’ll call BS.
It’s not that you NEED a website to run a business. Plenty of “Mom and Pop” shops haven’t made the switch and they’re still in business.
The real answer you have a website is because you don’t just want a business: you want to grow your business and a website is the most efficient tool for doing so right now.
The website usually supports the main KPIs of the organization. In general, a website will exist to:
- Make sales
- Capture leads
- Help with the sales process.
- In some very rare cases, it will be to inform the public about XYZ (think about some websites from government entities, for example)
You’ll want to identify two or three main goals to start with.
Add too many goals and the data will overwhelm your team or clients. For the vast majority of small to medium sites, just one or two specific goals will work.
It could be sales, form submissions (estimate form, contact form, and so on), newsletter subscriptions, and other concrete goals your company values.
Identify these goals and implement the triggering events or redirections pages to support the configuration of the Google Analytics goals.
If you’re unsure what the phrase above means, just reply via email to [email protected] and I’ll be happy to clarify it for you.
If there are goals that already exist, you’ll need to make sure that those are actually the highest priority KPIs to track.
You’ll have to ask the same question as if there were no goals at all: “Why do you have a website in the first place? How do you want specifically a website to grow your business?”
Assuming the goals that are configured are actually a top priority for the company, you’ll want to make sure that they are triggering properly and as expected.
Verify the name of each goal to make sure they are very clear to anyone using Google Analytics for that organization. It should be simple. Some examples include:
- “Free Trial Signup”
- “Newsletter subscription”
- “Lead for submission”
- “Subscribed to course”
And so on.
Then, disable all goals that are not useful or not properly configured (we can NOT delete goals, so disabling them is the only way to get rid of them).
Again, do NOT underestimate the importance of making sure that the goals are the ones needed and that they are properly configured.
Once you’ve got clear and concrete goals, you’ve already made massive progress.
That said, we also need to make sure that the rest of the configuration is properly done, and that the data we have access to is reliable.
We’ll go through multiple sections for some of the key configuration aspects, and then another big section on how to spot bad data (and prevent it in the future).
**Go faster with helper reports**
One more thing before we dive in: we’ve created a set Google Analytics custom reports that you can import into the properties you want to audit to help you run the audit faster.
Each one of those reports has multiple tabs and each tab does a specific job. For each section below, we’ll tell you which report and tab to use.
Here are the links to import them:
Let’s start with the configuration elements to audit.
Helper report: #1, “hostname” tab.
There are four levels of hierarchy in Google Analytics accounts:
Typically, a property should represent a site. There are some exceptions, but they are just that: exceptions.
One of them is when a website uses a third-party payment website, for example, where Google Analytics is also installed. They are technically two websites, but still one functional entity. This is the most common exception to the rule of “1 site = 1 property”.
You don’t want your team or your clients to have multiple sites with a single shared property. Even if you use View, there is a high chance of errors and problems with the data.
The property should be named so that anyone seeing it understands what it refers to. Avoid things like “Website” or “New site”, and use something like the domain name (ex: “metricswatch.com”).
Rember, sifting through pages of data can be daunting enough. Make sure all your labels and names are crystal clear so you always know what you’re tracking.
Helper report: N/A
All sites should have a minimum of 3 views.
A) A view usually called "raw" on which no filter is applied. This is the most important point of this section.
Why is it important? Because in Google Analytics, nothing is retroactive.
By applying or removing a filter from a view, the change is not retroactive and only applies to data collected from that point in time. If you apply a filter and then make a mistake, it prevents data collection... you will never see this data again.
With an unfiltered view, although the data will not be perfect, it will still be more useful than inexistent data.
B) Then you have a view called "test", on which you will apply your new filters. Wait a few days before validating the data to make sure the filter is doing what it should do without any unexpected side effects.
You can do this exercise by comparing it with the last view I'm going to talk about ("master").
C) Finally, a "master" view on which you will apply the functional filters. This is also the view on which you create your lenses. This view is the source of truth. This is the view that you’ll consult the most.
Here is an example of a complete hierarchy:
That said, in some cases, there may be several master views, with different sets of filters. This is quite rare though. In these cases, you should have one test view per master view.
Do you only have one view right now? No worries. Just follow these steps to get everything configured properly:
- Rename the existing view to master
- Copy it and name the copy “test”
- Copy the new “test” view and name it “raw”
- Then go remove the filters right away from the “raw” view
That last part is very important.
Why copy and not create new views? To make sure they all share the same configuration.
Helper report: #1, “referrals” tab + #2, “language” tab” but could be everywhere, so do not look only there.
Unfortunately, not all traffic in Google Analytics is real traffic.
There is spam that is automatically sent to Google Analytics accounts, randomly (without even visiting your site for real). There are also "bots" that visit your site. Most of the traffic coming from bots is already eliminated by Google, but not everything.
Over the years, I have worked with three filters that eliminate almost all fake traffic.
Here are these three filters and how to configure them.
**Remember to always start by applying filters to the “Test” view, wait a few days and make sure they do what they should and do not have undesired side effects.**
a) Valid hostnames filter
To eliminate the majority of fake traffic, you can create a filter that ensures the traffic in your Google Analytics account is directed to you.
Most of the fake traffic won’t use your real hostname when sending the spam data to Google Analytics. They generally use some random name (or no name at all) which will result in “(not set)”.
There are two main versions of this filter. Version 1: If your site has only one domain:
Version 2: If your site has several domains, it's a bit more tricky as it uses regular expressions, but here's an example:
b) "Language spam filter"
At the end of 2016, an incredible wave of spam arrived. It was stronger and more intense than ever.
In addition to the typical "en-us,” "fr-ca", "en-ca" and others, you could see in languages things like "Secret.ɢoogle.com You are invited! Enter only with this ticket URL. Copy it. Vote for Trump! "(yes yes, all that!) or "o-o-o-8-o-o.com search shell is much better than google! ”.
Although it’s less common lately, this filter ensures that this kind of spam doesn’t "break" your data again:
You can copy the "pattern" from the image above here:
c. "Bot traffic filter"
To eliminate traffic coming from robots, you must first configure an item in Google Analytics that eliminates a large part of the bots. In the configuration of each view, you need to make sure that this option is checked:
However, this isn’t enough. That's why I strongly suggest you create this filter, too:
Helper report: N/A
It’s quite typical to exclude traffic coming from people in your office. This is, in general, a good practice.
There’s a couple of reasons NOT to do it:
- You have tons of offices, and they frequently change IP addresses.
- Your employees are a tiny portion of the visits to the site and have little impact on your data. If you have millions of daily visits, ultimately, a handful of daily visits won’t be a major issue.
- If your employees actually use the site for their work and are therefore actual visitors worth measuring, you should not exclude them.
But in most cases, it’s a good idea to exclude traffic from your site coming from team members. If you want to add a filter to prevent visits from certain IP addresses, here’s an example:
Helper report: #1, “referrals” tab
Sometimes Google Analytics properties are configured on more than one domain. For example, in the case of Metrics Watch, we have a marketing site on metricswatch.com and also the application which is on app.metrics.watch.
And we need to track conversions on both of these sites.
Another common example is when you use a third-party platform or ticketing system.
The problem? Google doesn't know that these two sites are linked or that you’re the same person.
The main concern here is that most of your conversions are going to be attributed to your domain, not the original acquisition channel.
So using Metrics Watch as an example, instead of “google / organic”, you would see “metricswatch.com / referral”. This isn’t very useful and defeats the purpose of even having Google Analytics.
Here’s how the interaction between two websites typically works:
When you go on Site A for the first time, Google Analytics will look for a “client ID” in the Google Analytics cookie. But since it’s your first visit, you don’t have one yet and Google will generate one.
During the process on Site A, you get redirected to Site B (by clicking a “Buy” button, for example). On Site B, Google Analytics will look for a cookie with a “client ID”, but since cookies are not shared across sites (for security reasons), they won’t find one.
They will generate another one.
From Google Analytics’ perspective, you are two different people with two different websites.
What’s worse is that the attribution will be broken because Site A will be considered the referrer on Site B, and you won’t get the original attribution for conversions.
Again, for our own example, without cross-domain tracking properly configured, all our conversions would come from “metricswatch.com / referral” instead of the original conversion, like “google / cpc” for example.
This is the typical symptom of issues. If you try to find out where the traffic that converted to app.metrics.watch comes from, you will see metricswatch.com as the only referrer (or at least the main one).
That's not very useful, right?
The solution is pretty simple in most cases. There are two parts to consider:
- Add your domains in the referral exclusion list (in Google Analytics itself).
Here's how to do Part 1:
In the administration section of Google Analytics, in the center column (property), click on “Tracking Info” and then “Referral Exclusion List”.
Then you just click on the “Add referral exclusion” button and add the domain.
In our case, you can see we excluded our domains.
Here’s how to do Part 2:
You can find the proper way for you here, depending on the version of the snippet you have, or if you use Tag Manager.
In some rare cases, none of them will work. I saw that a handful of times which means it’s rare, but it does happen. You’ll need custom code to find the “client ID” and add it to the URL in the right format.
Again, the technique here will vary based on the implementation.
Helper report: N/A
To function, Google Analytics’ tracking code needs to be loaded on the pages you want to track.
There are a few things to verify here.
- It should be installed on all pages.
- Only one snippet should be loaded. If there is more than one snippet, it will cause issues like a very low bounce rate (close to zero), duplicated page views, and more.
- It should be installed in the head section of the HTML–the higher up, the better so that it can start tracking as early as possible.
- Bonus: over the years, the snippet evolved. If possible, make sure the latest one is in use. Especially if there is a lot of new implementation to do, it’s better to migrate before adding new things. It’s not mandatory, as it should continue to work for a while.
Helper report: N/A
It’s possible to have some demographic data of your audience such as age group and gender. A simple configuration is required to activate this.
While I would not base a whole marketing strategy solely on this data, it can definitely help understand your audience, who they are, where they are from and you can also see which age group converts the most or the least.
You can then adjust your messaging based on this (I would recommend doing A/B testing regarding those changes).
Helper report: N/A
In order to maximize the data available in Google Analytics, it is possible to link some other Google products with your Google Analytics account.
You can do it for Google Search Console, which will give you a little more information about keywords, for example. Unfortunately, for several years now, the vast majority of Search Console data has not been available in Google Analytics, but only in Search Console.
It can still be relevant and only takes a moment to activate. Go to the "Acquisition" section, "Search Console" and select "Landing Pages", for example.
You will see this, but with an extra button:
Follow the instructions written on that page.
Google Ads can also be linked, and it is much more relevant (if you advertise with Google Ads). Go to "Acquisition", "Google Ads" and select "Campaigns", for example.
You will see this, and can just follow the instructions:
Helper report: N/A
Custom metrics & dimensions may be relevant for different reasons. For example, for a blog, you could have a "category" dimension, which would help you know which category of items is the most popular.
Inspect each of the custom dimensions and custom metrics and make sure they are properly configured (type, min/max value, and calculations when applicable) and that the data stored is reliable and useful.
Please note that it is prohibited under the terms of services to store private information that identifies a user in a custom dimension.
For example, although it is technically possible to have an "email" dimension and put in it the email of people who subscribe to the newsletter, you are not allowed to do so.
Helper report: #1, “hostname” tab
A site usually has only one URL. Sometimes it may have a few (such as metricswatch.com and app.metrics.watch, for example).
When looking at the list of hostnames, sometimes unexpected problems are discovered. For example, there could be totally unknown hostnames, or the hostnames from a QA environment.
You should make sure that only traffic to the real site(s) is tracked. The “Valid hostname filter” will cover this, but sometimes more can be done to fix the issue at its root.
For example, QA environments should have their own Google Analytics tracking code, different from the one in production.
Helper report: #3, “page” tab
Did you know that www.example.com/contact/ and www.example.com/contact/[email protected] are considered two URLs by Google Analytics?
In general, this doesn't cause a problem since it’s intentional (example: "?page=contact"). But in some cases it’s undesirable. For example, if you use an automated email marketing platform that adds a different identifier per person to the links, it segments the pages in an undesirable way and distorts the data in some way.
Another pretty common example is the “?fbclid=” followed by a long string of characters, which is added when people are clicking on links from Facebook.
To correct this, you can ask Google Analytics to ignore some of these settings. To do so, we go to the view configuration (start with a test view) and add our parameter in the "Exclude URL Query Parameters" section.
Helper report: #1, “utm” tab
UTM parameters aren’t just useful. They’re absolutely essential. Ok, but what are they?
Have you ever seen a URL like:
The utm_source, utm_medium and utm_campaign parts (as well as two others less used) allow to inform Google Analytics of the origin of visitors.
Without them, Google Analytics needs to make assumptions based on minimal details available in the browser (the referrer) to classify the acquisition data.
One of the symptoms is seeing things like m.facebook.com, l.facebook.com, facebook.com, outlook.live.com or mail.google.com (but not limited to those examples) in your referrals, instead of seeing “facebook / social”, “facebook / cpc” and “mailchimp / email” in your “source / medium“ list.
UTM parameters should be used for things like paid advertising campaigns of all sorts, email marketing, Facebook posts, Twitter tweets, and so on. When you control the link on a third-party platform, you should use UTMs religiously.
The end result gives pretty awful URLs, I agree, but it brings so much value that it's still worth it. You can use tools to shorten URLs with bit.ly or goo.gl, for example.
UTM parameters are crucial. You should spend a few minutes to make sure you understand them very well, and use them properly and when applicable.
I highly recommend our own resource on UTM parameters on our sitefor a lot more details and a little cheat sheet.
Helper report: #2, “events”, “events (only categories & actions)” and “event action only” tabs.
What events are sent to Google Analytics? Are they useful? Are they related to objectives? What do they tell us?
There is no official structure for events category, action, and label. But they should make sense. They should tell a story that you can understand quickly and easily.
I usually recommend having a properly defined structure that’s documented internally and stick to it as much as possible. That said, it doesn’t have to be super complex. It can be a simple Google Sheet or an Excel file.
Helper report: #3, “page” tabs (but change the order to be by “Page” column).
This one is more of an SEO problem per se, but something you should still verify as it can make big differences for ranking on search engines. Plus, it’s easy to do.
Some sites have duplicated URLs, typically in the following form:
- Version 1: www.example.com/contact (no trailing slash)
- Version 2: www.example.com/contact/ (with a trailing slash)
Only one of the two addresses should be indexed and visitable, the other should redirect to the original. Not only that, but you should use canonical links and make sure only the original is present in the sitemap.
Google has pretty good documentation for this issue if you need some more help with it.
Helper report: start with #3, all tabs, but use all 3 reports with all their tabs. Also look at all the common places in the whole Google Analytics interface.
This one is a bit broader in terms of scope.
We talked earlier about filters to fight against many forms of spam and bad data, remember?
The symptom is that some data is invalid or jumps to the eye as being very weird and unexpected.
For example, the format of the languages is generally two letters for the language, a dash and two more letters for the country. We expect languages to be things like “en-us” (English,USA), “en-gb” (English, UK), “en-ca” (English, Canada), “fr-ca” (French, Canada), etc.
So if you see something like “vote for Obama” in the list of languages, you can safely assume it should not be there.
This is why we use one of the filters we shared earlier. The same goes for the language “c” which is not used by typical browsers.
You should look at all the recent data (the last 90 days is usually a good starting point), and explore all the metrics and dimensions and look for things that seem out of place.
That can also include seeing “(not set)” in some places. Some dimensions always have a value. The opposite case is abnormal.
The hostname is a great example. Without a hostname (example: "www.example.com"), how can someone visit your site?
When you find weird data, you then need to validate if it is really invalid, and patterns to exclude that fake or invalid traffic. For example, some spammers do not set a hostname or browser value, or set them to something easily identifiable. Once identified, you can create filters to exclude and get rid of that fake traffic.
Common places to look for are hostname, language, browser, referrals, landing page, page, page title, source, and medium. But they are not the only ones.
I always keep a section at the end of the audit report where I can add some recommendations not directly related to Google Analytics.
It can cover things like Google Tag Manager, Facebook Pixels or anything I came across on the website (bugs, issues with forms, typos, and so on). I note everything but rarely go into details here unless there was also a Google Tag Manager audit included, for example.
What I will almost always recommend is adding a heatmap, scroll map, and session recording software like HotJar, Crazy Egg, or Full Story.
I generally recommend HotJar as they have a decent free tier. Overall, though, here’s my biggest piece of advice for marketers:
You likely know how you SHOULD use the data you’re getting (assuming it’s reliable). Now, it’s about taking the extra few minutes a day to check in with your analytics, make sure things are on track and re-working your strategy based on the data you receive.
Again, the most common problem I’ve seen with marketers is that they know the theory, they just don’t put it into practice.
If you’ve followed this audit, you should have 100% reliable data to draw from. You should also have concrete KPIs to determine if that data is “good” or “bad.”
That means you have everything you need to let Google Analytics grow your business.
And that's it! This has been my total Google Analytics audit guide.
I hope you enjoyed this post. And, if you did, you might also want to check out these resources:
These articles will have everything you need to make better marketing reports from your Google Analytics data.