Whenever you have more than one tracking system in place, those two tracking systems can have discrepancies. There are a ton of different reasons for this, and I’m going to cover as many of them as may be relevant.
For the case I’m discussing today, I’m primarily talking about data harvested by Facebook Insights and by Google Analytics. The trick is, though, that the same sorts of issues can happen for other analytics as well. For example, Twitter ads can be just as inaccurate as Facebook ads, and using something like Raven Tools or Slimstat can report different things than Google Analytics.
You want to use the most accurate data, but you also need some measure of sane filtering in place. Different suites use different filters and different methodologies, so your data will be different, even if it’s still technically accurate. Just don’t install more than one or two analytics scripts on your site; after a certain point, the increased data isn’t worth the decreased search ranking caused by the slower site. That, and sometimes the scripts can get in each others’ way and cause inaccuracies themselves. Only use complimentary suites, like Google Analytics and Crazy Egg, which don’t duplicate features from one another.
So, if you’re running Facebook ads and Facebook Insights shows, say, 100 hits, you would expect to see around 100 hits from Google Analytics using Facebook ads as the source, correct? If Google then shows something closer to 40 hits, you may have a problem.
Now, this discrepancy tends to be relatively minor, all things considered. Yes, it’s painful not to have accurate numbers, but when your hits are measured in the hundreds, it looks worse than it is. A discrepancy of 50 hits hurts when you only have 100, but hurts much less when you have 10,000. It’s generally not a consistent percentage going missing with Facebook and Google, but regardless, it’s still a problem you should strive to solve, or at least understand.
So what are the causes of a discrepancy between Facebook and Google Analytics?
Clicks and Visits are Different
The first possible issue is one of terminology. Facebook ads measure “ad clicks” and report that in Insights. Google Analytics doesn’t measure anything on Facebook itself, and only measures what arrive son your site. This means that any click that occurs on Facebook that, by its nature, doesn’t bring the user to your site, will not be reported as a visit on Google Analytics.
This is important because of what Facebook defines as ad clicks. Specifically, they define it as any click on any part of the ad. Normally, that would be enough, right? Most ads simply have text, a link, and a linked image. Clicking the text does nothing, clicking the link takes you to the site, and clicking the image takes you to the site. There’s only one possible click.
On Facebook, however, ads have a lot more to them. Take a standard news feed post, for example. If the description is too long, it is truncated behind a “read more” link. Clicking this link doesn’t take the user to your website, it just expands the text so they can read the full description. However, clicking that link is clicking part of the ad, and thus counts as part of the ad clicks.
One user clicking to expand the description, then clicking to like the ad post, then clicking to share it, and finally clicking through to read your post, is racking up four different clicks, all of which are reported as ad clicks in Insights. Google Analytics only shows one incoming view, however, so you end up with a 75% reduction in metrics from just that one person.
Any click that interacts with the ad in any way is counted as an ad click in Facebook’s Insights. This includes the description, clicking to read comments, liking the post, sharing it, posting your own comments, and more. This means you can have a ton of over-reporting on your ads compared to Google, which is only measuring unique visitors.
You can read more about this problem and some methods to fix it on Jon Loomer’s blog here. He pointed out this error back in 2014, and while some of the back-end layout of Facebook Ads has changed since then, you can still use the same methods to filter and analyze your data.
About 90% of the time, I would say, this will be the root of your discrepancy between Facebook visits recorded and Google visits recorded. The fact is, they’re simply measuring different things. When you get the right measurements in place, you’ll see much more accurate numbers.
Filtering Invalid Clicks
Google, for its part, shows pretty much every click that arrives on your website. This has actually been a pretty big problem historically, as Google Analytics will happily track incoming views from bots, web spiders, and any other non-human account that renders JavaScript and is able to initiate the tracking code.
Meanwhile, from Facebook’s side of things, they tend to filter out fake clicks. They do this because money is on the line, primarily. They don’t want customers to be unsatisfied that the clicks they’re getting to their site are delivered by bots, so they filter out those clicks. You don’t see them in Facebook Insights and you aren’t charged for them, but they do pass through and arrive at your site, where they are recorded as clicks to Google.
This is in some ways the opposite problem as the previous entry. In the previous entry, Facebook will be reporting far more clicks than Google. In this one, because Facebook filters and Google doesn’t, you will see more clicks on Google’s side than Facebook.
This isn’t a problem you can address from Facebook’s side, but that’s fine. You don’t want to suddenly have to pay for more clicks, particularly when you know ahead of time that those clicks aren’t going to be doing anything beneficial for you.
What you can do, instead, is work to eliminate or filter bot traffic from your Google Analytics reporting. This will show a drop in your traffic, so make sure you note when you implement it. Filters don’t go back and edit historical data on Google Analytics, unfortunately, which means you’ll only see the accurate data moving forward.
- In Google Analytics, go to the Admin section under View Settings, and click the box that says “exclude all hits from known bots and spiders.” This will make sure that bots are filtered. It should be checked by default, but if your installation is old enough or has been customized, it might be unchecked.
- In the Google Tag Manager inside Google Analytics, add filters for the IP addresses of known pesky bots that are still getting through. This will block them, but it will also block any legitimate views from that IP address. If you’re not concerned with it, that’s fine.
- In the Custom Dimensions section, create a new variable called navigator.userAgent. You will need to add a custom dimension to your analytics for each bad bot you notice. You can read more about how to do that here. Note that the post is an April Fools joke; the top few entries are valid, but everything from using a Captcha beyond is joke entries. It’s a fun read, but I wouldn’t recommend implementing Captcha just to view your site.
There are other ways you can tweak Google Analytics to be a little more accurate, but one thing you’ll never get is perfect accuracy. Google harvests so much data for so many people every day that they don’t actually keep it all, they simply take samples. This means that there will always be the potential for some discrepancies, no matter how accurate it is.
Minor Issues
I say that the following are minor issues not because they have a minor effect, but because they’re easy to check and fix if they’re causing problems.
Consider this a quick checklist to figure out what might be wrong.
- You’re reading the wrong data in Google Analytics. If you’re comparing clicks from Facebook to Sessions in Google, you’re going to have a bad time.
- You have a redirect from the landing page to a different page. This happens too quickly for Google Analytics to initiate on the landing page, so it doesn’t record data from Facebook. Rather, it redirects the user to a different page, which is then recorded as coming from an internal page. Since you lose the Facebook referral data, you lose accuracy.
- Broken or missing tracking on your landing page. I’ve seen it a few times before, that a site sets up a landing page but completely forgets to implement Google Analytics on that landing page. You’ll still get some Facebook referral data to other parts of your site, from non-ad sections of Facebook, but it won’t reflect the ads. In fact, it will appear as though ads are doing nothing, because your data before and after is largely the same.
- User settings preventing scripts. Users that use a browser setting to disable JavaScript, or that use a plugin like NoScript, are going to be able to load your site without actually loading the Google Analytics module. This prevents Google from firing, and thus prevents them from recording data about your visitors.
- Filtered repeats. When a user clicks on a Facebook ad and views your site, Facebook records one click. If, 20 minutes later, the same user clicks the same ad to go to your site, Facebook records it as another unique view. However, Google will recognize their cookie and record both clicks as part of the same single session. This means Google will have even less data than Facebook.
- Rapid bounces. Again, Google Analytics is a script that fires when the page loads. Depending on where on the page it is, the user may have a chance to bounce away from the page before it fully fires. Facebook will record them, but Google will not, as Google’s script never actually initiates. This is why many sites opt to put Google Analytics as the first thing in their header.
There are a few things you can do to minimize this impact. One of the first things is to use UTM parameters on your links, so they can be tracked on a more specific level. You will be able to see details about individual user behavior from Facebook that you wouldn’t otherwise be able to see.
A second thing to do is make sure Google Analytics fires asynchronously. If it’s at the top of your page by default it’s going to slow down loading, since other things need to wait for it to load first. Users can get fed up and leave in that time.
As mentioned above, you can change your reporting to more accurately reflect the actual metrics in place. This is important for getting you accurate numbers between both sites.
If your Google Analytics data is showing absolutely nothing, you may have a bigger problem, such as your tracking code not actually being placed on the landing page, or being broken. Make sure that the code was copied and pasted accurately and that it’s not broken. On the flip side, if the data is skewed in the other direction, you might have pasted in the code in two different places. If one of them loads dynamically you might not notice it, but if Google is triggering twice, it can cause data errors.
Once you have verified that your data tracking is accurate and you have set up customized reports on Google Analytics, you can be more assured of having the correct data. It will still be a little different, simply because of how Google works, but that’s fine. Methodology can vary, so long as the data is within a margin of error. It’s simply something we have to accept when dealing with statistics.