How To Track Content Engagement with Google Analytics

Published May 29, 2014
Measuring visitor engagement with website content is an important part of successful content marketing. Unfortunately, traditional metrics like Bounce Rate don't provide enough insight. In this blog post, we describe three better metrics for content engagement. Learn how to track them with Google Analytics.

Measure Content Engagement

Are Visitors Engaging with Your Content?

You may be getting lots of traffic from paid, referral, social media and organic search, but how can you tell if that traffic is engaging with your content?

The usual page engagement metrics, Bounce Rate and Avg. Time on Page, can lead you astray. Often, these metrics do not accurately report how much time visitors actually spend reading your content. Their shortcomings are described in Footnote 1 – Limitations of Typical Page Engagement Metrics.

Better Metrics for Content Engagement

Rather than looking at Bounce Rate and Avg. Time on Page, wouldn’t it be better to know how many visitors actually begin reading your content? Or how many finish reading it before leaving the page? Wouldn’t you like to know how much time visitors spend on your content, even if they bounce? This would enable much deeper insights.

Three better metrics, and how to track them in Google Analytics, are described below. These metrics are:

  1. Percentage of Visitors who are Readers
  2. Percentage of Visitors who are Finishers
  3. Average Time to Finish Reading

The tracking for these metrics is based on user interaction with with the content, as measured by scrolling.

Background - Where do these Metrics Come From?

A couple weeks ago, a client and I were discussing how to better measure content engagement with Google Analytics. This client's website received a lot of one-page visits and Google Analytics could not provide out-of-the-box insight regarding how engaged this traffic was.

The fact that it was bounce traffic didn't mean that the visitors were not engaged, because many were coming via links from social sites, reading an article and then going back to social media.

I did some research on how to set up custom tracking in Google Analytics for measuring content engagement. While researching this, I found an approach described by Justin Cutroni, that seemed perfect for this client. Actually, the approach seemed like a great fit for many of my clients. To make it easy for them to implement, I created a free WordPress plugin based on Justin's blog post. It’s a free plugin, with basic instructions for installation and usage.

Before we jump into using the plugin, lets talk a little about Justin's approach for measuring content engagement.

Justin Cutroni’s Advanced Content Tracking with Google Analytics

Justin Cutroni is a highly regarded Google Analytics blogger who works for Google. A couple years ago, he published two blog posts describing how he added Google Analytics tracking code to his blog to measure reader engagement. Part 1 explains the JavaScript tracking code and Part 2 shows how to create Google Analytics reports that access the tracking data.

Justin’s approach involves tracking user scrolling and aims to measure three aspects of engagement:

  1. Do visitors start reading?
  2. Do visitors read all the way to the end?
  3. How long do visitors take to reach the end of your content?

1. Do Visitors Start Reading?

Among the visitors to your page, some (hopefully most!) start reading. These are classified as Readers. Others arrive on your page, take a quick look and then leave. One of the metrics that Justin's approach produces is the Percentage of Visitors who are Readers. You can think of these visitors as being partially engaged.

In Justin's sample code (and our plugin), Readers are tracked as visitors who scroll a certain amount into your page. By default, the plugin classifies a visitor that scrolls at least 150 pixels down as a Reader. You can adjust that threshold in the plugin settings or by tweaking Justin's JavaScript.

Obviously, this is not a perfect method for classifying a Reader. A visitor could accidentally bang into the mouse and cause a scroll-down. On the other hand, it is not a bad approximation. If the visitor started scrolling, something probably caught their eye and they began reading.

2. Do Visitors Read All the Way to the End?

Some of your Readers will finish reading the content and others will leave partway through. Those who read all the content are classified as Finishers. Another metric that Justin looks at is the Percentage of Visitors who are Finishers. You can think of these visitors as fully engaged.

Finishers are tracked as visitors who scroll all the way to the bottom of your content. Again, this is not a perfect measurement, because some people may just scroll past everything to find out what’s at the bottom of the page. However, it is a decent approximation and Justin makes it more useful by incorporating a third metric – Average Time to Finish Reading.

3. How Long do Visitors take to Reach the End of Your Content?

Some of your Finishers will simply scroll through all the content and not read it. Others will read it carefully and thoughtfully.

Justin's code (and our plugin) tracks the amount of time it takes for a Finisher to scroll to the bottom. In Google Analytics, you can then see the Average Time to Finish Reading.

The Finishers who skim through quickly and are not really engaged bring down this average. The Finishers who read carefully take much longer and bring up the average. So, you can use the Average Time to Finish Reading as an overall measure of engagement for a page of content. Since different types of content take different amounts of time to read, this isn't a good measure for comparing across pages. However, it is a good metric to segment across traffic sources to get an idea of where the most engaged traffic is coming from.

Installing and Using the Tracking Code

The remainder of this post describes how to use Google Analytics to report the three engagement metrics described above. If you want to set up the tracking on your own site, you can install the plugin or copy Justin's JavaScript code into your site. Then you can generate the reports described below from your own Google Analytics account.

Metric 1: Percentage of Visitors who are Readers

Once you have the tracking code installed, wait a few hours (sometimes as many as 24) and you should start seeing the engagement tracking events showing up in your Google Analytics account. In Google Analytics, open Behavior >> Events >> Top Events. Examine the table in the bottom half of the report and you should see an Event Category named "Reading". That is the category that all these events are classified under.


Now, click on "Reading" to drill down to see the Event Actions. You should see the 4 types of Event Actions representing different types of engagement.


  • ArticleLoaded - these are the events indicating that a page was viewed.
  • StartReading - these are the events indicating that a visitor started reading.
  • ContentBottom - these are the events indicating that a visitor finished reading.
  • PageBottom - these are the events indicating that the visitor scrolled all the way to the bottom of the page.

The Percentage of Visitors who are Readers metric is the ratio of the StartedReading events to the ArticleLoaded events:

Percentage of Visitors who are Readers = StartedReading / ArticleLoaded

From the data show above, the value that I am currently getting on this blog (after 12 hours) is 21/26 = 80.8%

Metric 2: Percentage of Visitors who are Finishers

You can use the data in the same table shown above to calculate the Percentage of Visitors who are Finishers. That is the ratio of ContentBottom events to the ArticleLoaded events:

Percentage of Visitors who are Finishers = ContentBottom / ArticleLoaded

Looks like for the last 12 hours on my blog, the metric is 15/26 = 57.7%

Metric 3: Average Time to Finish Reading

Lastly, the Average Time to Finish Reading is calculated by Google Analytics as the Average Event Value for the ContentBottom action. The Average Event Value is the last column in the table above, expressed in seconds.

Looks like my value is 281.07 seconds = 4 minutes 41 seconds.

In Part 2 of Justin's blog post, he provides this table to explain what the timings data stored in the event values means:


Get More Details from Justin

Justin Cutroni goes into more depth about how the tracking code works and the types of analysis that you can do with the data. He gets into detail about how you can use the data with Google Analytics Segments to gain insight into which traffic sources are engaged by which content. He also shows how to use it to compare engagement across content categories, authors and publication dates. I encourage you to read his post.

Feedback Please

If you try out this plugin, let us know what your experience was like. Please give us feedback in the comments section below.

Footnote 1 – Limitations of the Usual Page Engagement Metrics
Bounce Rate (Exit Rate)

Visitors may come to your content via a link or social media, read on page and leave. Google Analytics counts that as a bounce. But, a bounce does not necessarily mean that the visitor was not engaged. They might have read that one page thoroughly – but instead of visiting any other pages on your site, they want back where they came from. This is very common behavior for traffic coming from social media and certain aggregator sites like A high bounce rate on a page with lots of referral traffic does not necessarily indicate a lack of engagement.

Avg. Time on Page

Bounces and exits do not figure in to Google Analytics’ Time on Page calculation. If your content page has a high Bounce Rate or Exit Rate, then the Avg. Time on Page calculation is going to be based on a small sample of Pageviews. It would be much more accurate to have a timing metric calculated from all the Pageviews. For that, we need to know how much time is spent on a page that the visitor exits from. Since Google Analytics has no way, out of the box, of knowing how much time is spent on an exit page [reference], it excludes those Pageviews from the calculation.


As a digital marketer, juggling a variety of advertising platforms is just a part of everyday life. From Google Ads and Facebook to Twitter, LinkedIn, AdRoll, and more, you’re used to having a lot on your plate.
But when you have to worry about installing performance-tracking tags and pixels on your website so you can optimize for each platform, things can get overwhelming. Not only do you have to add this time-consuming task to your IT team’s already long to-do list, but it creates a lot of additional code to manage, maintain, and update.
There are lots of ways to drive traffic to a website these days – social media, pay-per-click ads, display ads, email marketing, etc. But, for many websites, organic search remains the largest source of traffic.
As an agency, you need to help your clients understand what’s driving organic search traffic to their websites and how they can grow that traffic. This means you need a source of data that measures organic search traffic. For traffic from Google Search, there is an excellent free tool from Google providing that data: Google Search Console (GSC). While other tools "scrape" data from the Google search engine result pages (SERPs), GSC provides the official data from Google.
In this blog post, we’ll look at what kind of data you can pull from Google Search Console, how to use it for SEO, and how to best share it with your clients.
Facebook lead ads are incredibly useful when you want to create a connection with potential prospects. You can use lead ads to gather emails and other contact information, provide quotes and estimates, get people to sign up for your newsletter, and just about anything else you can think of. The benefit of lead ads is that they help you engage with your audience on a deeper level by collecting contact information.
But how can you create lead ads that are more likely to convert? Luckily, there is a lot you can do to optimize your lead ads. Whether you’re new to Facebook lead ads or simply want your current ads to perform better, this post will help you improve your conversion rates.