Organic search is still one of the best ways to drive traffic to your website. Having your site positioned in front of users at the very moment they search is hugely powerful. From helping drive brand awareness to building engagement and driving conversions — there is nothing as satisfying as ranking your content in organic search.
And best of all, organic search results come without a cost per click!
Having relevant answers found in organic results is a powerful way to feed the top of your marketing funnel. And while we can advertise with social and native platforms, nothing quite has the “in that moment” relevance of strong organic search results.
This is why it’s important to understand how users engage with our content. But that understanding is made difficult given how Google Analytics reports on typical engagement metrics, particularly in relation to bounce rate and time on page.
In this article, I take a look at how engagement metrics in Google Analytics are flawed and outline what you can do to get better data. Ultimately, as modern data-driven marketers, we need good data to make smart decisions.
Smart decisions need smart data
The examples below relate to a single-page visit to a piece of content on your site. I am primarily concerned with organic search, but the approach outlined here works just as well with social or native traffic referrals. Here is what generally happens:
- A user searches for a topic.
- The user clicks on an article on your site.
- The user spends a couple of minutes on your site and reads the whole article.
The problem here is how Google would report that visit. It would be shown as a bounce with a zero-second time on page. This engaged user who read your entire article and then left the site is reported as someone who arrived and left in a heartbeat. Not good!
So why does Google Analytics report a visit as a bounce?
Understanding bounce rate
Here is Google’s definition of bounce rate:
A bounce is a single-page session on your site. In Analytics, a bounce is calculated specifically as a session that triggers only a single request to the Analytics server, such as when a user opens a single page on your site and then exits without triggering any other requests to the Analytics server during that session.
Bounce rate is single-page sessions divided by all sessions, or the percentage of all sessions on your site in which users viewed only a single page and triggered only a single request to the Analytics server.
These single-page sessions have a session duration of zero seconds since there are no subsequent hits after the first one that would let Analytics calculate the length of the session. Learn more about how session duration is calculated here.
This means all of the following situations will be classified as a bounced visit:
- When a user clicks the back button.
- When a user closes the browser window or tab.
- When a user manually types a URL or search query into the browser bar.
- When a user clicks on an external link.
- Or when the session times out after 30 minutes.
Ultimately, with a standard Google Analytics set up, this means every single type of visit is a bounce if the user does not move on to a second page.
Understanding time on page
The problem with time on page is that it does not apply to an exit page. So, where we have a single page visit which is common in content marketing, we have a single entrance and exit page.
Google defines “Time on Page” as follows:
Time (in seconds) users spent on a particular page, calculated by subtracting the initial view time for a particular page from the initial view time for a subsequent page. This metric does not apply to exit pages of the property. Time on page is calculated as the difference between the initiation of successive pageviews: pageview 3 – pageview 2 (14:31 – 14:02 = 00:29).
What this is saying is that Google logs an initial view time for each page visited. Then, the time spent on page is calculated as the gap between the first-page view and the new page view. This approach does not apply to exit pages on your site.
The content analytics conundrum
When a user finds your content from a search query, reads every word in a five-minute session and then leaves, this is counted as a bounced visit with a zero-second duration. If you are trying to understand what content is engaging your readers, this is a big problem. Big.
Conversions are generally what we all want here, but conversions follow engagement, which follows awareness. Without having good engagement metrics, we can make poor decisions. Without understanding the limitations of standard Google Analytic reporting for single visit sessions, we could make some terrible decisions.
Fortunately, all is not lost. And, knowing that we have a problem we can look at ways to improve our reporting to better understand how our users engage with our content marketing efforts.
Improving bounce rate reporting
There are a few solutions to improve your bounce rate reporting. If you are using the standard Universal Google Analytics code, you can add the following line to your tracking code:
setTimeout(“ga(‘send’, ‘event’, ‘nobounce’, ’30_sec’)”, 30000);
This will create an event after 30 seconds that will set this as a non-bounced visit.
The exact time you use here will depend on what you want to classify as a bounce for your content. I tend to like the loose categorization of:
- Bounce — Less than 15 seconds.
- Curious — 15 to 30 seconds.
- Browser — 30 to 60 seconds.
- Engaged — Over 60 seconds.
For our own reporting, we classify anything over a minute as not being a bounce. You will need to adjust this to suit your own content and simply change the ‘30_sec’ and ‘30000’ values in the example above to suit your own definition of an engaged user. Let’s say you feel 60 seconds and 40000 are better metrics for you; the code would look like this:
setTimeout(“ga(‘send’, ‘event’, ‘nobounce’, ’60_sec’)”,40000);
If you use Google Tag Manager (and you should), you will want to add your Analytics using a Custom HTML Tag rather than the standard Analytics Tag, so you edit the code as detailed above.
Improving time-on-page reporting
We can improve time on page reporting with a relatively simple trigger set up in Google Tag Manager. I am going to assume you have Google Analytics and Tag Manager installed. If not, you should, and you can find details on the Google Support site.
1. Create a trigger
The first step is to create a trigger. This will be used to send the event at your preferred time interval.
- Add Trigger. Set your trigger as the timer type (at the bottom of the list Other > Timer).
- Configure Trigger
We now have to set the parameters for our trigger as follows:
The details for each field are as follows:
- Event Name: You can leave this as default.
- Interval: This is the interval value in milliseconds. I tend to go with either 15000 or 30000 for 15 or 30 seconds respectively, but fine-tune to your needs.
- Limit: It is sensible to add a limit, or we can see artificially inflated values. I tend to cap this at around five minutes, so for the image example above, we have 20 instances of a 15-second timer.
The final option determines when this trigger fires. You can be smart here and use different triggers for different page types. However, to get this working across all pages, simply enter:
This uses the regular expression of .* to match all page URLs and ensures our trigger fires on every page.
When you are all done, hit the save button.
2. Create a timing event tag
The next step is to create a custom event to illustrate that the user is still on the page. We need to correctly label this event so we can identify this within our analytics reports. This will be fired by our custom trigger.
- Create a Tag.
- Set the Tag type to Universal Analytics (assuming you are using UA).
- Fill out the Tag as follows:
There are a few fields here that you need to configure. The specifics here relate to your own tracking model, but if this is your first run-in with these values, then the following will help you decide what to enter.
The values to look at are:
Label (optional, recommended).
In the example above, we may use the following values:
Action: “Time on page.”
Label: “x Seconds.”
The specific values are your call, but the idea here is to add value to your reports, so experiment and adjust as you go.
3. Select a trigger
Here you need to select the trigger you created earlier.
4. Non-interaction hit
This setting lets you determine whether the event affects bounce rate. If you set the value to “False” (the default), then this classes as a non-bounce visit. (If you use this setup, you can ignore the instructions above for bounce rate.)
Now remember to publish the changes, and you are well on your way to improved analytics for your organic content marketing efforts.
There are a couple of things to remember here:
- Standard bounce rate is not a good key performance indicator for content marketing.
- Time on site can’t be trusted for single-page or exit page visits.
If you implement these tweaks, you will have a better picture of how single-page visits from organic search (or other marketing channels) are interacting with your content.
Opinions expressed in this article are those of the guest author and not necessarily Search Engine Land. Staff authors are listed here.