How To Track Content Engagement with Google Analytics

Twitter Facebook Linkedin Email
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.

reading-events-are-showing-up

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.

drill-down-to-actions

  • 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:

cutroni-TimeMeasurements

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 drudgereport.com. 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.

Subscribe to us

12 Comments on “How To Track Content Engagement with Google Analytics

  1. njasuja

    If you trigger these events on the page based on user actions (started reading, finished reading etc), then GA should be able to use all these visits in its calculation of Avg. Visit Duration. Even if these are non-interaction events, they will fire a request for utm.gif to Google’s servers. This ping conveys to GA that the visitor is still on the page. So I think a side benefit to Justin’s recommendation — and your plugin — is that your Avg. Visit Duration metric will get more accurate.

  2. Alex de Borba

    I induce a query regarding the script, which I added to http://www.atmostfear-entertainment.com/ and since the website runs Joomla and not WordPress, I implemented the core script, however, my concern is that recently I bumped off the GA script and replaced it with the Tag Manager by adding GA:

    Tag Name Universal Analytics
    Tag Type Universal Analytics

    Since this is a script that calls _ga, will it somehow be a trouble or should work normally event thus, GA call script from Analytics is now dropping in my code?

    Thanks in advance for your cooperation.

    1. megalytic

      The script should work fine alongside Tag Manager as long as the ga.js script is getting loaded. Alternatively, you could wrap the script in a Custom HTML Tag.

    1. markdhansen

      That depends on the content and how long it is. For a typical blog where the articles average 1200 words, you would hope for > 25%. I.e., more than a quarter of people who start reading finish the articles.

  3. aferrari

    Hi, Mark! This is really nice. But, who use the Google Universal Analytics will need to update the to “ga (‘send’,’event’…” format. 🙂 Maybe you can update the plugin with some solution to that. Maybe that allow a automate change in the JS based on the analytics type on site. Bytheway, thank you so much! =D

    1. markdhansen

      Ah – If I have time, I will – its a good point. But, maybe you can do it and post a link for the group here? You can freely use the code in that plugin. I don’t know when I will have time to get to it …

Leave a Reply