• Home
  • Google Analytics
    • Customizations
    • For Ecommerce
  • Speaking
  • About
    • About Me
    • Contact Me
    • Disclaimer and Privacy Policy

Analytics Talk

Digital Analytics for Business

You are here: Home / Event Tracking / Advanced Content Tracking with Google Analytics: Part 1

Advanced Content Tracking with Google Analytics: Part 1

Posted: February 21, 2012 118 Comments

This is part 1 of a two part series on advanced content tracking. This post is about why you might want to use this technique and how to implement. The next post will cover the reporting and analysis.

Do people actually read content?

Do people actually read content?

The default content tracking content in Google Analytics is fairly straight forward. Using the standard page tag you can get all sorts of information like time on page, bounce rate and pageviews.

But sometimes this is not enough. For publishers and minor bloggers (like your’s truly) these metrics can be sub-optimal.

I want more detailed information about each article. Do people read the comments or do they just read the post? Do they open a lot of posts in tabs?

What would be better is a way to measure more detailed information about how website visitors interact with each page.

So that’s what this post is all about: measuring how people interact with content using custom tracking.

Some Thanks

Before we begin, this blog post, technique and concept was born from collaboration. There are a number of people that need to be recognized for contributing. You can read more about the genesis of this technique at the bottom of the post. Contributors include:

Nick Mihailovski – Developer advocate at Google (and the guys that sits across from me)
Thomas Baekdal – Smart guy and publisher of www.baekdal.com
Avinash Kaushik – If you don’t know Avinash…
Joost de Valk – Creator of the Google Analytics for WordPress
Eivind Savio – Blogger and GA consultant

Now, on the details!

Business Objective

As I mentioned above the objective here is to get a better understanding, on a page by page basis, of the content that visitors engage with. Using some objectives suggested by Thomas Baekdal here’s what we’re going to track:

  • How many people scroll
  • When a person starts to scroll
  • When a person reaches the end of an article (not the end of the page, but the end of the article or post area)
  • When a person reaches the botton of the page (the bottom of the HTML)
  • Which website visitors are scanning my articles and which are reading my articles

Think about the value here! We will be able to get an accurate measure of which articles are actually read. We can even see which articles are so engaging that visitors continue through the comments to the botto of the page. Very useful stuff.

Tracking Technique

All of the above can be tracked with Event Tracking. The concept is that we will fire events when certain actions happen. Specifically we’re going to fire events based on visitors scrolling down the page.

Critical to any event tracking implementation is the data model. We need to define the data we want to see in Google Analytics.

All of the reading activities will be grouped together into a category named Reading.

Within this category there will be four main actions:

  • Article load: Measure how many times the article loads in a browser. Basically another count of pageviews. This will provide context to the other events that we track.
  • Start Reading: Track when a visitor starts scrolling down the page. This will be triggered after a visitor scrolls 150 pixels down the page. This value can be customized. I’m also tracking how much time it takes to start scrolling.
  • Content Bottom: Track when a visitor reaches the end of the article content. And track how much time it took between the scroll start and getting to the bottom of the content.
  • Page Bottom: Track when the visitor reached the botton of the page and how long it took.

Another piece of critical information is the page URL and title. We need this to segment the data and see which articles are most engaging to people. Google Analytics will automatically track the page URL and title so there’s no need to add it to the event.

We’re also going to use a Custom Variable to place this visitor in a bucket. If it took them less than 60 seconds to get to the bottom of the page then I will assume they are just scanning. We’ll put them in the Scanners bucket.

But, if they took longer than 60 seconds to get to the bottom of the page then we’ll put them in the readers bucket.

FInally, I can set these events up as goals. I’ll add one goal for those that make it to the bottom of the content and one goal for those that make it to the bottom of the page. This is an easy way to measure what percentage of visits complete these actions.

The Code

First, this code uses something called jQuery. It’s a special JavaScript library that makes it easier to program complex tasks. Almost every website is running jQuery these day. But make sure your site includes the library.

Here’s the code, feel free to copy, tweak and share. Just remember all the people that contributed to it!

We start with some simple declarations. These control flow etc. But notice there are a couple values you can change.

[code lang=”js”]
// Debug flag
// CHANGE THIS TO false BEFORE INSTALLING
var debugMode = true;

// Default time delay before checking location
var callBackTime = 100;

// # px before tracking a reader
var readerLocation = 150;

// Set some flags for tracking & execution
var timer = 0;
var scroller = false;
var endContent = false;
var didComplete = false;

// Set some time variables to calculate reading time
var startTime = new Date();
var beginning = startTime.getTime();
var totalTime = 0;
[/code]

You can change the callBackTime variable and the readerLocation variable. callbackTime is the time (in millisecond) that the browser will wait before checking the scroll location. This eliminates any lag in scrolling.

readerLocation is the distance, in pixels, that the visitor must scroll before we fire an event and classify them as someone who starts reading.

Now we send off an event to track that the article has loaded:

[code lang=”js”]
// Track the aticle load
if (!debugMode) {
_gaq.push([‘_trackEvent’, ‘Reading’, ‘ArticleLoaded’, ”, , true]);
}
[/code]

Next comes the code that checks the location. First we gather where the visitor is on the page and how far they have scrolled.

[code lang=”js”]
bottom = $(window).height() + $(window).scrollTop();
height = $(document).height();
[/code]

Then we start checking.

First, have they scrolled enough to fire the first event (150 px)?

[code lang=”js”]
// If user starts to scroll send an event
if (bottom > readerLocation && !scroller) {
currentTime = new Date();
scrollStart = currentTime.getTime();
timeToScroll = Math.round((scrollStart – beginning) / 1000);
if (!debugMode) {
_gaq.push([‘_trackEvent’, ‘Reading’, ‘StartReading’, ”, timeToScroll]);
} else {
alert(‘started reading ‘ + timeToScroll);
}
scroller = true;
}
[/code]

IMPORTANT: The above event WILL change your bounce rate. As soon as someone starts scrolling I consider them engaged and not a bounce. So this event will drop your bounce rate. Also note that these events WILL change your time on site calculations. You should see time on site increase.

Then, when they reach the bottom of the content area, this event fires marking their progress. I’m basically checking to see if the div that contains the article content has been reached. If so, fire the event.

[code lang=”js”]
// If user has hit the bottom of the content send an event
if (bottom >= $(‘.entry-content’).scrollTop() + $(‘.entry-content’).innerHeight() && !endContent) {
currentTime = new Date();
contentScrollEnd = currentTime.getTime();
timeToContentEnd = Math.round((contentScrollEnd – scrollStart) / 1000);
if (!debugMode) {
_gaq.push([‘_trackEvent’, ‘Reading’, ‘ContentBottom’, ”, timeToContentEnd]);
} else {
alert(‘end content section ‘+timeToContentEnd);
}
endContent = true;
}
[/code]

It’s really important to note that the above code looks for a div specific to my blog. On my site the div is named entry-content. It might be different on yours. Basically you’re looking for the container that holds the blog post or article.

Finally, we track if the visitor got to the bottom of the page. Here we do a few things.

  1. We calculate how long it took them
  2. We send an event
  3. We set a custom variables to bucket our traffic. If the visitor took longer than 60 seconds to reach the bottom then we’ll put them in the reader segment using a visit level custom variable. If they take less than 60 seconds I’ll put them in the Scanner bucket.

I’m putting them into custom variable slot 5 because that’s the only slot that I have available. You may need to use a different slot. Dont know what a slot is? Read more about mastering custom variables.

[code lang=”js”]
// If user has hit the bottom of page send an event
if (bottom >= height && !didComplete) {
currentTime = new Date();
end = currentTime.getTime();
totalTime = Math.round((end – scrollStart) / 1000);
if (!debugMode) {
if (totalTime < 60) {
_gaq.push([‘_setCustomVar’, 5, ‘ReaderType’, ‘Scanner’, 2]);
} else {
_gaq.push([‘_setCustomVar’, 5, ‘ReaderType’, ‘Reader’, 2]);
}
_gaq.push([‘_trackEvent’, ‘Reading’, ‘PageBottom’, ”, totalTime]);
} else {
alert(‘bottom of page ‘+totalTime);
}
didComplete = true;
}
[/code]

Since we’re collecting the time spent on page, I’m going to use this data to adjust the threshold after I collect some data. I chose 60 seconds arbitrarily.

And finally, here’s the code that actually checks if the visitor has scrolled down the page:

[code lang=”js”]
// Track the scrolling and track location
$(window).scroll(function() {
if (timer) {
clearTimeout(timer);
}
// Use a buffer so we don’t call trackLocation too often.
timer = setTimeout(trackLocation, callBackTime);
});
[/code]

So that’s the code. You can copy it from the iFrame above and place it on your site if you want to.

Stay tuned for a post tomorrow about the resulting reports!

Filed Under: Event Tracking, Tracking Tagged With: advanced, content, Data, events, Tracking

Comments

  1. André Scholten says

    February 21, 2012 at 11:18 am

    The thing that bothers me is that I don’t see what I can do with this data. After a while you know which articles are read en which aren’t, and then what? The articles are already there and I won’t change them. I don’t mind if someone scans an article or reads it, as long as it was useful to my reader/scanner.

    So I’m looking forward to your post tomorrow ;)

    Reply
    • Justin Cutroni says

      February 21, 2012 at 1:29 pm

      @Andre: I love your honest feedback, thanks! I think this gives a more accurate measure of content performance. Here’s one thing that I found, almost nobody reads the comments on this blog. Or at least over the last 2 days. Nobody scrolls to the bottom of the page.

      @Xiaoq: Yes, short articles on devices that have a large resolution can be a challenge. But in my early testing this has not been an issue. And, if your blog has shorter posts, you can change the settings to meet your need.s

      And yes, you can make all these hits non-interactive. My feeling is that once someone starts to scroll they are engaging the content and should not be considered a bounce. If you believe the opposite then you can change the hit-types.

      @Nate: Thanks Nate, I appreciate it. You made my day.

      @Adrian: I am no JavaScript guru. A lot of this was cobbled together and tested extensively. To answer your questions:

      1. Yes, there are a number of flags that keep the events from firing multiple times.
      2. Windows and tabs are a challenge. The data shows that people wait a long time before reading. This might be a discussion topic for the next post.
      3. Yes, you are correct about the custom vars. I’ve been going back and forth on the need for custom vars. Honestly, I don’t think we really need them.

      Reply
  2. xiaoq says

    February 21, 2012 at 11:26 am

    Good Staff!

    But I think there are some limitations for these tracking code, that is screen resolutions may pollute the result, for example, if the visitor screen is big enough and the article is not so long, then the visitor may not need to scroll down to view the whole article.

    And, can we add the non interactive value in the event tracking to make the bounce rate not affected?I’m also wandering why the time on site increases?

    Thanks!

    Reply
  3. Nate says

    February 21, 2012 at 11:57 am

    Thanks for this amazing post. I haven’t implemented this yet or tested it in my own environment. But regardless of how well it might work in my environment I wanted to give you a virtual pat on the back for creating exactly the type of script I’ve been needing for a while.

    Reply
  4. Adrian P says

    February 21, 2012 at 12:43 pm

    This is awesome Justin! Coming from an advertising background, it’s very easy for me to understand this through the metaphor of impressions/clicks/conversions. I really hope content websites take this content tracking to heart.

    I have a few questions about the implemenation:
    -I’m still learning JavaScript, but it looks like the endContent variable controls for someone scrolling back up and then back down (thus firing multiple ContentBottom actions)?
    -How would one account for a user moving to another window and then coming back to your content window?
    -Concerning the scope you used for the GA custom variable: in a scenario where a user 1) reads one article, 2) scans a second article, and then 3) exits the site, the custom variable would hold that session as “scanned”, correct? I am just curious about why you went with that scope instead of the page level scope :-)

    Reply
  5. Eduardo Cereto says

    February 21, 2012 at 1:30 pm

    Very good idea Justin, would be very helpful specially to weblogs.

    I personally would set the startReading event as a non_interactive, but this is my personal opinion.

    I think we need better standards to track some common things that a lot of us (power users) do everyday. MaxScroll, FormTracking, Download Tracking, outbound tracking, … Right now everyone does it it’s own way and when a new user asks (on Google Forums for example) how to do it he’s often given a completely different approach not very well optimized, because there’s no good published solutions.

    Weblogs are a type of site that need more love from Web Analysts. To this date I haven’t seen a good way of tracking blog comments or article reading that doesn’t involve custom code. Also it’s well stablished that bounce rate for weblogs needed to be tweaked based on interaction or scrolling since a very engaged user may do so without ever leaving the homepage.

    Reply
  6. André Scholten says

    February 21, 2012 at 1:47 pm

    @Justin: hmm, that comment part is indeed interesting. The posts with the most comments tend to load much much longer than the ones without. So if you know almost no one reads them, you should only load the top 10 at first. Great insight and action.

    Reply
  7. Maciej Lewiński says

    February 21, 2012 at 2:06 pm

    Amazing work! Code already installed on my one page. I will try to modify it so to see how many people saw different sections on my website.

    Reply
  8. Jim Gianoglio says

    February 21, 2012 at 2:32 pm

    Hey Justin –

    I noticed that those events are only being fired once each. For example, the event to indicate that I reached the bottom of the post is only fired one time, regardless of if I scroll back to the top and then back to the bottom.

    This raises the question of how many people initially scan an article (quickly scrolling all the way to the bottom) then go back to the top and read the entire post. Any ideas on how this behavior could be tracked (without muddying the waters and creating an abundance of these events in our reports)? If you did fire an event every time someone reached the bottom, would it suffice to look at unique events instead of total events?

    Reply
  9. Eivind Savio says

    February 21, 2012 at 3:40 pm

    I’ve been testing this code since I got aware of Justin experimenting with this method (I’ve tried a different script earlier, but that script wasn’t that good).

    I rewrote some of the code, and have because of that been tracking things a little bit different than Justin.
    I’ve used a shorter threshold for scrolling (30 seconds), but not for scrolling the complete page, just the content area. I’ve also tracked everything using non-bounce Events, and I’ve only tracked pages where the content area had to be scrolled. And finally, I’ve tracked length of the content area in pixels so I could run some analysis against “Scanners” & “Readers” vs. content length.

    Then I have extracted everything into Excel (using Next Analytics) so I could get all data about a page (including time on page, pageviews etc. that aren’t available in the Event Report.

    In Excel I’ve run some correlation between content length and “Readers” and “Reading” time. My hypothesis was that content length could explain reading time and readers -> The longer the content is, the longer time it takes to scroll = Longer content will bucket more visitors as “Readers”.

    These are my numbers:
    Correlation Coefficient
    Content Length vs. Scanners -0.087
    Content Length vs. Readers 0.165
    Content Length vs. Reading Time 0.192
    Content Length vs. Scanner Time 0.264
    Content Length vs. Page Bottom Time 0.196
    Reading Time vs. Avg. Time on Page 0.943
    Page Bottom Time vs. Avg. Time on Page 0.514

    Although the correlation is slightly positive between Content Length & Readers, in my case Content Length isn’t very correlated to readers. Yes, my data is also limited so the correlation may change. This data is based on data from around 750 “Scroll Allowed pages”. Also, I only measure blog posts and articles, not category pages etc.

    Reply
  10. Nate says

    February 21, 2012 at 3:42 pm

    is there a way to edit this script so that it does not effect Bounce Rate and Time on Site?

    Reply
  11. Victor Acquah says

    February 21, 2012 at 3:46 pm

    This should be interesting. Great stuff.

    However, I just started testing it on my site – the events seem to fire off a pop up every time each is triggered – “started reading – 2” or “end content – 8”. Why are these showing up as pop ups? ( Firefox 10 ). thx!

    Reply
    • Justin Cutroni says

      February 21, 2012 at 4:06 pm

      @Vistor: You’ve got debug mode turned on. Try turning it off. It’s the first variable in the script.

      @Nate: Yes, we could use non-interactive events. You would need to add another argument to the event calls.

      @Elvind: Thanks for sharing some of your data! I completely agree that this is best for content pages, not navigational pages.

      @Jim: You are correct, I only fire the events once. I do not fire multiple events. Based on the numbers I have so far it does not appear that scanning to the bottom of the page is a common behavior. The time-to-bottom of page is fairly long. More on the data tomorrow!

      @Eduardo: Agree, we need better content tracking tools. You’ve been good enough to create quite a few for the community. Hopefully this tracking ends up in other plugins, not just the WordPress plugin.

      Reply
  12. Luke Hay says

    February 22, 2012 at 4:22 am

    Hey,

    Great article. I’ve seen similar code before but nothing as comprehensive as this. I’m going to set this up on our site but I’ve got a quick question before I do. You say “All of this awesomeness will be added directly into the Google Analytics for WordPress plugin developed by Joost. Look for it soon.” This is great as I’m using that plugin already. The question is, how soon is ‘soon’? Should I implement the code in my site now or wait a couple of days/weeks/months and do it via the plugin?

    Thanks!

    Reply
    • Justin Cutroni says

      February 22, 2012 at 9:31 am

      @Luke: Ah, that depends on Joost and how busy he is. I would day weeks, not months. But probably at least a few. Also, when these things get turned into plugins they usually have less options. So if there are any settings that you would really like to change you might be better off adding the code to your site.

      Reply
  13. Victor Acquah says

    February 22, 2012 at 9:54 am

    Implemented this yesterday. So far do good.

    Question: I have 2 different types of content pages – one is simply a blog and the other is a photo gallery page, much like how the Boston Globe’s Big Picture is laid out. (http://www.boston.com/bigpicture/). In the case of the gallery, I’d like to tweak this to be “Gallery Viewers” instead of “Readers”. And “Viewing” vs. Reading” but keep it all under “ReaderType. ( Both editorial readers and Gallery Viewers). Not sure if this still goes into the same slot for ReaderType. ( I am using slot 1 ). Is it possible? What mods do i need to do to the code?

    I think this script is a first step in the need to begin to focus on what happens on a page ( how users are interacting with specific page elements) vs simply reporting Page Views, which in my opinion don’t mean much these days. What people do on each page, based on what the page is designed for, is what I want to know. If the page has an editorial, slideshow, video and comments, I’d like to be able to tell how each of these content types were separately used on that page – Are people simply watching the video and not reading the editorial ? Do people also read the comments? e.t.c

    The script in its current form, relies on a combination of scrolling, speed of scroll and position on page to make assumptions about 2 specific user behaviors – reading vs scrolling. I think the next progression of this script should be geared towards a means to detect specific on page interactions – if its possible at all ( for instance, if the comment section has its own container, we can apply the same assumption to how fast someone specifically goes through this section alone, as an indication of reading the comments or simply going past it. ). Add in video view events, slideshow interactions, form submissions, subscriptions e.t.c and we begin to get a fuller picture of whats going on on the page. Maybe, modification of the script to track multiple containers on a page, with customizable scroll times for each is the interim solution? Video views and slideshows might be different. Eivind Savio seems to be doing a bit of that with his modifications to the script as noted above.

    This is very cool. Great work. Hope there is more to come.

    Reply
    • Justin Cutroni says

      February 22, 2012 at 10:30 am

      @Victor: Wow, that was fast! Thanks for implementing and I hope you find the data useful. I hope this is a first step to more detailed content measurement. The script could absolutely be changed to include more direct “action” measurement, like leaving a comment. As you mentioned, this is a first step. I think we need to see how this works and them advance. More than anything else I want the data to be actionable.

      Regarding your question, you can absolutely use slot 1. if you want to add another value to the ReaderType, i.e. keep everything under the “ReaderTpye” custom variable, then just add the following code.

      _gaq.push([‘_setCustomVar’, 1, ‘ReaderType’, ‘GalleryViewer’, 3]);

      I also suggest that you might want to use a page-level custom variable rather than a session level, which I use. Because you have different content types you need to “reset” the the custom var from page to page.

      Reply
  14. Thomas Baekdal says

    February 22, 2012 at 10:01 am

    Very nice work!

    BTW: For those who you asking about read/scroll-rate and why you need it. I can tell you that it is extremely important. As more and more people learn, the number of people who read an article is much lower than what you might think. As a publisher that is critical information because our ‘product’ is the article itself. If people don’t read, the chances of them coming back is practically zero.

    Another thing that is also important is how it affects ranking of your articles. If you just look at the top 50 articles for a given month, in terms of unique visitors, you don’t see the correct picture. But if you see the top 50 articles in terms of read-rate, you suddenly know which articles people spent time reading. That can dramatically change which type of articles you want to write in the future.

    For instance, on my site I found that several of my popular articles actually had a very low read-rate, while some of my less popular articles had a high read rate. That’s something you need to know if you want your content strategy to succeed.

    BTW: I wrote about this in: http://www.baekdal.com/insights/the-future-of-analytics-for-publishers/748B3BA4B05B4647868464D2721508BA57C8A36CD054655EC44AED9557BEE5ED

    Reply
    • Justin Cutroni says

      February 22, 2012 at 10:34 am

      @Thomas: Thank you, thank you, thank you. You make a fantastic point, much of our current measurement can be easily skewed and mask what is really happening on the site. This provides a much more precise picture of user activity on the site.

      Reply
  15. Ren says

    February 22, 2012 at 1:03 pm

    Can you share any screenshots of how this looks in Google Analytics?

    Reply
    • Justin Cutroni says

      February 22, 2012 at 8:36 pm

      @Ren: Yup, working on that post now. Didn’t want to put all this juicy content into one post :)

      Reply
  16. Thomas Baekdal says

    February 22, 2012 at 6:02 pm

    No thank you, this is amazing work! :)

    Reply
  17. Eduardo Cereto says

    February 22, 2012 at 11:01 pm

    I just came back to this site to read the comments, since I had already read the article I just jumped straight to the bottom. I wonder how this behavior affects this metric

    Reply
    • Justin Cutroni says

      February 22, 2012 at 11:30 pm

      @Eduardo: The code should fire at least 3 events: 1 when the page loaded, 1 when you started scrolling and 1 when you got to the bottom of the content. And if you made it to the bottom of the page then a final event should have been triggered.

      Let’s hope that’s what actually happened :)

      Reply
  18. Brendan Halloran says

    February 23, 2012 at 6:38 pm

    This is indeed a very interesting development and addition to the weaponry of analytics power users.

    I bet you had some major influence in Google’s recent decision to remove the 10/20 events per pageview limitation to enable you to do this type of tracking.

    I was disappointed that Google introduced the limitation in the first place – there would have been plenty of people affected by it who were tracking other types of event-based user interaction.

    Reply
  19. Gerard Rathenau says

    February 24, 2012 at 12:02 pm

    Where should I paste this code in my site? Between and or other where in my site?

    Reply
    • Justin Cutroni says

      February 24, 2012 at 12:17 pm

      @Gerard: You can place the code in the HEAD tag of your site, right after the standard GA page tag.

      Reply
  20. Matt says

    February 24, 2012 at 6:35 pm

    This is a really cool metric! I wouldn’t call it a bounce rate though. It’s too widely used of a term to be redefined at this point. “page engagement” or something like it may be a useful term.

    Reply
    • Justin Cutroni says

      February 24, 2012 at 10:09 pm

      @Matt: No name for the metrics yet. Still working on it.

      @Victor: I assume you have an opening IF for those code blocks. Are you getting any JS errors?

      Reply
  21. Victor Acquah says

    February 24, 2012 at 8:05 pm

    @Justin – Something wrong with my code. My custom variables are not working anymore after changing it from a session level to a page level variable: ( not being recorded )

    For the blog page with an editorial, I have this:

    _gaq.push([‘_setCustomVar’, 1, ‘ReaderType’, ‘Scanner’, 3]);
    } else {
    _gaq.push([‘_setCustomVar’, 1, ‘ReaderType’, ‘Reader’, 3]);
    }

    And for the Photo gallery page with the set of pictures, I have:

    _gaq.push([‘_setCustomVar’, 1, ‘ReaderType’, ‘GalleryScanner’, 3]);
    } else {
    _gaq.push([‘_setCustomVar’, 1, ‘ReaderType’, ‘GalleryViewer’, 3]);

    Anything jump at you? thx!

    Reply
  22. Gerard Rathenau says

    February 27, 2012 at 2:40 am

    I’ve placed it after the GA code in the , but my site (gerardrathenau.nl) does not catch the code.

    Should I customize the code first for my site?

    Reply
    • Justin Cutroni says

      February 27, 2012 at 8:58 am

      @ Gerard: Yes, there needs to be some customization. First, there is a variable at the top of the code that turns debugging on and off. Set that accordingly. Second, the chunk of code that identifies where your content ends needs to be changed. You need to identify the CSS class, or some other part of the page, that designates the bottom of your content.

      Hope that helps!

      Reply
  23. Victor Acquah says

    February 27, 2012 at 4:32 pm

    Yes, I have an opening IF for the code blocks and there are no js errors ( posted my entire code earlier but seems it was deleted – too long). Not sure why it is not working. All the events are registering correctly with no custom variable showing up at all. Could it be that this code is placed right after the google analytics code itself? ( i.e the _setCustomVar comes after _trackPageview ?)

    Reply
  24. Hebert Hernandez says

    March 4, 2012 at 1:48 am

    Hi Justin! I’d suggest the _setSampleRate method for large sites that could get close to GA data collection limits, after implementing this great collection of events and custom vars.
    What do you think about this?
    Greetings from Mexico!

    Reply
    • Justin Cutroni says

      March 5, 2012 at 9:30 pm

      @Hebert: Good point, a site owner should evaluate the need for this data and how it impacts their total number of hits. In general, I’d try to convince them to use GA Premium :)

      Reply
  25. Vladi says

    March 4, 2012 at 7:19 am

    The fact that it will be implemented in Joost’s plugin is awesome news!

    Reply
  26. Brendan Halloran says

    March 5, 2012 at 10:33 pm

    @Justin: isn’t the limitation 0f 500 “hits” per session controlled by ga.js – meaning that even if you had GA premium you would still encounter the limit? Or is there a different GA JS file that GA premium customers use?

    Reply
  27. John Boudreau says

    March 9, 2012 at 8:06 am

    Great article! Just an FYI, the link to Thomas Baekdal’s site is wrong. It should be http://www.baekdal.com. It’s referenced at the top of the article. Thanks again.

    Reply
    • Justin Cutroni says

      March 9, 2012 at 4:07 pm

      @John: Thanks for the heads up. Link fixed.

      Reply
  28. Thomas Baekdal says

    March 9, 2012 at 4:46 pm

    Justin, I just noticed John’s comments in my inbox (thanks John!)… I appreciate you fixing the link, but the link text is still wrong. Not a big deal, just a heads up ;)

    Reply
    • Justin Cutroni says

      March 9, 2012 at 4:59 pm

      @ Thomas: Fixed… FINALLY :)

      Reply
  29. Dennis says

    May 7, 2012 at 11:33 am

    i found that this code didnt quite work properly in terms of finding the end of the content.
    My fix was this:

    Original code
    if (bottom >= $(‘.entry-content’).scrollTop() + $(‘.entry-content’).innerHeight() && !endContent) {
    New Code
    if (bottom >= $(‘.entry-content’).offset().top+ $(‘.entry-content’).innerHeight() && !endContent) {

    This was triggering way to early, before i got to the div.
    Not sure why this was not working but i do know that it is working now.

    Additionally i had to change the . in this to # as i had “div ids” rather than “div classes”

    Reply
  30. Meir says

    July 20, 2012 at 3:51 am

    Hi Justin,
    Do we have news for wordpress users ?

    Reply
    • Justin Cutroni says

      July 20, 2012 at 2:07 pm

      @Meir: No, I’m looking for a WordPress developer that would like to take on the work. Stay tuned!

      Reply
  31. James says

    July 30, 2012 at 11:23 am

    Enjoyed the post, just a quick question, do you define the end of page as the very bottom of this page (where reader can see footer) or the bottom of the comments (which obviously grow as more people write) . Personally I never usually scroll beyond the ‘trackbacks’

    Perhaps you could measure if more people responded/commented if the number of trackbacks was reduced or just removed completely?

    Reply
    • Justin Cutroni says

      September 6, 2012 at 3:53 pm

      @James: I track both. There is an event to mark when people get to the bottom of the content, and there is a second event to mark when people get to the actual bottom of the page HTML.

      Thanks for the comment!

      Reply
  32. Darrell says

    August 3, 2012 at 6:51 pm

    I made sure jquery is installed. When I paste the code in header.php, it appears on my webpage. What am I doing wrong?

    Reply
    • Justin Cutroni says

      September 6, 2012 at 3:54 pm

      @Darrell: Make sure that the code is in the correct place in your HTML. It should appear somewhere in the < HEAD > tag.

      Reply
  33. sumathi says

    September 4, 2012 at 9:47 am

    we are pushing our data(Username,title,organization,department,searchterm) as 5 events using eventTracking.
    values of the above 5 given in EventLabel…..
    need to have all the above as consolidated report says:

    “sumathi” “executive” from “SMI”(organization) “Marketing”(dept) “test”(used searchterm)

    all the above 5 has to be in single report (either a dashboard or custom report or standard report or Atleast want to export in excel)

    Thanks and Regards
    Sumathi

    Reply
    • Justin Cutroni says

      September 6, 2012 at 3:58 pm

      @sumathi: Be careful, it looks like some of the data that you are collecting is personally identifiable information. Specifically ‘username’. Remember, you can not track any personally identifiable information in Google Analytics.

      As for your question, if the data is in five different events, then you can not combine it in Google Analytics. My suggestion would be to collect all data fields in the Event Category or Action, then export and manipulate in Excel.

      Reply
  34. Guy says

    October 8, 2012 at 9:04 am

    Hi,

    First of all a great post!
    Now when google tag manager has come to play, is it possible to insert the Javascript into a custom HTML tag? And fire when the visitor lands on the relevant content pages. Or is it better to insert the script it in the DOM?

    Thanks in advance.

    Reply
    • Justin Cutroni says

      October 8, 2012 at 9:15 pm

      @Guy: You could absolutely add the custom code to a Custom HTML tag in GTM. That would absolutely work.

      Reply
  35. Chad Agrawal says

    October 15, 2012 at 1:34 am

    Seems kind of complicated. I’m going to give it a try though. I would really like to be able to track clicks in my navbar as events!

    Reply
  36. Attila says

    November 7, 2012 at 11:22 am

    Nice work! I am testing and running it in debug mode, but ‘end content section’ alert always fire a 250px earlier before div.entry-content. Do you have any idea why? Prpbably I have to add aproximatelly 250px to the measurement function.

    Reply
  37. ben says

    January 15, 2013 at 12:54 pm

    any update regarding when this will be integrated into the WP plugin by Joost?

    thanks
    ben

    Reply
    • Justin Cutroni says

      January 15, 2013 at 3:16 pm

      @Ben: Unfortunately we may have to wait a while. That Yoast is a very busy guy. My suggestion is to implement this on your own. Good luck and thanks for leaving a comment.

      Reply
  38. Doug Sutherland says

    February 25, 2013 at 6:33 pm

    Great articles. A year later, as we start evaluating the positives of a one-page website, that is iPad friendly against the negatives related to losing decent GA results, your article has given me hope that applying these scripts to a series of tags used to separate “page” content within a single page may prove to have positive results. Let the scripting begin!

    Reply
  39. David Suarez says

    March 12, 2013 at 3:33 am

    hey justin, If i use this on a wordpress site and I have one of those cahcing plugins installed, would that affect the script?

    Reply
    • Justin Cutroni says

      March 12, 2013 at 7:31 am

      @David: Hmmmm…. I don’t think so. The caching is done by the server, and would only affect delivery of the script. It would not change any Google Analytics data collection.

      Reply
  40. Paul Yoder says

    April 1, 2013 at 1:12 pm

    Love the post!

    I’m trying to find the post for the second part of this series and can’t find it. Do you have a link to it?

    Reply
    • Susan says

      July 11, 2013 at 7:18 am

      Think this is part 2.. http://cutroni.wpengine.com/2012/02/23/advanced-content-tracking-with-google-analytics-part-2/

      Reply
  41. Chris McCreery says

    February 6, 2014 at 12:14 pm

    Would you be able to implement the same type of tracking just using Google Tag Manager?

    Reply
    • Justin Cutroni says

      February 6, 2014 at 8:01 pm

      @Chris: Sort of. You would need to put this code, along with the standard GA code, in a Custom HTML tag. That should work. I’m also working on a new version that will work with GTM. It should be done by the end of Q1 2014.

      Reply

Trackbacks

  1. Marketing Day: February 21, 2012 says:
    February 21, 2012 at 5:01 pm

    […] Advanced Content Tracking with Google Analytics: Part 1, cutroni.com […]

    Reply
  2. Advanced Content Tracking with Google Analytics: Part 1 – Analytics … | SFWEBDESIGN.com says:
    February 21, 2012 at 5:17 pm

    […] Go here to read the rest:  Advanced Content Tracking with Google Analytics: Part 1 – Analytics … […]

    Reply
  3. SEO content marketing roundup, week ending February 22nd | SEO Copywriting says:
    February 22, 2012 at 5:01 am

    […] Justin Cutroni shares (part 1 of) his method of detailed content tracking – “measuring how people interact with content” – with Google Analytics at Cutroni (Analytics Talk). […]

    Reply
  4. Advanced Content Tracking with Google Analytics: Part 2 – Analytics Talk says:
    February 23, 2012 at 5:42 pm

    […] I mentioned in part one, this technique and concept was born from collaboration. There are a number of people that need to […]

    Reply
  5. 一个有趣的Google Analytics部署试验 | 赵有财搜索引擎营销研究 says:
    February 26, 2012 at 10:31 am

    […] 很久(快两个月)没有更新博客了,主要原因只有一个字:忙!忙什么,呵呵!就不和大家瞎扯了。今天分享一下关于最近整理研究部署Google Analytics的一些事。误闯GA大师Justin Cutroni 的博客,发现了一个商业价值不大(相对本身而言,其实可以有很有价值的应用),却对于研究GA的高级部署很有意义的文章《Advanced Content Tracking with Google Analytics》。文章是系列文章,分为两部分:第一部分介绍技术和部署实施的细节;第二部分是报告与分析。其实不光是文章本身,评论中更加体现了GA部署作为一项实践性强的工作,有些问题需要很多实际经验分析。下面对两篇文章简要的介绍一下(内容仅仅是个人理解,不敢“翻译”,所以有可能不知所云,期待英文高手解惑指正): […]

    Reply
  6. Google Analytics Multi-Channel Funnel Tips from my #SearchFest Presentation | Reputation Expert says:
    February 28, 2012 at 12:09 pm

    […] some snazzy interactions on your site. Checkout Justin Cutroni’s latest series of posts on content tracking and analysis with Google Analytics’ Events. In my presentation, I highlighted the usefulness of tracking checkout errors with events. […]

    Reply
  7. Understanding Google Analytics Time Calculations – Analytics Talk says:
    March 1, 2012 at 7:29 am

    […] was the whole reason behind the posts Advanced Content Tracking Part 1 and Advanced Content Tracking Part […]

    Reply
  8. Google Analytics – Social network tracking and article reader analysis — The BwLOG — The blog for Betley Whitehorne, a leading Channel Island Advertising, Design, Web and Branding Agency says:
    March 7, 2012 at 6:51 am

    […] New methodologies have emerged from the SEO realm that allow us to track when a visitor clicks on an article page, when they start scrolling on that page and when they scroll to the end of that article. We can measure this and infer if they are either reading that article based on the time spent on the page or merely skimming it. […]

    Reply
  9. 44 Must Read Resources on Content Marketing says:
    April 4, 2012 at 2:46 pm

    […] it’s important to have an interesting headline. 20. 21 Tactics to Increase Blog Traffic 21. Advanced Content Tracking with Google Analytics – Want to use Google Analytics to track how far people are scrolling on your content? Want to […]

    Reply
  10. 44 Must Read Resources on Content Marketing says:
    April 4, 2012 at 4:56 pm

    […] would be using Google’s Doubleclick Ad Planner to target relevant websites to engage with. 21. Advanced Content Tracking with Google Analytics – Want to use Google Analytics to track how far people are scrolling on your content? Want to […]

    Reply
  11. Tips and tools for creating editorial calendars | Freestyle Blog says:
    April 5, 2012 at 10:04 am

    […] Using Google Analytics’s for for advanced content tracking from Cutroni. […]

    Reply
  12. 44 Must Read Resources on Content Marketing : Seochandra.me says:
    April 13, 2012 at 12:46 am

    […] would be using Google’s Doubleclick Ad Planner to target relevant websites to engage with. 21. Advanced Content Tracking with Google Analytics – Want to use Google Analytics to track how far people are scrolling on your content? Want to […]

    Reply
  13. GA lancia il tracciamento dei tempi utente • Google Analytics in 30 secondi says:
    April 24, 2012 at 6:04 pm

    […] livello di un browser-game, il tempo speso per leggere una sezione o una pagina (magari modificando questo metodo di Justin Cutroni). Mi piacerebbe però anche sapere voi cosa ci fareste o cosa avete intenzione di fare con questa […]

    Reply
  14. Modified Bounce Rate in Google Analytics | randyzwitch.com says:
    May 10, 2012 at 7:05 am

    […] few months back, Justin Cutroni posted on his blog some jQuery code that modifies how Google Analytics tracks content.  Specifically, the code snippet changes how bounce rate and time on site are calculated, creates […]

    Reply
  15. Compreender cálculos de tempo do Google Analytics says:
    May 14, 2012 at 10:48 am

    […] página quando há apenas um pageview durante uma visita.Este foi o motivo por trás das mensagens de conteúdo avançada de rastreamento Parte 1 e Parte avançada de rastreamento de conteúdo 2 .Como Comprimento visita é calculadoVisite […]

    Reply
  16. Dovrei usare il bounce rate accomodato? • Google Analytics in 30 secondi says:
    July 25, 2012 at 4:57 pm

    […] allora punterei di più sul sistema di Justin Cutroni per tracciare lo scroll della pagina (parte 1 – parte 2), magari in una sua forma alleggerita per sparare l’evento antibounce allo […]

    Reply
  17. Rethinking Blog Metrics - Analytics Talk says:
    July 27, 2012 at 6:58 am

    […] You can read more about the code in these articles: Advanced Content Tracking with Google Analytics: Part 1 […]

    Reply
  18. SEO Texte - Qualität & Erfolg mal anders analysiert | SERP-Eye.com says:
    August 16, 2012 at 1:34 pm

    […] entsprechendes Script hierfür wurde von Justin Cutroni entwickelt und von Eivind Savio unter „Tracking Content Scrollers, Scanners & Readers in Google Analytics“  weiterentwickelt. Empfehlenswert sind beide Artikel. Eivind Savio bietet auch zusätzlich eine […]

    Reply
  19. Quora says:
    September 2, 2012 at 7:31 pm

    How does google know if a user closes a website when opened from google search?…

    If someone visits Google.com, searches a keyword, clicks on a result, and then closes their browser, Google.com has no way of knowing that the user closed the browser. Google.com can, however, measure “bounce” rate if/when the user returns to Google….

    Reply
  20. 5 Common Bounce Rate Myths Debunked | Tone Agency says:
    September 28, 2012 at 10:06 am

    […] of these actions can be tracked with event tracking, virtual pageviews, scrolling behaviour and time adjusted bounce rate. All of these tracking methods will reduce bounce rate and give you […]

    Reply
  21. Nueva visión en la medición de blogs | Trabajo en una Fábrica says:
    October 17, 2012 at 3:44 am

    […] alcanza el final del artículo y cuándo llega hasta el final de la página. En resumidas cuentas, a través del seguimiento de eventos, medir estas 4 […]

    Reply
  22. The Optimal Text Layout is More Than Line Length » Paul Olyslager says:
    November 9, 2012 at 6:48 am

    […] is your visitors’ engagement with your articles?In a very interesting article titled “Advanced Content Tracking with Google Analytics“, author Justin Cutroni explains how to track the following metrics:How many people […]

    Reply
  23. Increase Customer Retention with Relevant Ideas and Education | Geonexus says:
    November 19, 2012 at 1:14 pm

    […] the articles? You can use Justin Cutroni’s advanced content tracking with Google Analytics (Part 1 and Part 2) to find […]

    Reply
  24. Tips and tools for creating editorial calendars | Freestyle Interactive says:
    February 22, 2013 at 5:48 am

    […] Using Google Analytics’s for for advanced content tracking from Cutroni. […]

    Reply
  25. The Ultimate Resource for Google Analytics | HostGator Web Hosting Blog | Gator Crossing says:
    February 28, 2013 at 1:04 am

    […] “Advanced Content Tracking with Google Analytics: Part 1” – Analytics Talk […]

    Reply
  26. The Ultimate Resource for Google Analytics | Review of top 10 web hosting providers. says:
    March 4, 2013 at 1:01 pm

    […] “Advanced Content Tracking with Google Analytics: Part 1” – Analytics Talk […]

    Reply
  27. News of the Nation » Google Analytics Tips & Tricks From MeasureCamp says:
    March 18, 2013 at 3:07 pm

    […] a new technique – it is reasonably well known but definitely worth sharing and demonstrating. This Script, published by Justin Cutroni, is an enhanced tracking technique on a range of sites including […]

    Reply
  28. ¿Por dónde empezamos con Google Analytics? II | webylitics says:
    March 20, 2013 at 7:00 am

    […] “Advanced Content Tracking with Google Analytics: Part 1” – Analytics Talk. Seguimiento de los segmentos avanzados parte I […]

    Reply
  29. Migrating to Universal Analytics - Analytics Talk says:
    April 3, 2013 at 10:41 am

    […] tracking, that insanely useful feature that you can use to track all sorts of visitor interactions, like reading an article, is supported by Universal […]

    Reply
  30. How To Measure Content Engagement And Effectiveness With Analytics & WordPress says:
    April 5, 2013 at 11:22 am

    […] interested in implementing this type of tracking on a non-WordPress site, check out this article by Justin Cutroni – and this one at Savio.no. They go through setting up the event step by step. If you have […]

    Reply
  31. How To Measure Content Engagement And Effectiveness With Analytics & WordPress | Stop Profiling says:
    April 5, 2013 at 2:14 pm

    […] you’re interested in implementing this type of tracking on a non-WordPress site, check out this article by Justin Cutroni – and this one at Savio.no. They go through setting up the event step by step. If you have […]

    Reply
  32. Foreclosure University » How To Measure Content Engagement And Effectiveness With Analytics & WordPress says:
    April 5, 2013 at 4:48 pm

    […] you’re interested in implementing this type of tracking on a non-WordPress site, check out this article by Justin Cutroni – and this one at Savio.no. They go through setting up the event step by step. If you have […]

    Reply
  33. How To Measure Content Engagement And Effectiveness With Analytics … | Wordpress news and updates says:
    April 6, 2013 at 12:33 am

    […] you’re interested in implementing this type of tracking on a non-WordPress site, check out this article by Justin Cutroni – and this one at Savio.no. They go through setting up the event step by step. If you have […]

    Reply
  34. How To Measure Content Engagement And Effectiveness With Analytics & WordPress : Negocio Multinivel En Mexico says:
    April 6, 2013 at 3:14 am

    […] tracking on a non-WordPress site, check out this article by Justin Cutroni – and this one at Savio.no. They […]

    Reply
  35. Using analytics and wordpress to measure content engagement and effectiveness —  Larry Carillo says:
    April 8, 2013 at 4:13 pm

    […] Analytics is a good tool to use when tracking page engagement.  An article written by Justin Cutroni and one found on Savio.no describe setting up event triggers on a non-WordPress site as a user […]

    Reply
  36. How To Measure Content Engagement And Effectiveness With Analytics … | Ezymagazines says:
    April 16, 2013 at 2:33 am

    […] you’re interested in implementing this type of tracking on a non-WordPress site, check out this article by Justin Cutroni – and this one at Savio.no. They go through setting up the event step by step. If you have […]

    Reply
  37. Why You Need To Understand Google's Obsession With Time To Long Click says:
    April 17, 2013 at 7:52 pm

    […] can gain greater clarity on this by configuring an adjusted bounce rate or something even more advanced that takes into account the amount of time the user spent on the page. In the example above […]

    Reply
  38. An In-Depth Look At Tracking Content Engagement: Part 1 of ??? - Content On The Internet | Content On The Internet says:
    April 23, 2013 at 7:17 pm

    […] has been brought to my attention that Justin Cutroni did something similar last year. To which I say “Neener neener, I figured it out on my own without the help of the […]

    Reply
  39. Tactical event tracking - Analytics for online retailers says:
    May 2, 2013 at 1:00 pm

    […] real skill lies in terms of capturing interactions, but frameworks like jQuery make even tracking complex interactions […]

    Reply
  40. מהו יחס נטישה וכמה זמן הגולש באמת נמצא באתר שלך | AskPavel says:
    May 13, 2013 at 5:59 am

    […] השלישית היא ליצור Event לפי האינטראקציה עם העמוד: למשל האם הגולש גלל לאמצע או סוף העמוד, האם הוא לוחץ עם העכבר על שדה כלשהו בטופס הליד שלכם וכך […]

    Reply
  41. מהו יחס נטישה וכמה זמן הגולש באמת נמצא באתר שלך « בית הספר לשיווק says:
    May 13, 2013 at 11:00 pm

    […] השלישית היא ליצור Event לפי האינטראקציה עם העמוד: למשל האם הגולש גלל לאמצע או סוף העמוד, האם הוא לוחץ עם העכבר על שדה כלשהו בטופס הליד שלכם וכך […]

    Reply
  42. Time To Long Click » Digital Marketing says:
    May 20, 2013 at 11:23 am

    […] can gain greater clarity on this by configuring an adjusted bounce rate or something even more advanced that takes into account the amount of time the user spent on the page. In the example above […]

    Reply
  43. Marketing Analytics | Annotary says:
    June 9, 2013 at 6:40 pm

    […] Publisher More from Lizzie Maldonado: User Experience Miscellaneous Sort Share cutroni.com       0 minutes […]

    Reply
  44. Jot Down, el New York Times y las visitas de 53 minutos | KPIsland.com says:
    June 20, 2013 at 4:27 pm

    […] eventos para medir el consumo de contenido en una web y podríamos saber hasta donde han hecho scroll los visitantes y cuanto han tardado en […]

    Reply
  45. Content Marketing Crash Course: A Monster List of the Best Content Marketing Resources says:
    July 15, 2013 at 7:26 am

    […] Advanced Content Tracking with Google Analytics – is a guide to Google Analytics (GA) written Justin Cutroni with the help of other Google advocates. After reading this, you’ll be able to identify which metrics are worth tracking and the code that can help you track it easily. […]

    Reply
  46. Google Analytics custom reports | shankarsoma : Social Media & Digital Marketing Trainer Blog says:
    July 26, 2013 at 7:57 am

    […] Publisher Dashboard – This advanced tracking setup makes it easy to create a dashboard with deep insights about content engagement. […]

    Reply
  47. How to Use Google Analytics Content Grouping: 4 Business Examples | Internet Marketing | News | Bookmark |Tips says:
    January 24, 2014 at 11:58 pm

    […] google analytics for publishing sites in the posts Custom Variables for Publishers and how to measure how far users scroll down a page. I think both of those techniques still […]

    Reply
  48. The use and uselessness of the bounce rate - Online Optimizers says:
    January 31, 2014 at 7:43 am

    […] Advanced Content Tracking with Google Analytics: Part 1 > Advanced Content Tracking with Google Analytics: Part […]

    Reply
  49. Cheat and Win with Google Tag Manager: Easy Dynamic Content Tracking | Bugdaddy says:
    February 1, 2014 at 4:22 am

    […] scroll tracking events! – from Justin Cutroni’s scroll tracking code, which I adapted for Tag Manager (did the visitor start scrolling through the search results and […]

    Reply
  50. Analyzing Business Blogs Using Google Analytics | Bugdaddy says:
    February 1, 2014 at 4:25 am

    […] like to understand better how your visitors consume content? You can use Justin Cutroni’s advanced content tracking. Among other things, you will learn the following on a per-post and per-blog […]

    Reply
  51. Increase user loyalty with Google Analytics 3 of 6 « « EsheleDEsheleD says:
    February 6, 2014 at 3:07 am

    […] detailed information about how site visitors interact with each page, we suggest you use the ‘event tracking method’ that Google Analytics evangelist Justin Cutroni shared on his blog to get an accurate […]

    Reply
  52. Advanced Content Tracking with Google Analytics says:
    February 12, 2014 at 11:45 am

    […] while ago I wrote Advanced Content Tracking – a post about how to measure if users are actually reading your content. I’ve been […]

    Reply
  53. De zin en onzin van de Bounce Rate - Webanalisten.nl says:
    February 13, 2014 at 3:34 am

    […] Advanced Content Tracking with Google Analytics: Part 1 > Advanced Content Tracking with Google Analytics: Part […]

    Reply
  54. The Ultimate Resource for Google Analytics | Creatively Twisted Designs says:
    February 14, 2014 at 3:09 pm

    […] “Advanced Content Tracking with Google Analytics: Part 1” – Analytics Talk […]

    Reply
  55. Cuatro formas de controlar la tasa de reboteLa Métrica - La Métrica says:
    February 19, 2014 at 4:18 am

    […] Advanced Content Tracking with Google Analytics: Part 1 […]

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

My Books

Google Analytics by Justin Cutroni
Learn More on Amazon.com

Performance Marketing co-authored by Justin Cutroni
Learn More on Amazon.com

Recent Posts

  • Understanding the Google Analytics Cohort Report
  • Using Offline and Online data to drive Google Analytics Remarketing
  • Understanding Cross Device Measurement and the User-ID
  • Universal Analytics: Now out of beta!
  • Advanced Content Tracking with Universal Analytics

Categories

  • About Google Analytics (25)
  • Analysis (52)
  • Analytics Strategy (3)
  • Campaign Tracking (14)
  • Ecommerce (8)
  • Event Tracking (10)
  • Remarketing (2)
  • Reporting (10)
  • Resources (7)
  • Tag Management (5)
  • Tips (25)
  • Tracking (52)
  • Uncategorized (64)
  • Universal Analytics (9)
  • Web Analytics (15)

Copyright © 2023 ·News Pro Theme · Genesis Framework by StudioPress · WordPress