Have you ever noticed your domain name showing up as one of the top referrals in Google Analytics. I have seen too many GA accounts with this self-referrals issue.
Your data becomes unreliable and it leads to wrong marketing decisions. And the credits for a conversion are not attributed to the (marketing) channel(s) that deserve it.
In most cases this is due to an improper Google Analytics implementation or configuration. In this article I outline five common causes of this issue and how to deal with them.
At the end I present a simple Universal Analytics fix to dramatically reduce the number of self-referrals in your account.
Referrals
For those who are new a quick recap on referrals:
“Referral traffic is the segment of traffic that arrives on your website through another source, like through a link on another domain. These links don’t contain any campaign parameters. Analytics automatically recognizes where traffic was immediately before arriving on your site and displays the domain names of these sites in your reports.”
Via the Source / Medium report you can see the full domain names. You need to select the Referrals report If you want to look at specific pages that send traffic.
1. Javascript Redirects
Website migrations are more difficult than most people think. You need to take a structured approach and make sure you thought about everything.
It wouldn’t be the first time that someone using javascript redirects to redirect the old domain to the new one. This often results in a lot of own domain referrals.
How to Fix:
Use server-side redirects instead of javascript. This will ensure that your Universal Tracking code loads on your new domain and it should resolve your issue.
2. Pages Missing Tracking Code
Most companies implement their tracking code on all webpages without real problems. What if you are not so lucky with your CMS and it’s not a one click thing?
Forgetting to tag pages is a nightmare. It might be the cause of finding your own domain in the referral report.
How to Fix:
Make sure to tag all of your pages on your website(s). Tag Inspector is a tool that might come in handy here!
3. Pages Dropping Cookie Data
It’s important that the Universal Analytics cookie is carried over from one page to another.
If the cookie is dropped for any reason, the user session ends and on the next page a new one starts. You could take a look at your landing pages with secondary dimension sources and find out where a self-referral shows up.
How to Fix:
Find out whether there is any reason why this happens. Check through the site and pages that cause this issue.
If it is an easy fix, just fix it! Sometimes it is hard to solve this issue. In that case talk to your developer, explain the importance and let him help you fix it.
4. Cross-Domains
A lot of companies have more domains within their online “ecosystem”. Often there is a need to connect the visitor journey across all involved domains.
You want to follow a visitor from one domain to the other and the original cookie should remain active. To make this happen, you need to technically “connect” both domains.
Dealing with multiple domains and a high number of self-referrals? Check your cross-domain implementation and configuration. There is a reasonable chance it is the cause of your issue.
How to Fix:
You need to ensure that the cookie and thereby your session stays active when a visitor clicks from domain A to B and vice versa.
It goes beyond the scope of this article to explain it in detail. I recommend to using Google Tag Manager to make things a bit easier.
Here are two useful resources to help you out:
Another useful article for non-GTM users:
5. Session Timeout Myth
Sessions end after a specific amount of time has passed. By default, sessions end after 30 minutes. I have seen different sites where the time on page is very high for certain pages.
As an example, a recruitment site where you need to upload your resume and motivation letter. Most people have their resume ready, but still need to write a motivation letter.
What happens, they leave the screen open and return after more than 30 minutes and a new session starts.
“Based on my experience and contrary to want many people say, this new session shows up as a direct session and not as a self-referral.”
How to Fix:
In Universal Analytics you have the option to modify session and campaign timeout levels. You can experiment with setting the session timeout a bit higher and see what’s the impact on the number of direct sessions in your Google Analytics account.
Note: you must know exactly what you are doing if you change the settings below. It has a huge impact on many metrics, so be warned!
General Fix in Universal Analytics
In order to tackle the self-referral issue directly in Universal Analytics, there is one important setting:
The referral exclusion list affects how sessions are calculated in your account.
“For example, a user on domainA.com navigates to domainB.com and then returns to domainA.com. If you do not exclude domainB.com as a referring domain, two sessions are counted, one for each arrival at domainA.com. If, however, you exclude referrals from domainB.com, the second arrival to domainA.com does not trigger a new session, and only one session is counted.”
This method is effective and dramatically reduces the number of self-referrals reported in Google Analytics.
One last thing... Make sure to get my automated Google Analytics 4 Audit Tool. It contains 30 key health checks on the GA4 Setup.
Andrea Nagar says
Hi Paul,
Thanks for your post. I have a question about the Referral Exclusion list. I’m using cross domain tracking. If I’m going from domain A to domain B (and possibly back to domain A) shall I add domain B in the exclusion list? Or it is already taken care by the cross domain tracking?
Thanks.
Paul Koks says
Hi Andrea,
Thanks for your comment. I actually think you should exclude/add them both to the exclusion list.
You can check these resources as well:
– https://support.google.com/analytics/answer/2795830?hl=en
Google Analytics automatically excludes the domain associated with a property as a referral source, so you won’t see self-referrals in your Analytics reports. You must manually add all other domains (including sites in a cross-domain tracking or third-party shopping cart setup) to exclude traffic from those sites as referral traffic in your reports.
– http://www.blastam.com/blog/index.php/2014/11/2-steps-cross-domain-tracking-universal-analytics
Best,
Paul
Jessica says
Hi Paul,
I’ve run into this self-referral issue several times with subdomains (not really different domains) of the same site. I spoke with Google and they suggested using the referral exclusion list and NOT using cross domain tracking.
However, after adding all subdomains to the exclusion list I’m still seeing self-referrals. Any suggestions?
Paul Koks says
Hi Jessica, good question! Yes, subdomain tracking should automatically work in Universal Analytics and you don’t have to apply cross-domain tracking if the root domain is the same.
Two more sources:
“When your domain is in the exclusion list, then users can cross from one subdomain on your site to another without starting a new session. Without your domain in the exclusion list, when a user goes from one subdomain to another on your site, Analytics sees that as a referral from one hostname to another and starts a new session. As a result, your reports can have artificially inflated session counts.
When you initially set up your Analytics property, your domain is automatically added to the referral exclusion list. As a result, you shouldn’t see self-referrals if you have a web property that tracks multiple subdomains.”
“Universal Analytics includes your site’s domain in the referral exclusion list by default, so cross-subdomain tracking should work with no additional set up.
However, if your site has user journeys that cross subdomains, and the referral exclusion list does not include your site’s domain, then you can get self-referrals, as well as invalid extra sessions in reports. To fix this, make sure your domain is in the referral exclusion list.”
You don’t have to add all the subdomains.
Example:
test.go.com
test2.go.com
test3.go.com
In that case, just adding “go.com” will do.
Hope this helps!
Paul
Jessica says
Hi Paul,
It sounds like I just need to exclude my primary domain (“go.com”) which is done.
However, I’m still seeing referral traffic from “go.com” in my google reporting. Most of the self referral traffic is connected to the traffic hosted one subdomain. Both of which are excluded in my exclusion list.
Not sure how else to get rid of this…
Thanks for your help!
Jess
Paul Koks says
Hi Jessica,
There are a few other things that I would recommend:
– Debug your entire tracking around this subdomain so exactly find out what is happening. Does something happen on that page that leads to a new session / cookies getting lost?
– Segment your traffic that get’s to the page where the “connection” seems to get lost. You might be able to more exactly pinpoint the problem.
– Do people spend a lot of time on this particular page/domain? It usually won’t be the (entire) cause of this issue, because a session lasts for 30 minutes.
Best,
Paul
Priscilla Young says
Hi Paul,
Thank you for your post!
Well, I met a session timeout issue on GA. According to the post, the new session of a timeout session might show the self-referral or direct, what factor leads the difference among them?
However, I found it shown the source as the previous page. Could you help me understand what exactly happened of GA?
Thank you a lot!
Paul Koks says
Hi Priscilla,
Thank you for your comment.
I haven’t dealt with it that often. But in my tests, the traffic showed up as direct.
It might have something to do with your “referral exclusion list”.
Did you include your own domain in this list?
https://support.google.com/analytics/answer/2795830?hl=en
Do you have a large portion of session timeouts on your site? If that’s the case and you have a good reason to, you can adjust the session timeout time.
You can find it in: property >> tracking info >> session settings.
Hope this helps!
Paul
Ric says
Hi Paul, I have set up the REL (referral exclusion list) for a 2nd domain that I have, and config. the cross domain tracking. Both domains share the same GA code.
Now the issue is that when visitors come from domain B to domain A (both mine), it just counts as Direct traffic. So I’m missing data which is rly imp to me to know the user journey.
Isn’t it better to just have it as referral traffic between domains by not adding it to the REL?
Paul Koks says
Hi Ric,
This sounds like something is not properly implemented as defining these referral exclusions should not set the traffic/conversion to direct. Only if the visitor is recognized as direct on the first domain. Otherwise it should remember the original traffic source when entering the second domain.
I recommend to re-check/test the cross-domain implementation.
Also, make sure to add any 3rd party payment domains to the referral exclusion list.
Best,
Paul
sid says
Hi Paul,
Loved the blog. This is exactly what I was looking for.
I am actually facing the similar issue with one of my client.
The client has two websites. (website A) and (website B) Both website have different objectives. We only manage their website B and their Google Analytics property.
I noticed that, in acquisition channel, most of the traffic is coming from direct (90% traffic). Because the website B is solely cater b2b users, which is why majority of the direct traffic does not make sense to me. So I looked at the self-referral exclusion setting and found (website A i.e. “abc.com”) were added there. I believe this is the culprit, because Google uses “CONTAINS” in the self-referral section in GA that matches with everything before website A (abc.com) because it could also capture (business.abc.com) too, lets call this website B.
FYI, there is NO cross domain conversion happening from website B to A or vice versa, so it wont impact the conversion data, so we are good on that front.
I believe, ideally, the self-referral exclusion should be (business.abc.com), because we would still wants to see “www.abc.com” as referral traffic, instead of direct.
Here is my proposed solution:
I can remove the (abc.com) from the self referral exclusion list) from the (website B) property and change it to (business.abc.com = Website B) so this way, we can capture any traffic that coming to our site from http://www.abc.com appear as referral traffic and not direct.
Second option, I can just completely remove the abc.com from the list and keep the list blank. Because, we are certain that, all website B webpages have tagged properly. This way, any traffic coming from abc.com would automatically appear as referral as long as referrer passed through.
Paul, what’s your thoughts on this? Thanks in advance
Paul Koks says
Hi there,
It’s challenging for me to answer as I don’t know all details.
Based on the information that I have, I would go for option 2 and evaluate the data within a few days or week to see whether it comes in as expected/desired.