How to Track Video Engagement in Your Website Analytics
Video is one of the most expensive content investments a website can make — production, editing, hosting, and distribution all carry real costs. Yet most analytics setups treat a page with a video exactly the same as a page without one. A visitor who lands on a page, watches your entire explainer video, and then signs up looks identical to one who bounced in five seconds. Without video tracking, you cannot distinguish the two, measure the return on your video investment, or identify which videos actually drive conversions.
What Video Events to Track
Not every player interaction needs to be tracked, but four events give you a complete picture of video engagement.
- Play: The visitor started the video. This is your denominator — the total number of viewers for any engagement calculation.
- 25% / 50% / 75% milestones: Progress checkpoints reveal where viewers drop off. If 80% of viewers reach 25% but only 30% reach 75%, the second half of the video is losing your audience.
- Complete: The visitor watched to the end. Completion rate (completions ÷ plays) is your primary video quality metric.
- Pause or seek: Optional but useful for longer videos — repeated pauses at the same timestamp can indicate confusing content.
Implementation by Player Type
HTML5 native video element
The native <video> element exposes events directly. Add listeners after the player is in the DOM:
const v = document.querySelector('video');
v.addEventListener('play', () => _st('event','video_play','video',v.src));
v.addEventListener('ended', () => _st('event','video_complete','video',v.src));
// Milestone tracking
v.addEventListener('timeupdate', () => {
const pct = Math.floor(v.currentTime / v.duration * 100);
if ([25,50,75].includes(pct) && !v._tracked?.[pct]) {
v._tracked = {...(v._tracked||{}), [pct]:true};
_st('event','video_progress','video',pct+'%');
}
});
YouTube embeds
YouTube uses the IFrame Player API. Enable it by adding ?enablejsapi=1 to your embed URL, then listen for state changes via onStateChange. Fire _st('event','video_play','youtube',videoTitle) when YT.PlayerState.PLAYING is first detected, and track completion when the state becomes YT.PlayerState.ENDED.
Vimeo embeds
Vimeo provides a clean Player SDK. After loading it, create a new Vimeo.Player(iframe) and call player.on('play', ...), player.on('ended', ...), and player.on('timeupdate', ...) using the same custom event pattern above.
Making Sense of the Data
Once events are flowing, look for these patterns in your analytics.
- Completion rate by video: A rate above 60-70% is strong for videos under 3 minutes. For longer videos, 30-40% is respectable. Rates below 20% signal a problem with either the content or the audience fit.
- Play rate by page: How many visitors who load the page actually hit play? A low play rate (under 30%) suggests the thumbnail, placement, or context around the video is not compelling enough to start watching.
- Engagement drop-off milestones: Compare 25% to 50% to 75% event counts. A sharp drop between two milestones points to a specific section of the video that loses viewers. Review the content at that timestamp.
- Video completions and conversion correlation: Use conversion goals alongside video events to see whether viewers who complete videos convert at higher rates. This quantifies the ROI of the video investment.
Measure video engagement alongside all your other data in statpx
statpx custom events capture video plays, milestones, and completions — giving you a full picture of how video content performs on every page.
Start for free →The Bottom Line
Standard pageview analytics is blind to what happens inside a video. Tracking play events, completion rates, and progress milestones turns your video content from a black box into a measurable asset. You will know which videos actually engage viewers long enough to influence their decisions, which are ignored despite being embedded prominently, and where each video loses its audience. That data directly informs production priorities, placement decisions, and content length — making every subsequent video investment more defensible.