How to Identify if Visitors are Reading Your Articles with Google Analytics

One question I often get from webmasters running content websites is:

Do people read my articles, and is it possible to identify this with Google Analytics?

This boy is not reading your content
Not all visitors are reading your articles, but more visitors are maybe reading than you think. Image by Federico Scotto d'Antuono.

If you have high bounce rate and lots of single page visits, is it really so that all these visitors didn't find any value in your content? This can be true, but sometimes these visitors did read and found value in our content, but we can't identify it from a standard setup in Google Analytics.

"What if we have a low bounce rate, wouldn't time spent indicate how visitors are interacting with our content?" you may ask then. My answer would be "it depends, but a standard setup in Google Analytics would not measure interaction on the last page the visitor visited".

In this article I will dive into how you can use Google Analytics to identify if visitors are reading your articles.

Is "real" Bounce Rate a possible metric to use?

I have looked at a couple of methods to try to get an better understanding of how visitors interact with my content. For example, a solution called The Real Bounce Rate in Google Analytics is trying to get a better picture of the bounce rate.

Unless you write very short articles I would normally not recommend it (I will explain why later), since this solution doesn't tell a story about the behaviour to the visitor. In my optinion, The Real Bounce Rate solution doesn't answer if visitors are reading your content because it doesn't measure interaction.

When I was researching for a solution to measure if visitors are reading my content, I used Google and searched for terms that I assumed could be an answer. On the search result page (SERP) I got several listings that perhaps could be the solution I was looking for, but since I weren't sure I opened up several of the pages I found in different tabs in my browser.

I found what I was looking for, but my visits to all the pages were a bounce. If all those other pages where using The Real Bounce Rate solution they would see my visit as a non-bounce, which it wasn't. However, I found only value in one of the results, and I read that article from top to bottom.

My visit to that article was a bounce using standard measuring, but the Google Analytics tracking solution on that page would identify me as someone that did read the content.

The solution - if I have to scroll to read your content

The answer I found was an article called Tracking scroll depth to reveal content engagement in Google Analytics, so I implemented this to test the solution. In short what this solution is doing is to track if the visitor scrolls down 90 % of the page, and if the visitor does that a javascript kicks off an Event in Google Analytics.

After a couple of days I found that one piece of the puzzle was missing with this method, namely time used from the page loaded to the visitor had scrolled down 90 % of the page. Although it's possible to get a feeling of this from other reports in Google Analytics (but these numbers will not be the same since they also includes "normal" time spent), I wanted to spot this information easy.

Although the number of seconds isn't a perfect metric, it can give you a clue about the interaction with your content. Did the visitor just scroll quickly down your page, or did he use some time?

  • Using long time can be an indication of that the visitor is in fact reading your content.
  • Using short time can be an indication of that the visitor is just scanning your content (I especially find short scroll time on category pages).

Google Analytics Event Tracking - Scroll Down Report

Scroll down report using Google Analytics Events. Event Value is scroll time measured in seconds.

Below you find the code. It's identical to the code found in the original article Tracking scroll depth to reveal content engagement in Google Analytics except from 3 differences:

  1. The script is measuring time spent from the page loads to the visitor has scrolled 90 % of the page (this difference in coding is highlighted with red text).
  2. "My" code is using the newest Google Analytics Asynchronous code.
  3. I am tracking scroll to a different Google Analytics profile than my main profile (called secondTracker in the code below, and highlighted with green text). The reason for this is that this script will affect both bounce rate and time spent, and tracking to 2 different profiles gives me the opportunity to compare data.
    • Add a new Google Analytics profile (Add a profile for a new domain).
    • See this page for information about how to send information to multiple trackers.

Remove formatting from Code

  1. <script src=""  type="text/javascript"></script>
  2. /* <![CDATA[ */
  3. var scrollTimeStart = new Date;
  4. var IsDuplicateScrollEvent = 0;
  6. $(document).ready(function () {
  7. SetupGoogleAnalyticsTrackEvents();
  8. });
  10. function SetupGoogleAnalyticsTrackEvents()
  11. {
  12. TrackEventsForMinimumPageScroll();
  13. }
  15. function TrackEventsForMinimumPageScroll()
  16. {
  17. $(window).scroll(function(){
  18. var scrollPercent = GetScrollPercent();
  19. if(scrollPercent > 90)
  20. {
  21. if(IsDuplicateScrollEvent == 0)
  22. {
  23. IsDuplicateScrollEvent = 1;
  24. // alert("Page Scrolled to 90% in " + document.location.href);
  25. var scrollTime = (new Date - scrollTimeStart )/1000;
  26. var roundTimeScroll = Math.round(scrollTime,1);
  27. TrackEvent("Content Engagement", "Scrolled To 90%", document.location.href, roundTimeScroll);
  28. }
  29. }
  30. });
  31. }
  33. function GetScrollPercent()
  34. {
  35. var bottom = $(window).height() + $(window).scrollTop();
  36. var height = $(document).height();
  37. return Math.round(100*bottom/height);
  38. }
  40. function TrackEvent(Category, Action, Label, Value)
  41. {
  42. _gaq.push(['secondTracker._trackEvent', Category, Action, Label, Value]);
  43. /* ]]> */

If you don't want to copy + paste the code, just download the script (ZIP-file).

Possible drawbacks with this method

  • If you write short articles, and a visitor don't have to scroll to read your complete article, this method will not work. In these cases using the "real" bounce rate solution can be something to look into. I would however in these situations use the "real bounce rate solution from Immeria, it's a little bit more sophisticated.
  • Screen resolution can affect if the reader must scroll or not to read your complete article.
  • This method is only based on quantity data, not quality, so you can really not now if the visitor did read your article even if he used some time to scroll down. However, based on my experience, it can be an indicator.
  • If you are running the Prototype Javascript Framework on your site the prototype script may not function properly.

I did also fear that screen height would affect time spent when scrolling down the page. A visitor with a high screen resolution will not have to scroll as much as a visitor with low screen resolution. Because of this I have checked if I could find correlation between screen height and time spent scrolling.

  • Hypothesis: Screen height should afffect the time.
    • I have checked this on different levels and for different articles, and I did not find any correlation.

Even if I didn't find any correlation, I recommend that you check this yourself also since my articles isn't your articles.

What do you think about this method for trying to identify if visitors are reading your content? Have you found other methods useful in measuring this?

Some final words

If you look around on my site you have probably noticed that everything else is written in Norwegian. Since this blog normally is in Norwegian, and I haven't had time to implement a multilingual blog system, you find some explanations of how to comment below:

Click "Legg til kommentar" below. Than fill out your name (Navn), e-mail (Epost) and your website (Ditt nettsted) if you have a website. HTML formatting doesn't work in my comment field, use BBCode formatting instead. You can drag the comment field around if you want to. If you want to preview what you have written, click on "Forhåndsvis". When you are done and want to save your comment, click on "Lagre". If you haven't had any comments approved on this blog before, I will have to approve your comment manually.

Related articles

Du kan følge kommentarer til denne posten med RSS. Du må ha javascript aktivert for å kunne kommentere. Tilbaketråkk er deaktivert.

Tags : ,

  • Comments are closed
For a passive way to obtain usage feedback I found this very clever. It has sense.

About your hypothesis I'm not surprised at all. Take the simple approach: screen resolution has nothing to do with the reading speed of the visitor.

If the guy/gal is reading, then is going at his/her pace pretty much orthogonally to the resolution, monitor or even font size (that if the content is in more or less in usual parameters, ex: not reading it from a projector or unoptimal layout for cel phone etc).

I just though is worth mentioning that good old comments (read engagement) is waaaaaaaaaaaay more interesting metric to use.

From that metric you can extract things like:
who you are talking to
how much relevant it was
what would be a wise next thing to do for the audience
etc etc
I totally agree with you Sebastian, and thank you for your comment. Comments and other form for qualitative feedback is much more valuable.

In fact, I will release a solution hopefully in a couple of weeks that make it easier to collect this type of feedback directly in Google Analytics.
  • Fredrik
  • 5/27/2011 7:24:06 PM

So... Did you publish that article on how to measure user qualitative feedback in analytics?

Good article btw! :)
Hi Fredrik

Thanks for your feedback.

Not sure if I remember the "qualitative feedback part". When did I say that? Smil

I have written a couple of articles regarding my feedback form for Google Analytics. Is the answer in those?

XClick to move the comment field