Making Site Interactions Count: Advanced Web Analytics

a consumer browsing a website on their laptop
By Pace Editor |

Two of the most important web analytics KPIs are average time on page and bounce rate. They are pivotal in understanding how visitors use a website and whether they value what they find on those pages. Google Analytics (GA), as the world’s most widely used web analytics platform, presents a very easy implementation that helps you quickly set up tracking and collect data. Its default implementation runs on a simple understanding of time and bounce that works fine for simple websites. However, for anything more sophisticated, we at Pace advise a more evolved approach.

In the past, we have discussed how the default time measurement of GA provides limited (and in some cases, misleading) information about time spent by visitors on a page (A New Approach to the Average Time on Page in Google Analytics). We have also touched upon how custom tracking events influence time measurement. In this post, we will go over these custom tracking events in more detail and explain their impact on bounce rates.

Default Definition of Bounce

Typically, a bounce is defined as a single page visit in which a visitor lands on a page, does not interact with anything there and leaves. That may work for some scenarios, but mostly one would want to extract more from a visitor’s journey. For example, a visitor lands on an article, scrolls up and down multiple times and spends a long time reading it. That level of interest in the article will be captured in default GA only if the visitor navigates to another page on the site. Otherwise, if the visitor closes the browser tab after all that activity, default GA would count that visit as a bounce and record zero seconds as time spent on the page.

Using Interaction Events to Record Activity in More Details from Each Visit

Advanced event tracking allows you to capture this user interaction with the page. It lets you track those interactions (reading time and scroll) through Google Tag Manager (GTM).

Once a visitor lands on the site, we track their time spent on the page using a timer that fires an event every 15 seconds. This obviates the need for a visit to the next page to record any time on the first page.

And using the scroll depth trigger, we send an event to GA every time a visitor scrolls another quarter of the page length.

Details of these implementations can be found here and here on Simo Ahava’s blog.

Once implemented, there are just a few more steps left. Depending on the site’s goals, we need to come up with thresholds that will mark a visit as “nonbounce.” These thresholds will define activity levels that will separate a bounced visit from others. For some of the sites, we have opted for 25% scroll and 15 seconds time on page as markers of a nonaccidental visit. A visit with that level of interaction with the page will be marked as a nonbounce visit. This is done using the confusingly named “Non-Interaction Hit” field in GTM. Once again, here’s Simo with the best possible explanation of this implementation.

In our implementation, we create two triggers. One is a timer that fires when a visitor spends 15 seconds on the page. Another is a scroll action that marks 25% scroll vertically. Then, using some JavaScript conditions, we configure the triggers such that when a visitor takes both of these actions, a nonbounce event gets fired with the value Non-Interaction Hit as False; i.e., it tells GA that this visitor has performed an action that qualifies their visit as interactive. An interactive hit also ensures GA is using it as a measurement for time. If the visitor closes the browser now without any interaction, GA will register 15 seconds as time spent on this page for this visit. Using some more JavaScript variables, we ensure that any subsequent events stay consistent in sending the right value for Non-Interaction Hit field.

Results of Advanced Web Analytics Implementation

Once it is all implemented, we have a lot more detail from our site’s data. Instead of simply dividing all site visits into bounced and nonbounced, there is now a level of granularity. There will always be visits that do not cross both the interaction markers (such as 15 seconds on the page and 25% scroll). These will be marked as bounced visits. For everyone else, we will now have details of all scroll levels and more precise values for time spent on the page. If a user ends her journey on the website by closing that browser tab, even that last page of her journey will capture details like time and scroll that would not have been available otherwise. Overall, this improves the accuracy of Session Duration as well.


Sign up for our monthly newsletter to get more content like this.