Skip To Main ContentClarity Global

Measuring Content Engagement in Google Analytics - Part 1: Article Completion Rate

Article Completion Rate

Difficulty: 4/5

Average time on page data

It’s time to ditch bounce rates and average time on page in place of meaningful and measurable insights. Enhance how you measure content engagement with these advanced tracking methods to gain real insights into your content and its value against your business objectives. Often content effectiveness is measured using built-in metrics within Google Analytics. Here are some common metrics used for measuring page engagement and quality.

  • Pageviews - Okay
  • Unique Pageviews - Okay
  • Bounce Rate %- Bad
  • Entrances - Okay
  • Exits - Okay
  • Exit Rate % - Okay
  • Time on Page - Bad
  • Avg. Time on Page - Bad

While these do offer some indication of content effectiveness, they can also be hugely misleading. One of the most misunderstood metrics available in Google Analytics is Bounce Rate. Bounce Rate is the percentage of Users who enter on a particular page and then leave the site without interacting with the page in any way. This is a bounce. As a calculation, the bounce rate is the percentage of single-page sessions which begin and end on the same page. You can read more on this troublesome metric here.

I always try to measure the effectiveness of content in ways which relate to how users behave on a webpage. There are micro-interactions which Google Analytics does not see which indicate how well the page content is performing. Some of the most common interactions an out-of-the-box Google Analytics setup misses:

  • Mouse movements
  • Scrolling
  • Clicks (highlighting text and copying the content within a paragraph is a common one here)
  • Keyboard usage (space moves you down the page, so do arrow keys)
  • Reaching the end of the content section
  • Playing a video / podcast
  • Sharing the post to social media

To clarify, out of the box, Google Analytics never sees these highly positive interactions. So if you’re content doesn’t necessarily trigger the user to continue on into the website via call to actions just via general interest, according to the Bounce Rate, it’s garbage. Let’s change how we measure content effectiveness to suit its purpose. If you’re looking to measure the effectiveness of your blog posts, I suggest at a very basic level that you implement the following measurement methods:

1. Better Content Engagement Tracking

Difficulty: 4/5

Requirements: Google Analytics, Google Tag Manager

Content engagement data

Simo Ahava has written a top guide for tracking micro-interactions to calculate an accurate Time on Page measurement. I highly recommend you go and check it out. As an example, the graph above shows how inaccurate Google Analytics' Avg. Time on Page metric is vs. a custom implementation. Once implemented, this tracker will send “pulses” to GA in the form of Events to tell GA that the user is interacting with the page in one or many of the following ways, thus mitigating a Bounce from occurring even if they leave without navigating to another page. At the same time it also provides an accurate Time on Page custom metric.

  • Clicks
  • Mouse Movements
  • Keyboard Presses
  • Scrolls

Track Content Engagement Via GTM
https://www.simoahava.com/analytics/track-content-engagement-via-gtm/

Note: I recommend locking this tracking down to a specific area of your site like /blog/ if you receive a lot of hit volume and don’t want to further increase it.

2. Article Completion Tracking

Difficulty: 4/5

Requirements: Google Analytics, Google Tag Manager

This one requires some experience with configuring GTM element visibility triggers but can really help you understand how many people are reaching the end of your articles regardless of device and screen height. The premise behind this is to send an Event to Google Analytics when a user has reached the end of the content - simple!

We will achieve this by looking out for the nearest comment site element below your content. In a lot of cases, this is the footer but it could be something else which is more distinct like an “About the author” section which is always present beneath the content piece.

Our blog has a mini author section after any blog post so for this example, I will show you how this is configured for us. The first step is to find out what to rely on for building our Element Visibility Trigger.

Article completion tracker

In our case, our Author section has a class called byline author vcard . This means I can take the class name .author  and use it as our identifier within the Element Visibility Trigger.

Element Visibility Trigger

A pretty simple visibility trigger. I also only want this to work on blog posts so I am going to add a condition to this trigger so it only fires if the Page URL contains /knowledge/

Element Visibility Trigger Settings

Save this trigger and name is something sensible. I use an Object-Action framework for naming so for this trigger I would go with ELV - Article Completed

Next up, we need to add a new tag to send Events to GA to record the article completions:

Sending events to Google Analytics

The event details are fairly basic and I threw in a   variable to fill the Label field. You could add the Blog Post title instead if you’d prefer something that’s human-friendly since Page is available as a hit-level dimension.

You may also notice that I have added a custom metric value. This is because I want to send each individual completion as a number to Google Analytics as a Custom Metric. By doing this, I can then do some magical things with Calculated Fields!

To know which Index number to use, you’ll need to jump into Google Analytics and head over to the Admin panel, locate the property you’re working on and then add a new Custom Metric. This can be found under Custom Definitions:

Adding a custom metric

Name your custom metric Article Completions  or something similar depending on your preference. The scope should be Hit  and Formatting Type should be Integer . Save this and then revisit the Custom Metric list to find out the Index Number of your new Metric.

Custom metric list

In my case, it’s 2. Use this index number as I have in my Tag’s settings. Set the Metric Value to 1.

Index number in tag settings

Once the Event is ready to fire, jump into GTM Preview Mode and test that the visibility trigger is working as expected. I use Adswerve's dataLayer Inspector for Chrome to test GA Events but you could also use the Realtime > Events report in GA provided you’re using a View which doesn’t filter your traffic from the website.

Real-time Event Report:

Events report

Analytics Pros Debugger:

analytics pros debugger

Next, we need to build ourselves a Calculated Metric at View Level within GA:

Calculated metric at view level
  1. Name: Article Completion Rate
  2. Formatting Type: Percent
  3. Formula: Article Completions / Unique Pageviews
Edit calculated metric

With the Event firing as intended, we can now look to pull this new data into a custom report within Google Analytics:

Custom GA report

I’ve opted for a flat table here just to keep things simple but you could add drilldowns for other custom dimensions if you have things like “Author” or “Category”. Also note that I have filtered this report to only look at our Knowledge section as page engagement won’t be firing anywhere else.

Knowledge section

The other option is to pull the data into Google Data Studio like so:

Google Data Studio

In the above table, I’ve also included Simo’s engagement functionality to give me accurate engagement totals and avg. engagement times per page. Article completion rates are low for now since I only just implemented this a few days prior to writing this article, but when Article Completions and Unique Pageviews are put side-by-side, engagement becomes a lot easier to understand. This data could be split in other ways, especially if you’re recording custom dimensions like Author, Category, Target Audience etc.

Note: Can’t see the new Custom Metrics? Refresh your data source!

Bonus level: Tighten the accuracy of this system by utilising the Micro Engagements timer AND Article Completions so that you only fire a completion event if a user has been on the page and active for more than 30 seconds. You can use Trigger Groups for this.

Boss level: Use JS to count the number of words within your articles, calculate the average read time for an adult of the content piece and then work out if its possible a user has read your content before you allow the Article Completion event to fire.

This post was created in 2019 and some of the content may no longer be relevant.

f you’re interested in learning more about digital marketing, analytics and data, take a look at our Analytics services.

Stay up to date

Receive all the latest news, events, and insights on B2B tech, marketing, and communications with Clarity’s free monthly newsletter.

Loading...

MORE
INSIGHT

Fearless tactics to achieve your strategic success

As a consultancy, our full-funnel marketing and communications solutions are designed to fearlessly deliver business results across multiple industries and service areas.

GET
CLARITY

Looking for a partner to help you reach your goals? We’d love to hear from you.

As a global full service agency, our services reach far and wide. Wondering what type of projects we take on, alongside budgets and timelines? Find more information on our Service and Sector pages.

Loading...