Let’s start with traffic sources (a.k.a the Channels report in Google Analytics).
Google Analytics Acquisition > All Traffic > Channels report is notoriously problematic. Traffic Sources is supposed to show you how people got to your website. The three main categories are Search, Referral, and Direct. Here’s what the traffic sources are supposed to mean:
But there are all kinds of reasons why Google Analytics data is inaccurate. Much of the Acquisition > Channels report is incorrectly categorized, mislabeled, and incomplete.
Although we’d like to believe that search traffic is everyone who discovered us through a keyword search, there are two problems here: branded searches and hidden keyword data.
Search traffic includes “brand keywords” such as the company name. Although this is technically still search traffic, these visitors knew you already. They may have accidentally searched for your web address rather than entering it into the address bar.
Ideally, visitors who find websites by searching for the brand would be categorized as direct traffic.
I’ve seen Analytics accounts where 80% of search traffic was searches for the brand. At a glance, it looks like a healthy amount of visitors were discovering them through search engines. In fact, the company didn’t rank for anything but their own name.
The fix: Use Search Console to see what percentage of traffic is coming from Branded vs Non-Branded searches. Go to Performance > Queries > Export. From here you can see if all of your searches are branded. If so, you need to work on SEO (reach out if need help with that).
Here, Analytics isn’t lying, but it isn’t telling the whole truth. In November 2011, Google stopped displaying some keyword data in Google Analytics. Here’s what happens:
Anytime you search using Google and you see an https:// (rather than http://, with no ‘s’) in the address bar of the browser, the phrase you searched will not be shared with the website owner if you click on a link in Google search results. The keyword will appear as (not provided).
There are lots of other reason keyword data is not provided. If you use the search field in the Firefox browser, or if you have Google Analytics blocked in Chrome.
The fix: There is no “fix” to get all of your hidden keyword data back. But you can use Google Search Console to uncover some of those queries. If you have Google Analytics and Google Search Console joined, you can find this data directly in Google Analytics. If you don’t, here’s how to join Search Console to Google Analytics.
To get to the Queries report go to Acquisition > Search Console > Queries.
Or you can use tools like SEMRush, Ahrefs, and Moz.
In theory, referral traffic shows visitors who came from other websites. But in practice, it often includes traffic driven from social media efforts, email and in some cases, traffic from one page on your site to another.
Social media marketing takes time and energy, so you’ll want to measure the effectiveness of those efforts separately in Analytics. But social traffic is actually categorized as referral or direct. Any clicks on tweets or posts without tracking code and within a browser will appear as referral traffic.
The fix #1: Some social media tools can be set up to add campaign tracking code to shortened links. If you consistently tweet or post from a service like CoSchedule your social media posts will be automatically tagged.
The fix #2: Use the Google URL Builder tool to tag your own social media posts. This will help Google Analytics correctly segment social traffic from other referrers.
If you send out an email newsletter with a link to your site, and the recipient opens and clicks it from within a browser, such as Gmail or Yahoo!, the traffic is recorded as a referral, even though the real traffic source was a newsletter, something you’d like to track separately. This is always true unless you add campaign tracking code.
The fix: Just like above, use the URL Builder to add campaign tracking code to every link to your site in your emails. This will keep your direct traffic clean, but also allow you to track what visitors from emails are doing. Here are detailed instructions on how to track campaigns using to the Google URL Builder.
Here is the true definition of direct traffic:
All traffic for which a referrer wasn’t specified.
In other words, direct traffic isn’t just people who entered your website into a browser, it’s any visit that isn’t from a link on a website or search engine and doesn’t have campaign code. This is Google’s equivalent of saying “I have no idea where you’re from. Go straight to Direct. Do not pass go. Do not collect $200.”
It’s a catch-all bucket for “everything else.” So there’s a lot of weird stuff in here. Let’s take a look.
Lots of social activity happens within apps. But links in apps don’t always pass a “referrer,” so it looks like direct traffic in your Google Analytics.
The fix: Some apps will automatically shorten links, adding a referrer by redirecting the visitor through another address (official Twitter apps sent traffic through t.co address). This allows social traffic to be categorized more accurately. But no matter how carefully you tweet and post for better tracking, you can’t make the rest of your fans and followers do the same.
As with the referral traffic/email problem, some of the traffic from that newsletter you sent will be opened in email programs like Outlook or Mail. This is because desktop software doesn’t pass referral data like browsers do.
The fix: Add campaign tracking code to your email marketing.
Visits from links in non-web page files are recorded as direct traffic unless they have campaign tracking code. PDF files are the biggest culprit.
The fix: Move content from these files to your website, then share the page, not the file. If you add a PDF to a page, set up event tracking so you can track when someone clicks on your PDF to read or download.
If Analytics sees campaign tracking code, it ignores the referrer. But if the tracking code has problems, it doesn’t put the visit back into referring traffic, it puts it into direct traffic.
The fix: If you set up tracking code manually, do it carefully and double check your work.
If there is a page on your website that doesn’t have the Google Analytics tracking code or the Google Tag Manager tracking code properly installed, traffic from this page to other pages will appear as direct traffic. Yet another example of how direct traffic is really a mixture of all your traffic leftovers.
The fix: Use a tool like Google Analytics Debugger or Screaming Frog to scan your site for improper or missing code.
If you don’t have filters properly set up, it’s possible that a significant portion of your traffic is coming from you, your office, or your team. If even a handful of employees set the website as their homepage, it will skew direct traffic over the long run.
The fix: Set up a filter so traffic from your own network’s IP address is removed from your stats. Hopefully, you have an internet connection with a static IP address.
In the admin section of Google Analytics, go to filters.
Click on “Add Filter” and then go Google “what is my IP address.”
Enter the filter name > Filter type: Predefined > Exclude > Traffic from the IP addresses > that are equal to > now enter your IP address that you got from Google. Click save!
Let’s keep this rant going to poke some more holes in our web stats. Here are some more misleading stats. Some are unfixable technical limitations; others are easily solved setup problems.
Unlike old-school webstats that analyze the log files on your server, Google Analytics needs cookies to work properly. If the visitor’s computer (or firewall) rejects cookies, it’s a hole in your data.
Every time a previous visitor clears their cookies, they look like a new unique visitor next time they visit. To Google, they might as well be a newborn baby.
The fix: None
Check to see if you have a GDPR consent tool installed on your website like Cookiebot.
When GDPR took effect in 2018 a lot of companies had to install cookie consent tools on their website to be compliant with GDPR. I’m sure you see these cookie consent banners every single day when you’re browsing around.
It depends on how each tool is configured, but what happens is that cookies aren’t being tracked by those tools. Therefore, Google Analytics is unable to track those users.
According to CookieBot’s website:
“Any recorded drop in traffic is primarily related to the fact that no data is registered for those users that simply ignore the cookie consent banner and leave the website again without having either opt-ed in or opt-ed out.”
This doesn’t mean that people aren’t still using your website, it means that Google Analytics can’t track them therefore traffic drops in Analytics.
The fix: There really isn’t a fix for this since it’s a law. You can choose how the cookie consent tools are configured. Be sure to check with your legal team or subject matter expert first!
There are two main reasons this happens:
Reason one: You have two sets of Analytics code on your website.
The fix: Remove the extra code! Then make an annotation in Google Analytics.
Reason two: You have “Non-interaction hit” in Google Tag Manager set to False.
First, let’s define the true meaning of a bounce.
A “bounce” really isn’t a one-page session. A bounce is a one-hit session. A hit is any time data is sent to or from Analytics. Events are hits.
So if a visitor lands on a page and clicks an offsite link before visiting a second page, they will no longer be counted as a bounce, since it was a two-hit session. The first hit was the pageview and the second hit was the event.
Let’s say you set up an event to track all outbound links on your website in Google Tag Manager. If you set the “Non-interaction hit” to be false that means that if someone clicks on a link to another website, you’re saying that was not a bounce. This will cause your Bounce Rate to be lower than it probably should be.
There are some instances where tracking an outbound link as a non-bounce makes sense.
tom Bowen, WEB SITE OPTIMIZERS
“For many Analytics Events you track (when they play an embedded video, download a PDF, click a tab that expands information, etc.), you definitely want the Non-Interaction hit to be set to false. They DID interact with the page!
For Events that result in them leaving your site (clicking on social media buttons or other links to external websites) it’s important that you set Non-Interaction hit to true so that the Event does not affect your Bounce Rate.”
The fix: Change the Non-interaction hit setting in Google Tag Manager! Then make an annotation in Google Analytics.
Reason one: Two sets of code are firing twice.
Check to see if Google Tag Manager and Google Analytics are set up correctly.
If you have Google Tag Manager (GTM) set up and you are running Google Analytics through a GTM tag then be sure to remove the Google Analytics code that is on your website. Otherwise, you’re telling Google to count each visit twice.
Not sure what Google Tag Manager is? Here’s a quick overview of Google Tag Manager.
View the page source of your website and do a search for “UA-” and for “GTM-”. To view the page source, right click on an area of your website, then do a search. On Mac it’s apple + F. If you see both sets of code, it’s likely that your traffic is inflated in Google Analytics.
You can also use Google’s Tag Assistant addon.
The fix: Remove the Google Analytics UA code OR remove the Google Analytics tag in Tag Manager. I recommend your remove the Google Analytics code and keep your Analytics tag in Google Tag Manager.
Note: This ONLY applies if you’re firing Google Analytics through Google Tag Manager and on the website. There are some instances where you have both GA and GTM code on your site but you’re not firing your GA Tag through Tag Manager. That’s fine but don’t fire them in both places.
PRO TIP! Make sure you make an annotation in Google Analytics. It’s likely your traffic will get cut in half after making this change so you need to make note of it. Don’t panic. This is more accurate! The data you were looking at before was not accurate.
Reason two: Google Analytics code on third-party tools.
Do you have third party forms on your website? Is there Analytics code on those forms?
In some cases, when you use third-party forms and embed them onto your website, the code is on both the forms (in an iFrame) and on the website. This causes Google Analytics to fire twice.
The fix: Remove the code from the forms! Or use a different GA code for the other tool if you must keep the tracking for other use cases. As always, make a note in your Google Analytics.
Reason three: Bots.
You might be seeing an increase in traffic is from Bots. There’s only so much you can do to prevent bots from coming to your website. Google has an “exclude all hits from known bots and spiders” option in your View settings. Be sure to check that little box!
But this won’t save you from all bots. To see if traffic is coming from a bot, go to your Behavior > All Page report. If you see a Bounce Rate of 100% and an Average Time on Page 0:00. That’s bot traffic.
The fx: There’s no way to 100% remove bot traffic.
The fix: Make sure the code is installed properly. This is why we recommend running Google Analytics through Google Tag Manager. It’s the first one on the list when you create a new tag! Easy to find, easy to install.
The page loads, you read a bit, then switch to a different tab, planning to finish reading later…
Google has no idea you left. When a tab is open, Analytics assumes you’re on the page, even if you minimized the browser or got up to make a sandwich. Even though Analytics will “time out” after 30 minutes, the “Average Visit Duration” report is unreliable.
The fix: None. It’s a problem that’s common to all web stats tools.
If two people visit the same site for the first time from the same computer, Analytics only noticed one unique visitor. Imagine 100 people visiting from the same computer at a library. It’s just one visitor to Analytics. It’s no wonder libraries are underfunded.
The fix: None
Again, “unique visitor” isn’t an honest way to say it. It’s really unique computer, so if one person visits your site from three devices (including the one in their pocket), then Analytics will tell you that three unique people visited.
The fix: None. This is also a problem for stats within email service providers. If each person on your list opens the email on their laptop and on their phone, your open rate will be 200%. Great job!
It’s nice to see double-digit conversion rates, but only if they’re accurate. If you set up too many goals, including event tracking goals, you’ll artificially inflate your overall conversion rate.
The fix: Only set up goals and events for things that are important, or you’ll need to start ignoring the main Goal Conversion Rate.
New Views permanently remove data from the default profile. This data can never be recombined with the original View, so use them wisely. If, for example, you separate all mobile traffic to a separate View, you can’t easily compare it to your other traffic data. You just screwed up your stats.
You should really only have three views in your Google Analytics account.
The fix: Use Advanced Segments or Advanced Filters to view specific types of users in a specific report. Profiles are meant to segment out completely different types of visits from your normal marketing stats, such as traffic within a login area.
One last reason why Google Analytics isn’t giving you the full picture: lag. Except for the limited (but beautiful), Real Time reports, GA data is typically at least 6 hours behind. The delay in the Search Engine Optimization section is even worse. That data is often 48 hours behind.
The fix: Be patient.
Watch: How to set up Goals in Google Analytics or view the full post.
But even with imperfect data, you can still use Analytics to support great marketing decisions.
You can help by making sure things are setup properly:
We’re hoping to make this article a comprehensive list of problems with traffic sources. If you know of something we missed, please let us know with a comment below, and we’ll add it. We appreciate the input!
Amanda, these tips are helpful, especially to marketers who use analytics daily. Thanks for detailing every factor that needs attention.
Excellent you guys rise the bar congrats for being so clear!
I can not believe you are so smart. I work on cars and Automotive and had someone hack my facebook and sent a friend a big text acting as me and I am tracking a phone number and it came back as a funny type number with somewhat of a address with a map of almost the location. I searched google thru a copy of the map and it came back as saying that it might be fake. Then i saw what you have been talking about and how you explain things and how so much is involved and you blow me away ! You are so smart. it is amazing that you understand all of this is so complicated and yet this is easy for you. I am like this in ways when it comes to fixing things and working and remember things when it comes to cars. But It is like a gift and only in the things that my brain really likes.I can see that gift in you. You are very special and you love what you do.If I had half of your talent in what you do. I would of been on top of the world. But unfortunately and reasons of having to be self taught and having to use spell check I will never be able to understand half of what you know. But i know you probably will never understand the car you drive or how to fix it. I hope I am wrong and you do no. I do not know where I am going with this I just wanted to tell you that you are amazing and you touched me for some reason. Well for what it is worth at least you know someone appreciates your talent. OK by Paul mraz
What are your thoughts?