September 25, 2026

Video analytics in WordPress: what an event counter cannot tell you

Hema Gowtham  R
Hema Gowtham R
Software Engineer

A WordPress video view count is a JavaScript event that fired in somebody's browser and survived the trip to a collector. Three things routinely stop it arriving: a content blocker that knows the destination, a consent banner the viewer declined, a tab closed before the request finished. Whatever made it through is the number on the dashboard.

Missing events are not a plugin defect. They are what the number is made of.

Three consequences follow. The same video reports different totals in two tools. A drop-off cliff can mean a bad script or a failed rendition switch. And "the LMS says they finished it" turns out to be a weaker claim than it sounds.

TL;DR

Almost every WordPress video metric starts as a browser event. Browser events lose data to content blockers, consent refusals and closed tabs, and the loss is not even.

No two tools define a view the same way. Comparing your number to a benchmark, or to another tool, means nothing without both definitions. A cliff at a fixed timestamp is usually delivery, not content, and you cannot tell which without playback quality data from the same session. Only signals the server sees can be checked later, which matters the moment a number drives a certificate, a payout or a refund.

Where video analytics data actually comes from

Almost every video metric on a WordPress site starts life as a JavaScript event in the viewer's browser. The player fires on play, on pause, at timecode intervals, on ended, and something sends those to a collector.

Where the data starts decides what you can trust it for. Three losses are built in rather than bugs.

Blocked requests. Blockers filter by destination, so a beacon sent to a known analytics host gets dropped while one sent to the same host as the video usually does not. What you lose is not a random sample. Blockers are more common among technical viewers and on desktop, so one kind of viewer goes missing more than the rest.

Consent. If consent is required and the viewer refuses, the events should never fire at all. A site with a working consent banner measures only the viewers who opted in, so the reported total is that group and not the audience.

Closed tabs. A viewer who closes the tab mid-video may never send the final event, because the page unloads before the request goes out. Reloads cause the opposite error, firing a second play event for one viewing.

None of that makes browser events useless. It makes them a rough signal about behaviour rather than a record of what happened. That difference matters the moment a number has consequences. What is server-side analytics and tracking covers the other collection model.

Why nobody agrees on what a view is

There is no shared definition, and most tools do not publish theirs. The same thousand page loads give very different headline numbers, depending on where the tool draws the line.

What counts as a view in video analytics?
DefinitionCounts a view whenTends to over-reportTends to under-report
Play clickThe viewer clicks playAccidental clicks, immediate bouncesAutoplay, which never involves a click
Player loadThe player initialises on the pageEvery scroll past an embedNothing
First frameA frame is paintedVery littleViewers who abandon during startup
Fixed threshold, 3sPlayback passes three secondsLittleShort clips where 3s is most of the video
Percentage watchedA share of duration is reachedLittleLong videos sampled deliberately

Two things follow from that. Comparing your view count to a published benchmark means nothing unless both use the same definition. And switching tools makes your numbers jump without your audience changing at all.

Write down the definition your tool uses. If it does not publish one, treat the number itself as unusable and watch only the trend. Audience measurement: metrics and insights covers the wider set of definitions worth pinning down.

Drop-off tells you nothing without delivery data

A retention curve is the most quoted video metric and the most often misread. Two very different causes draw curves that look alike in a dashboard.

How do you tell a content problem from a delivery problem in a video retention curve?

A content problem draws a slope. People lose interest at different moments, so the curve falls raggedly across a section. A delivery problem produces a cliff. Playback stalls, a rendition switch fails, or startup takes too long. Viewers leave at nearly the same second, because the same thing happened to all of them.

To tell them apart you need one thing most WordPress analytics plugins never collect: what playback was doing at that moment. Without stalls, errors and startup time recorded next to the drop, a cliff at 0:09 on mobile has no cause you can name. You can rewrite a script that was fine, or buy bandwidth for a script problem, and the dashboard will back either decision.

Video QoE metrics for streaming products sets out the measurements that close that gap. QoS vs QoE in video streaming separates the two families.

That is the practical argument for measuring playback where playback happens. FastPix Video Data records playback quality alongside engagement for the same session. The WordPress plugin shows both in wp-admin from a local daily rollup, rather than calling out to an API while the page renders. The metric list is not the point, because most tools now match it. The point is that both halves come from one session, so you can say what caused the cliff.

This is worth checking against your own worst video rather than taking on trust. Video Data is free for the first 100,000 session plays a month, and it works on any player. Point it at one existing embed and split a known drop-off by device. Start here, no card required.

The metrics you can audit, and the ones you cannot

Auditable means you can rebuild the number from a record the viewer does not control. That rarely matters for a marketing video. It matters a great deal the moment a number drives a certificate, a payout or a refund.

SignalOriginAuditableSafe to use for
Play clickBrowser eventNoTrend, relative comparison
Percentage watchedBrowser timecode beatsNo, unless stored server-sideEngagement analysis
Session countBrowser beaconNoTrend
Playback requestServer, signed tokenYesBilling, entitlement
Delivery volumeServer or CDN logYesCost, capacity
Recorded progressServer-stored beatsYes, if written server-sideResume, and completion with a caveat
Enforced completionServer re-reads the thresholdYesCredit, certification

The last row is the one to build toward if video decides anything. A browser saying "this lesson is complete" can be replayed, and a dragged scrubber ends in the same state as watching. Completion only becomes evidence when the server holds the threshold and re-reads it from the lesson instead of trusting what the browser sent. It also has to ignore progress for videos that are not embedded in that lesson. That makes skip-proof completion the only metric in the table that changes what the LMS does. The Moodle equivalent is worked through in how to track and grade video completion.

What to fix before buying another analytics plugin

Most sites do not have a tooling problem. They have four unanswered questions about what they measure, and no plugin answers them.

  1. Write down your view definition. Find it in the tool's docs. If it is not published, ask. Record it next to the dashboard, so the next person does not compare it to something else.
  2. Measure your collection loss. Count playback requests on the server, then compare that to your tool's session count for the same period. The gap is your blocked, refused and dropped traffic. Knowing whether it is 5 percent or 40 percent changes how you read everything else.
  3. Decide which numbers have consequences. Anything feeding a certificate, a payout or a refund needs a server-side origin. Everything else can stay rough. Treating both the same way is how a course business ends up defending a browser event.
  4. Check drop-off against device and connection. Before rewriting content on the strength of a retention curve, split it by device class. A cliff on one class and not another is a delivery problem wearing a content problem's clothes. How to monitor and debug video playback issues across devices covers the next step once you find one.

See engagement and playback quality for the same session with FastPix Video Data

If a retention cliff has ever cost you a rewrite that did not help, the fix is one dataset rather than one more plugin. FastPix Video Data records playback quality and engagement for the same session, across 56 dimensions, on any player rather than only its own. The WordPress plugin reads both into wp-admin as a daily rollup with a device filter. The first 100,000 session plays a month are free, with no card required. Start with one video that has an unexplained drop, split it by device, and see whether the cliff survives.

Frequently Asked Questions (FAQs)

Why do two analytics tools report different video view counts?

They define a view differently and lose different amounts of data. One counts a play click, another the first frame, another three seconds of playback. Each also loses a different share of events to ad blockers, consent refusals and abandoned loads, so the gap is usually definitional rather than a bug.

What is a view in video analytics?

There is no agreed definition. Common ones are a click on play, the first frame rendered, a fixed threshold such as three seconds, or a percentage of duration. A figure quoted without its definition cannot be compared with another tool's figure. Audience measurement covers the wider set of definitions worth pinning down.

Do ad blockers affect video analytics?

Yes, unevenly. Blockers filter by request destination, so a beacon to a known analytics domain is blocked while one to the video's own origin often is not. Blocker use skews technical and desktop, so the missing sessions are a specific slice rather than a uniform sample. Server-side analytics is the collection model that survives this.

Can video completion be used as proof a lesson was watched?

Only if the threshold is enforced on the server. A browser-fired completion can be replayed, and a dragged scrubber reaches the same end state as watching. Enforcement means the server re-reads the required threshold from the lesson and rejects beats for videos not embedded in it. The Moodle version is in how to track and grade video completion.

Why does everyone drop off at the same timestamp?

A cliff at a fixed timestamp is usually delivery, not content. Content problems produce a gradual slope because people lose interest at different moments. A sharp cliff, especially concentrated on one device class, points at a stall, a failed rendition switch or a playback error. Video QoE metrics gives the measurements that tell them apart.

What video metrics can actually be audited?

Only the ones reconstructable from a record the viewer's browser does not control: server-observed delivery, signed playback requests, and server-recorded progress. A browser event never stored in a replayable form cannot be audited, which matters when a number affects a certificate, a payout or a refund.

Does Google Analytics track video plays on WordPress?

It can, through events fired by the player or by a plugin that wires them up. Those are browser events, so they carry the same collection losses as any other beacon, and Google Analytics has no visibility into playback quality, stalls or errors.

How many views should I expect on a course video?

There is no benchmark worth quoting, because published figures rarely state their view definition or their collection loss. Compare a video against your own library on a consistent definition instead, and treat cross-tool or cross-industry comparisons as directional only.

Share

Stay Ahead of Video
Streaming Trends

Start shipping video today.