It’s Time We Rethink Bounce Rate and Session Duration

Your out-of-the-box Google Analytics setup isn’t getting the job done. Here’s how to fix it.


Your bounce rate is at 95 percent and your average time on site is 10 seconds. Your content must be terrible, right? Not so fast. Many misunderstand how these metrics are measured — and few know how to fix them. Learn how this information is gathered, and how you can get more accurate data.

How Bounce Rate and Session Duration Are Measured

These two metrics can be misleading, especially session duration. You’d be inclined to think that session duration is the duration of a session, right? Surprisingly, no.

These metrics are measured using engagement hits sent from your site to Google Analytics. Analytics takes the time stamp of when the user arrives on your site and the time stamp of the last engagement hit and finds the difference between the two. This is your session duration.

The first timestamp is always when the first page loads. The second timestamp is usually when a user arrives at a second page. Google Analytics takes the time stamp from when the user arrived on the first page and subtracts it from the time stamp when the user arrived at the second page. The resulting value is the time the user spent on that first page. This continues throughout the length of the session.

However, there’s a problem with this approach. What if the user never goes to a second page? Let’s say they arrive on an article and read for a few minutes before leaving your site. The time-on-page and session duration will be zero. There was never a second hit sent to Google Analytics, so there’s no value from which to subtract the initial time stamp.

Likewise, if a reader arrives on a page, reads for a minute and 45 seconds, clicks to a different article and then leaves your site, the time-on-page and session duration will be a minute and 45 seconds — even if they spent two extra minutes on the second page.

Typically, the last page doesn’t have any time attributed to it. This clearly skews your data.

Most site managers have important documents they want readers to download, articles they want them to read and videos they want them to watch. All these actions indicate engagement. For this reason, it’s important to set these actions up as events and specify them as interaction hits. This is an option that can be selected by setting “Non-Interaction Hit” to false (as shown below). This will gather additional time stamps that Google Analytics can use to calculate bounce rate, time on page and session duration.

Accurately Measuring Bounce Rate and Session Duration

Knowing that bounce rate and session duration are measured by engagement hits, then the obvious solution is to add these using Google Tag Manager. We’ve briefly talked about doing this for important goals (e.g., form submits, video views, etc.), but we still need to add time-based goals. The easiest way to do this is to build timer events. Here’s how it’s done:

Step 1: Determine Time-Based Goals

First, determine the time interval that you want to measure. Do you think a user staying on your site longer than 30 seconds is engaged? Then measure that.

At C/A, we like to measure a few intervals to get multiple data points. Typically, these are intervals of 30 seconds, one minute and a minute and a half. Ultimately, it’s up to you and what you think fits your site and content best.

Step 2: Set Up a Tag in Google Tag Manager

When you build these time-based tags, they should look like this.

This is a simple setup that will pass this category, action and label information back to Google Analytics as an event. You’ll use this information to trigger a goal in analytics.

Step 3: Add a Trigger for the Event

This event needs to be triggered by a timer, which should look like this:

It’s important to note that the interval is in milliseconds and the Page URL should match all pages. You’ll also want to set the limit to one. Otherwise, a 30-second timer would continue to fire every 30 seconds.

Using this setup for several timers ensures more accurate data for session duration and prevents bounces for sessions that exceed your shortest timer’s value. These timers also reset for each page in a session. So, if a user goes to more than one page, the last page will still have timers running and collecting data — even if they fired on earlier pages.

Step 4: Set the Events as Goals in Google Analytics

Once these events are built, you can set them up as goals in Analytics. This will allow you to see how many users reach each of these intervals and identify the articles where this is achieved most often.

With these goals and events built, you’ll have more accurate data. You can then use this data to identify effective, engaging content. Need help gathering more accurate information about your site? Reach out — we’re always happy to assist.

Additional Resources

If you want to gather the exact time value for exit pages and bounced sessions, you can use this step-by-step guide.

If you want to get even more specific, you can use this technique to gather time only when someone has your screen in view.


Casual Astronaut helps brands develop deeper and more meaningful relationships with their customers.