"Watch time report" possible with Snowplow?

Hello, I was wondering if it is possible to create something similar to" watch time reports" (https://support.google.com/youtube/answer/1714329?hl=en) for videos on pages to track

Specifically we are looking to track:

  • impressions (possibly different from page impression if video is below fold)
  • views/plays
  • avg view duration
  • % viewers completely watched video

Yes - this is certainly possible depending on how you’ve instrumented things.

Depending on what video player you are using there is likely call backs for

  • viewable (impressions)
  • plays
  • progress (beacons or at every N interval seconds)
  • video completion

If you have these metrics instrumented it should be trivial to then generate reports to calculate the values you’ve mentioned.

1 Like

Thanks for the reply!

How would one instrument such a thing? I’ve never used snowplow before and couldn’t find any examples online

You’d want to use the trackSelfDescribingEvent method of the Snowplow Javascript tracker which will send data to the collector you have set up.

The exact instrumentation will differ depending on what video player you are using but the most common ones (Youtube, Vimeo, Brightcove, JW Player etc) should implement some event listeners that you can bind to and trigger these events.

1 Like

Oh, I was referring to instrumentation of Snowplow. Javascript will be the no-brainer part of this.

The main docs just talk about page activity with enableActivityTracking and updatePageActivity which I’m guessing handles a lot of stuff for you?

I guess the best course for me would be to inspect those events it sends for page tracking and try to mimic data with trackSelfDescribingEvent? Time on page schema ~ Time watched video schema

Thanks for your replies, I think I have enough to go on to give Snowplow a run and will ask questions (with specific problems/questions) when I cross that bridge

These handle page pings - which are more to do with on page activity rather than video activity specifically. I’d recommend creating a new schema to handle video activity / video pings directly but you could use a similar basis for that depending on what you consider activity vs inactivity.