Adding Google Analytics Content Group Tracking to a WordPress Theme using Google Tag Manager

Published June 11, 2015
The marketing team just told you they need Google Analytics configured to track statistics based on the type of content users are consuming. Specifically, they want to know if visitors are watching videos or if they’re reading blog articles. Your answer will help inform content marketing efforts companywide—either bumping up the video investment or dedicating more time toward writing and researching authoritative articles.
You are the go-to person for setting up Google Analytics tracking, so you know the right way to do this, and the best way to get the marketing team their answer, is by using Content Grouping. You do have some concerns, though. The website content that marketing wants to track is all in WordPress; the theme developers are not going to be too happy with you modifying their code to introduce the Google Analytics tracking code needed for Content Grouping.
Luckily, there is a solution!
Combine a WordPress plugin that captures content attributes with Google Tag Manager (GTM) to add the necessary tracking code without modifying any of the WordPress theme code.
This posts walks through how we used this method to successfully add Content Grouping to the Megalytic Support website.


Blog Image Google Analytics Tag Manager and WordPress


Setting Up a Content Grouping in Google Analytics

As mentioned, in this post we are going to show how we added Content Grouping to the Megalytic Support website, which is hosted in WordPress and uses the KnowHow theme.

The first step in setting up Content Grouping is to go into the Admin section of the Google Analytics account where you want to track progress. Click on “Content Grouping” and then select “Group by Tracking Code.” We’ll be using this group to track the type of Support page viewed by the user, so we’ll name this Content Group “Support Type.”


Creating a Content Group in Google Analytics


The code that has been circled in the image will be used to track the Content Type.

ga(‘set’, ‘contentGroup1’, ‘My Group Name’)

Grouping WordPress Content

WordPress provides a variety of content attributes that can be used to define Content Groups in Google Analytics. For example when you create content in WordPress you can select a post type (e.g., post, page or any custom post type). Furthermore, within a post, you can define a variety of attributes, such as categories and tags.


WordPress Post Categories


In the above image, you can see that the post type being edited here supports categories. We also see that this particular post has been categorized with “Branding,” “Formatting,” and “Images.” A simple Content Grouping can be created using the category attribute, where we can group all content as either a Video (if the Category of “Video” has been selected), or an Article if the “Video” category does not apply.

Of course, the exact custom posts, categories and tags available on your WordPress installation will depend on the WordPress theme you’re using. However, regardless of theme, there will always be similar attributes that you can take advantage of to define Content Groups.

To track Content Groups based on these attributes, the Google Analytics tracking code needs to be able to access these attributes. To make the attributes available, they need to be stored in a data layer.

Google Tag Manager can be used to read the data layer and use the attributes to fire the appropriate Google Analytics tracking code to define the Content Groups.

So, it all starts with the data layer. Luckily, there is a plugin that we can use to automatically set up the data layer to contain the attributes needed by Google Analytics for Content Grouping.

Install a Plugin for Google Tag Manager

The plugin we use is DuracellTomi’s Google Tag Manager for WordPress. To install it, log in to WordPress as an administrator. Then, click on Plugins > Add New. In the Search Bar enter “DuracellTomi” and click “Search.” This will bring up the “DuracellTomi's Google Tag Manager for WordPress” plugin.


DuracellTomi GTM Plugin for WordPress


Click on “Install Now” to install the plugin. After installation is complete, click on “Activate Plugin” to turn on the plugin to begin using it.

Once installed, you’ll need to enter your Google Tag Manager ID. We recommend creating a new GTM account for your WordPress site to use with this plugin. Once your GTM account is set up, enter the GTM ID in the plugin.


Enter the Google Tag Manager ID


The Data Layer

Once the plugin is installed, we can configure the data layer. Click on the tab “Basic data” and you will see the attributes needed for Content Grouping. Notice the second item in the list: “Category list of current post/archive.”

When this box is checked (as it is by default), the plugin stores the “Category list” in the “dataLayer”—the variable where data is stored by default. That is great news for us! Because we implement Content Groups from the Category data, we do not need to do any custom programming to get the data we need into the dataLayer.


Basic Data for the GTM Data Layer


Once the plugin is configured for our needs, we can check that is working properly by opening the console in our browser and entering “dataLayer.”

In the image below, you can see that for some video content, the categories stored in the data layer include “video”. In fact, as you can see below, all the categories, defined for the page in WordPress, are not stored in the dataLayer.pageCategory array.


Content Group Video - Data Layer Contents


Accessing The Data Layer from Google Tag Manager

Next, we are going to use GTM to access that data layer and set the content type for each particular page as either “Support-Article” or “Support-Video.” “Support-Article” will be the default, and we will use “Support-Video” only when the pageCategory array contains the category “video.”

We assume that you already have GTM set up, and have created a basic tag for Google Analytics tracking. If not, please set this up as described in Google’s help article: Install Google Analytics via Google Tag Manager.

We are going to add Content Groups to the basic tag that you have set up. But, to do that, first we need to set up a couple of GTM variables that will help us derive the correct content type from the data layer.

Calculate the Content Type with a Custom JavaScript Variable

As discussed above, the data layer is storing the categories in the pageCategory variable, as an array – for example:

["admin", "connections", "video"]

So, we need to be able to access the pageCategory array from inside GTM. To do that, we create a “Data Layer Variable” inside of GTM that will hold the value of pageCategory. Start by selecting “Variables” on left rail of GTM, scrolling down to “User-Defined Variables” and clicking “New.”


New Variable in Google Tag Manager


We give the new variable the name “categoryArray,” since it holds the array of categories. We select the type “Data Layer Variable,” and populate it with the data from the data layer variable pageCategory that the plugin has recorded.


Pulling Data Layer Variable in to GTM


The reason for doing this is that now we can reference this variable as from JavaScript run by GTM.

Remember, we want to define the content type to be “Support-Video” if the category “video” appears in the array. That calculation is performed by the JavaScript code below that returns “video” if the article should be classified as a video and “article” otherwise.

var categoryArr = ;
if (categoryArr == "") {
return "none";
var contentType = "article";
for (i = 0; i < categoryArr.length; i++) {
if (categoryArr[i] == "video") {
contentType = "video";
return contentType;

This code simply scans the array from looking for “video.” To put this code to work inside of GTM, we create a Custom JavaScript variable similar to how we created the data layer variable. After clicking on “Variable” and “New,” then populate the fields by naming the variable “getContentType,” selecting “Custom JavaScript” as the variable type, and inserting the code that calculates the content type.


Custom JavaScript Variable in Google Tag Manager


Lastly, we need to create a table that maps the return values from getContentType to the values that will be used in our Content Grouping. For this, we create another variable and name it “contentLookupTable” with type “Lookup Table,” and the Input Variable set to the Custom JavaScript variable just defined – .


Google Tag Manager Lookup Table


In addition, we add rows to the Lookup Table to map each possible input value (the return values from ) to a content type. In this case, the mapping is very simple – “video” is mapped to “Support-Video” and “article” is mapped to “Support-Article.”

Modify the Page Tracking Tag to Add the Content Group

At this point, we have all the calculations needed to set the Content Group value. So, we can now modify the basic page tracking tag to include the Content Group.

To do that, start by editing the tag and clicking on the pencil next to “Configure Tag.”


Editing a Tag in Google Tag Manager


From there, click on “More settings” to open up additional tracking options.


Google Tag Manager - More Settings


Next, click on the “Content Groups” option and click “+ Add Content Group.”


Google Tag Manager - Selecting GA Content Groups


At this point, we simply map the index of the Content Group (1 – 5) to the lookup variable that returns the correct value. In this case the index is 1 because when we set up the Content Group we assigned it to that index number.


Google Tag Manager - Setting a Content Grouping


Save these changes to the tag, and we are done. When we publish the updated GTM configuration, we will start tracking the Content Group named “Support Type.”

Viewing the Content Group in Google Analytics

We give our new Content Group tags in GTM a little time (6 – 12 hours) for data to start showing up in Google Analytics. Then, go to the Pages standard report (Behavior > Site Content > All Pages). Select the Content Group “Support Type” from the Primary Dimension selector directly above the table.


Google Analytics Content Groups in Pages Report


Here, we can see that the values “Support-Article” and “Support-Video” are starting to show up in the report. From this, we can tell that the configuration of the plugin and GTM to assign the Content Group values are working correctly.


In this post, we’ve show how to add Content Group tracking to a WordPress website without having to do any modifications to the WordPress code. We used the WordPress plugin DuracellTomi’s Google Tag Manager for WordPress to save information about our content (i.e, the post categories) into a data layer that can be accessed by Google Tag Manager (GTM). We then configured GTM to read this data layer and fire the appropriate Google Analytics tracking code to set the Content Group value for each page. Finally, we validated the setup by looking at the All Pages report in Google Analytics and confirming that data about the Content Group was flowing into the report.


When the client first came to you, you talked up the value of Google Analytics. You emphasized the importance of seeing where your traffic was coming from. You went on and on about how Google Analytics can show traffic sources to pinpoint whether people came from search, social media or a specific site referral, and how valuable this data was. You sold them on it, so much so that your client looked forward to receiving that first report, the magical day when they would finally understand where visitors were coming from.
But then the report came, and it looked like this:



It showed that 10% of your client’s traffic came from “(direct)/(none)”. What does this label mean? How do you explain Direct traffic to your client? Better yet, how do you explain “none”?
Let’s take a closer look at understanding Direct traffic in Google Analytics and how we can address it with clients.
Digital marketers spend a lot of time focused on PPC and SEO campaigns in order to drive desirable traffic to a website. The phrases we’re ranking for and bidding on get meticulous attention, so much so that we often forget about some of the other ways that visitors find us.

We put a tremendous amount of the effort we put into reviewing organic search data and PPC campaign performance in analytics. But how closely do we monitor referral reports?

If that’s not a channel you review regularly, you may be missing out on seeing traffic that is coming directly from links you’ve obtained around the web, local business listings, news mentions, and more. Many times, links are only considered as a means to an end, a metric that Google uses in determining how to rank sites in the SERPs (search engine results pages). But the fact is, many of a site’s links may be directly contributing to its traffic.

In this article, we’ll review how to look at referral reports in Google Analytics, and some of the many ways to use that data to better inform your web marketing decisions.


Remember how your mom told you not to stand too close to the television because it might hurt your eyes?

The same rules can apply to data. If you’re too close, you may miss the patterns and trends that are crucial to understanding your website’s performance. You can’t judge a site’s performance looking at data in the bubble of a single day, you must consider any day’s traffic compared to the days before and after.

Google Analytics makes it fairly easy to analyze trends over long periods of time. But it also allows you to stand right in front of that TV, to look at more granular levels of time, right down to the hour.
There’s a better way to get that close to the data, without burning your retinas. We’ll cover how to analyze traffic effectively in today’s post.