Data Driven: Your Bounce Rate and Time On Site are wrong
It’s hard not to look at your bounce rate and wonder why so many people hate your product isn’t it? This article explains how Google Analytics might be screwing you on your bounce rate and some methods you can use today to measure it more accurately. In doing so, you’ll also be improving the accuracy of your visitor’s Time On Site.
So what is bounce rate?
‘Bouncing’ is generally used to describe when a visitor comes to your website, doesn’t interact and leaves, similar to when you’re searching for something and land on a page that blatantly doesn’t have what you need. That’s a bounce.
How does Google measure bounce rate?
Google indeed measures a bounce as zero interaction. However, Google doesn’t measure interaction as clicks or scrolls as default, Google measures by pageviews, so:
If a user leaves your site after loading the first page, regardless of any interaction, this is considered a bounce.
Here’s a few product scenarios where this logic fails:
- You have all the information required on one page (a blog post, a landing page, a very long informed single page website) and your users spend minutes enthralled on this page before leaving totally satisfied.
- Your site deliberately suggests external sources to your users. Your users love you because you help them find other stuff online, and the first link they click is to an external website.
- Your users sign in with Facebook, Twitter etc and the next page you load is on facebook.com or twitter.com (for their sign in page).
- Your product has a landing page capturing interest using a form which is powered by another service like Mailchimp, Wufoo and users are directed to their site after successfully completing your objective.
I’m not saying Google’s methodology is useless, in fact, it’s pretty smart for most cases. But it can’t work perfectly everywhere and understanding how it works will help you understand if you’re really picking up the right data.
How does Google measure Time on Site?
Ever shocked at how that’s a little low? This is somewhat related to the shortcomings in Google’s bounce rate: by default, Google measures the time on site as the time between the first page loaded and the last page loaded. If your users flick through tens of your pages, then this won’t be much of an issue. However, if you’re a victim of the bounce rate issue above, you’re probably a victim here too:
If users are only loading one page on your site, irrespective of how much they interact with that page, their time on site is 0:00 to Google Analytics.
There’s no second page to close the loop. In any case, the last page your users visit on your website, no matter how much time they spend on it, will not be included as part of their time on site.
With me so far? OK let’s look at some solutions 🙂
Now that you understand how Google’s off-the-shelf metrics work, it’s possible to alter them to suit your product.
We’re going to dabble in some event-tracking. If you haven’t done this before, don’t worry. Just start, and you’ll figure it out quickly after you get into it.
Solution 1. Measure Time on Site
Brian Cray has written an excellent blog post discussing much of what I talk about here and he provides a very concise solution: instead of letting the a page view measure the time on site, let’s just ask every 10 seconds if the user is still there and measure it ourselves. (Edit: Thanks Nick for pointing out Google Analytics’s limit of 500 data points per user session. If running this code, I’d recommend reducing to every 60 seconds to avoid hitting this limit.) This does not require jQuery, works with old (sync) or new (async) Google Analytics, and you can just stick this code at the bottom of your page before the closing </body> tag:
This data will appear in your Analytics Dashboard under Content > Events with the Category ‘Time’, the Action ‘log’, and the Value will be the time on site. This is an easy way to start but I do have some issues with Brian’s method. It’s more likely to err on the vanity side, that is, if your users open your page in a background tab and doesn’t view the page for a few minutes — this is all counted as time on site. It’s a good starter to give you a different time on site metric and there’s room to refine it a little more later.
Solution 2. Close the loop by Tracking Outbound Links.
I prefer this method to measuring time on site, but you also need a little more know-how. It has the added advantage of tracking which outbound links your users are clicking on and where they’re going. This does require jQuery and also works with old or new Google Analytics.
The principle here is that if users are clicking external links to leave your site, then let’s track those to better calculate the time on site. You’re still losing people who close the window and I’ll deal with that another time, but you are now accurately measuring another segment otherwise ignored.
The following code tracks clicks on <a> tags linking to an external site. If an external link is not set to open in a new window, it adds a 300millisecond delay before loading the new URL to allow the tracking to register with Google Analytics. In your Google Analytics dashboard, under Events, you will now see a category called ‘Outbound’, with Actions showing the URLs your exiting visitors are disappearing to and the Value showing the ID of the element they clicked. Nice.
So how does this fix my bounce rate?
Well, I mentioned earlier that Google measures bounces and times based on pageviews by default. Google also treats tracked events like a pageview (at least for the sake of calculating bounce rate and time on site). So now, after you track an event on your single page website, the user can exit and this will no longer be considered a bounce. Additionally, because of this reason, your time on site will also be considered as the time between first page load and the time of the last tracked event.
I think this is accounting for more real interaction and a slightly more accurate view of your users than what Google Analytics does by default. More can be done of course, and I’ll go there in another blog post. Time for some coffee.