I've been trying to find a way to detect when a user reads the full article on my blog so I can compare impressions verses actual reads (a bit like Medium does). Does anyone know of a plugin that does this (I've searched and cannot find any), or a way to detect this using Google Analytics as an event or something? Thanks for your help!


Haven't seen a plugin that does this, since each theme would differ. But for a custom solution that would work with Google Analytics events see #9 here: https://searchenginewatch.com/sew/how-to/2287906/10-google-analytics-custom-events-that-track-the-untrackable

OP also found this more specific article: http://cutroni.com/blog/2014/02/12/advanced-content-tracking-with-universal-analytics/

(These are in comments above, just posted to make it faster for those looking for something similar to find an accepted answer.)


First off, I know of no out of the box plugin that does this.

However, I can break the problem into small pieces for you to potentially solve.

  1. Formulate how long it will take to read the article, we can do this based on word count. According to statistics derived from Google, the Average user reads 200 Words Per Minute. Countable is a great javascript library that can detect word count. https://github.com/RadLikeWhoa/Countable

The word count divided by the average reader's speed will yield you a figure to convert into milliseconds, for the next step.

  1. Fire an event using window.setTimeout(), where the time for that event is made up by the figure you calculated in step 1. This event will fire any sort of notifications or database interactions to track that the user has read the article.

  2. As a sort of backup protection against users just staying on the page make sure to detect and measure scroll depth. Check this out http://scrolldepth.parsnip.io/. You only want to fire the event from step 2 when a user has achieved a specific scroll depth.

  • maybe it should be combinated with a scroll event when the bottom-of-view is reached because maybe time goes by without reading but looking at ads or something – Thomas Fellinger Feb 20 '18 at 21:45
  • Time on page isn't a very reliable indicator. Rather than combining with scrolling, firing several events to determine who has hit the top of the content and who has hit the bottom of the content (by scroll depth, fixed to specific elements on the page, so no matter whether they're on a tiny phone where they have to scroll forever or a huge desktop where it all fits on one screen) you can more accurately tell who has at least skimmed the articles. – WebElaine Feb 22 '18 at 14:28

Not the answer you're looking for? Browse other questions tagged or ask your own question.