Home » Google Analytics » Video Tracking (The Right Way) for Google Analytics

Video Tracking (The Right Way) for Google Analytics

Google Analytics has advanced video tracking capabilities that even the biggest media companies can leverage, however, almost no one knows this. There are limited resources on video-centric solutions. Worse, almost all current implementations are outdated and do not take advantage of core features like custom metrics and calculated metrics. Another problem is with the so called integrations provided by companies like Brightcove. Brightcove’s ‘integration‘ has this great callout:

If you already have a account in Google Analytics created for your web site to track page views, we highly recommend that you create a new account for the same web site that you will use for tracking Video Cloud data only. If you don’t, then you need to be sure that you understand the effect that video player interactions can have on items like the bounce rate.

By separating video data into a new account you are unable to understand something as simple as how many users who watch a video convert. My intent with this post is to showcase Google Analytics’ capabilities and provide a reference point for getting video platforms to update their integrations. If you have code access to your video player on your site, you will be able to do everything in this post!

Questions You Should Be Able To Answer

Using your current tracking can you you answer any of these questions today?

  • What is the average amount of playtime watched per user or per video?
  • Do you track a video start differently from a play after a pause?
  • Do different countries/regions/devices engage with video differently?

These are all questions that you should be able to answer. Working at Analytics Pros, we have completely rebuilt vendor video analytics integrations for a number of media-driven companies. We have tracked media on almost every device including Xbox, Apple TV’s, and LG Smart TVs. The solutions below have been implemented across web, mobile apps, and connected devices and provide sophisticated analytical capabilities.

Current Video Tracking Reports

Lets start by taking a look at what your current video tracking likely looks like in Google Analytics.

Video Tracking in Google Analytics

This is the most common type of integration provided by most video platforms. It provides data on what videos are being watched and provides insight into what percentages of videos are being watched. The problem is this provides no insight into how much time of video is being consumed and often times has many underlying implementation issues. For example, most solutions I have reviewed are unable to distinguish a video start from a play that occurs after a pause.

Proper Video Tracking Reports

Below is a series of reports of what your video tracking should look like. At the very end, I include examples of dataLayer pushes for Google Tag Manager that drive all of these reports. I am going to use Major League Soccer (who I would love to work with) as my example. Major League Soccer provides their users the ability to livestream games, as well as watch videos that are hosted on their site and apps.

Here is what their dashboard for video should look like in Google Analytics:

What makes this dashboard different is that it features video playtime as metric. Using this we can produce reports that center on video playtime. We can add video playtime to provide insights into which traffic sources, countries, or devices consume the most video in aggregate or average. We can also provide insight into how often videos are stuck buffering and what bitrates users are being served.

Livestream is also something that is often viewed as challenging to track in Google Analytics. Again, the video playtime metric makes it look easy. Video playtime is a custom metric that is passed with how many seconds of the stream a user watched. The most important addition here though is the stream minute that we showcase in the reports below. Using the stream minute we can report for any livestream what minute during that stream had the most active users.  I pulled the data from the Google Analytics API through the Google Sheets connector and created a visualization of the video by this stream minute to provide a minute by minute active user view. The visual below shows an example of what a soccer game being livestreamed might look like. You can see that active users peaked right before half-time and again at the end of the match.

2016-04-13_1645 2016-04-13_1700

Implementation Specifics

To make all this happen you need to implement solid eventing in your video platform. Here are some examples of our dataLayer pushes that power everything in Google Analytics:

Video OnDemand – Start

dataLayer.push({
     'event': 'video-on-demand-start', //do not fire for play after pause
     'video-id': '<video ID>',
     'video-name': '<video name>',
     'video-bitrate': '<video bitrate>',
     'video-autoplay': '<true or false>',
     'video-platform': '<Flash or HTML5>'
});

Video OnDemand – Compete

dataLayer.push({
     'event': 'video-on-demand-complete',
     'video-id': '<video ID>',
     'video-name': '<video name>',
     'video-bitrate': '<video bitrate>',
     'video-autoplay': '<true or false>',
     'video-platform': '<Flash or HTML5>'
});

Video OnDemand – Duration

dataLayer.push({
     'event': 'video-on-demand-duration', //pass for every 15 seconds of playtime consumed
     'on-demand-seconds-watched': '<seconds watched>',
     'video-id': '<video ID>',
     'video-name': '<video name>',
     'video-bitrate': '<video bitrate>',
     'video-autoplay': '<true or false>',
     'video-platform': '<Flash or HTML5>'
});

Video Livestream – Duration

dataLayer.push({
     'event': 'video-livestream-duration', //pass for every 15 seconds of playtime consumed
     'minutes-from-start': '<minute>', //what minute into the livestream from start are they at
     'livestream-seconds-watched': '<seconds watched>',
     'video-id': '<video ID>',
     'video-name': '<video name>',
     'video-bitrate': '<video bitrate>',
     'video-autoplay': '<true or false>',
     'video-platform': '<Flash or HTML5>'
});

These dataLayer pushes need to be combined with Custom Metrics, Custom Dimensions, and Calculated Metrics in Google Analytics to power all of the reports built above. Below are what the foundation of these should look like:

Custom Dimensions in Google Analytics

2016-04-14_0953

Custom Metrics in Google Analytics

2016-04-14_0956

Calculated Metrics in Google Analytics

2016-04-14_1000

This post provides a solid foundation to build on. My hope is that this can be referenced to push providers like Brightcove to create better integrations. If you need any help with your video tracking needs, please contact me over at Analytics Pros.

9 thoughts on “Video Tracking (The Right Way) for Google Analytics

  1. Hi Charles,

    Thank you for sharing the above techniques.
    I am also working on a video tracking and i do see that user behavior can vary which may affect how you would consider certain piece of the tracking hence affecting your reports:

    1. After for example 20 secs in the video, the user decides to go back to 0 sec, would you consider that as a brand new START?

    2. The user is 10 secs in and decides to skip to 1 min, what would be the amount of time spent on the video? 1 min or the actual time s/he is on which is then 10 secs.

    Thank you
    Jerome

  2. Hi Jerome,

    I would treat it as a rewind type of video action. Whether you want to treat that as a fresh start is totally up to you. For #2, I would record 10 seconds. You do not want rewinds to erase time or fast forwards to accelerate it.

  3. Hi Charles. Awesome post man.

    Regarding the use of one property to video tracking, to consolidate the audience (sessions, pageviews, source) with the video audience, is recommended a big query platform to consulting these info aggregated?

    Thanks.

    1. No! You should track video in the same property you track the rest of your website or app. This way you have views inside of Google Analytics where it is natively aggregrated together.

  4. Thank you for sharing. Interesting. Please not there is a typo. “Video OnDemand – Compete” should be “Video OnDemand – Complete”.

  5. I’m new to google analytics and trying to understand how to calculate average time. Could you please explain your calculated metric?
    As far as I can understand, analytics gets constantly incremented view time data, so it’s value becomes too high even for short views. How do you average it?

  6. This is a great guide but I fail to achieve the following, every 15 seconds I send a progress event, however the total playtime for this progress event (label) doesnt get incremented correctly. Any idea what I could be doing wrong?

  7. Great article. Is it possible to pass the length of the video to Analytics, so we can calculate the average percentage watched? Our videos vary in length, so this would be very useful.

    Thanks,

    John.

Leave a Reply

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