Video Completion Tracking in Mixpanel

  • 4 January 2021
  • 3 replies

Thanks for looking at this, I am new to mixpanel, and I am feeling a little confused and disoriented when it comes to video tracking.

Our app contains courses with lessons, some of which are video lessons. I am trying to figure out how to setup proper video tracking, here is what was previously implemented.

  • video_lesson_viewed
  • video_lesson_play
  • video_lesson_pause
  • video_marked_complete
  • video_favorited
  • video_start_download
  • Video_complete_download

Does it not make more sense to have an event called lesson_viewed with a property for “Lesson Type” set to video? Or do I keep it as it is and send a new event called pdf_lesson_viewed?


Another question I have, is ho can I cross reference a video_lesson_play event against a video_marked_complete by one of the properties. I know I can use a filter to check on a specific video, but if I wanted to check the percentage of video_lesson_play’s that are marked_complete but only where the property “lesson title” is identical in both. Is there any report that can display something like that? and if not, what data do I actually get out of these events.


Any guidance on this topic is welcome much appreciated. Thanks!

3 replies

Userlevel 3
Badge +1

I am generally in favor of generic events as far as possible with specifics differentiated by a property. So, in your case lesson_viewed with Lesson Type property makes sense to me.

At the same time you may want to send other different kinds of events for different  types of lessons. So, video play/pause/completed etc. may still make sense to send as events. 

For the second question you may want to include a video id property in all video related events and then create a funnel of video_play to video_complete while keeping the video id property constant. The conversion rate of the funnel will give you the completion rate for videos.

Aside - with videos you may also want to send intermediate events at specific completion points (10%, 25%, 50%, 75% etc.)

Userlevel 2
Badge +2

I am of opinion that you should keep the events at minimum and capture as much information as possible in event properties. Here is how I would have stored video interaction in Mixpanel.
Event Name - Video Watched,
action_type : possible values → play, paused, start, end
percentage_watched → 0% , 20%, 40%, 60% 80%, 100%. Percentages depends on how much granular data you want.
video_name → title of the video being watch.

Now this one event alone captures four different video interaction of user.
1- User starts to watch the video, action_type = start/ percentage_watched = 0%
2- User is watching the video, action_type = play, percentage_watched = 20 to 80%
3- user pause the video, action_type = paused, percentage_watched = % on which video paused

4- User watched the video completely, action_type = end, percentage_watched = 100%

You can breakdown by video_name property to also see individual video performances to answer questions such as where do user pause the most, or which video has the best complete rate etc.



Userlevel 5
Badge +3

@Muffaddal Qutbuddin  & @Jaya It’s so helpful to hear both of your approaches here! Thank you so much for sharing your thoughts :)