If you run a training program or an academy, someone upstairs wants proof it worked. You can show completion, but not whether learners passed, got certified, or came back for the next course, and you cannot say which cohort or instructor produced the result. Most teams stop measuring after the first week and never connect the training to the result. FastPix Video Data gives you the engagement half of the picture, and joined to your pass, certificate and renewal records it becomes an outcome and ROI dashboard.
The finished outcome dashboard, built from the sample export below. Every number comes from running this article's code on that file.
Proving a program works is not one number. Completion says who finished, not who passed; a pass rate says nothing about which instructor drove it or whether learners came back. This dashboard connects three things the research on training effectiveness always asks for, a baseline, the engagement in between, and the business outcome, the way you would build any analytics view into your product, into one view: a funnel from enrolled to renewed, an instructor scorecard, and the link between video engagement and who passes and renews.
Why this is hard in video, and what Video Data gives you
Proving a program worked is harder with video than with a test. A test hands you a pass or a fail. A video hands you a play: you can show that learners opened the material, but not how engaged they were, which cohort or instructor drove the result, or whether the engaged learners are the ones who came back. That gap is why most teams can report completion but not impact.
Building the join yourself is not a feature, it is an analytics stack: a beacon in every player, a collection endpoint, sessionization, storage, and the work of tying engagement to your pass, certificate and billing records. That is months of engineering with nothing to do with teaching, which is why most programs stop at a completion percentage. If you have to defend renewals or ROI upstairs, that gap is exactly what leaves you without the proof.
FastPix Video Data is that stack as infrastructure. It is first-party data you own, captured from inside the player: how much of the program each learner watched, how consistently they showed up, and how far they got, across more than fifty fields per view, ten of them yours to define (the docs list every field). You add a line to your player and read one clean row per view. There is no pipeline to build or run, and the data lands in your own product, joined to your outcomes, under your brand.
Video Data supplies the exact engagement signal. The outcome, the pass, the certificate, the renewal, the sale, lives in your LMS and billing, joined on the learner ID. Here is each signal, what it tells you, and the decision it informs.
| What Video Data captures | What it tells you | The decision it informs |
|---|---|---|
| Per-learner completion and consistency | Who is engaged enough to finish and pass | Who to intervene with now |
| Engagement by cohort | Which cohorts are on track | Which cohort to support |
| Engagement by instructor | Which teaching actually lands | Who to coach, whose approach to spread |
| Funnel stage conversion | Where the program leaks learners | Which stage to fix first |
| Engagement to renewal link | Who is likely to come back | Where to focus retention and upsell |
None of these is the outcome itself. They are the engagement that comes before it, joined to the result so you can show the connection and act on it early.
Get view data flowing from your player
Playback happens in your player. FastPix Video Data captures every interaction from inside it: it dedupes the beacons, stitches events into sessions, adds geo and device data, and computes quality scores, across millions of concurrent views when you need it. What you export is one clean row per view, tagged with the learner, cohort and instructor, which you roll up per learner for this dashboard.
You do not need to switch players to get this. FastPix Video Data works with the players you already run, hls.js, Shaka Player and Video.js on the web, and native AVPlayer on iOS and Media3 on Android, through the monitoring SDKs, or you can use the FastPix Player and get it built in. Either way, installation is a snippet per surface, and data is flowing in about thirty minutes.
Step 1: Add the player, or add monitoring to the one you have
<!-- FastPix Player -->
<script src="https://unpkg.com/@fastpix/[email protected]/dist/player.js"></script>
<fastpix-player playback-id="YOUR_PLAYBACK_ID" stream-type="on-demand"></fastpix-player>Step 2: Tag each view with cohort and instructor
fastpixMetrix.tracker(videoElement, {
hlsjs: hls, Hls: Hls,
data: {
workspace_id: "YOUR_WORKSPACE_KEY",
viewer_id: learner.id,
custom_1: learner.cohort, // which cohort
custom_2: course.instructor, // who taught it
},
});Step 3: Export and join the outcomes
Export from the Video Data dashboard (Views → Export CSV) or the export API, then roll up per learner and join your outcome records. This article's sample is already at the learner grain: learner_id, cohort, instructor, engagement_score (rolled up from video), completed, certified, renewed and exam_pct. The first columns come from Video Data; certified, renewed and exam_pct come from your LMS and billing, joined on the learner ID.
If your renewal column is blank for a whole cohort, the join key is usually the problem: billing often keys on account or email, not the learner ID Video Data uses. Map the two before you trust the funnel.
Build the funnel, the scorecard, and the link
The stack is chdb (embedded ClickHouse, pip install chdb) with pandas.
Step 4: Load the learner table
import chdb, pandas as pd, numpy as np
d = chdb.query("""
SELECT learner_id, cohort, instructor, engagement_score,
completed, certified, renewed, exam_pct
FROM file('program-analytics-sample-synthetic.csv', CSVWithNames)""", "DataFrame")Step 5: The enrolled-to-renewed funnel
N = len(d)
for stage in ["completed", "certified", "renewed"]:
print(stage, int(d[stage].sum()), f"{d[stage].mean():.0%}")On the sample: 120 enrolled, 44 completed (37%), 35 certified (29%), 31 renewed (26%). The largest drop is enrolled to completed, where more than half the cohort stalls. That is the stage worth the most attention, and it is the stage video engagement predicts.
Start using FastPix for free. $25 credit, no credit card required. Build this on your own cohorts this week. Create your workspace →
Step 6: The instructor scorecard
d.groupby("instructor").agg(
completion=("completed","mean"), pass_rate=("certified","mean"),
renewal=("renewed","mean"), exam=("exam_pct","mean"))Same syllabus, different results. On the sample, the strongest instructor certifies 47% of learners while the weakest certifies 13%. One instructor posts the highest average exam score but one of the lowest completion rates, few of their learners finish, but the ones who do score well, which is a retention problem, not a teaching one. The scorecard tells you who to coach and who to learn from.
If a cohort has only a handful of learners, its pass-rate percentage swings on a single result. Show the learner count next to the rate for small cohorts, or the scorecard will read as noise.
Step 7: Does engagement predict the outcome?
r = np.corrcoef(d.engagement_score, d.exam_pct)[0,1] # r = 0.67 on the sample
d["tier"] = pd.qcut(d.engagement_score, 3, labels=["Low","Mid","High"])
d.groupby("tier").certified.mean() # Low 0%, Mid 15%, High 72%Video engagement and the exam move together at r = 0.67, and the pass rate climbs from 0% in the least-engaged third to 72% in the most-engaged third. Renewal follows the same shape, 0%, 13%, 65%. Engagement moves weeks before the exam and the renewal do, which is what makes it worth acting on early.
What the dashboard tells you
Where the program leaks: read the [funnel](https://fastpix.com/blog/creator-platform-engagement-churn-dashboard), not the completion number. A single completion figure hides where learners fall out. The enrolled-to-renewed funnel shows the biggest drop is enrolled to completed, where more than half the cohort stalls before they ever reach the exam. That is where an intervention returns the most, and it is the stage engagement data lets you catch early.
Which instructors produce outcomes: compare the scorecard, not the ratings. Two instructors teaching the same syllabus can certify very different shares of their learners, here 47 percent against 13 percent. Ranking instructors by the pass and renewal their learners reach, rather than by satisfaction scores, shows who to coach and whose approach to spread. It also catches the instructor whose learners score well but rarely finish, a retention fix rather than a teaching one.
Does engagement predict who passes and renews: on this cohort, strongly. Sorting learners into engagement thirds, the pass rate runs 0, 15 and 72 percent, and renewal runs 0, 13 and 65 percent. Video engagement is a leading indicator of both the exam result and the renewal, which is the link the research on training effectiveness asks for: connect the engagement in between to the learning outcome and business result at the end.
What it is worth: put a price on a renewal and the funnel becomes revenue. The dashboard measures outcomes, not dollars, but the two connect directly. Put your own value on a renewal, say a few hundred dollars, and the 31 renewals here are a revenue line you can defend. Moving a handful of stalled learners from the low engagement third into the high third, where renewal runs 65 percent, could add several renewals you can count. Use your own renewal value; the point is that the funnel converts to money.
Which cohorts are on track: compare cohorts on the same funnel. One cohort certified 37 percent of learners against another at 22 percent on the same program. Comparing cohorts on the funnel surfaces the gap while there is still time to act on the trailing one, instead of finding out at the exam.
Turn the dashboard into interventions
The dashboard earns its keep when it drives action. FastPix supplies the engagement signal; your team runs the outreach, the coaching, and the offers. Here is the rule that builds the work list:
for L in learners.itertuples():
if L.engagement_tier == "Low":
flag_for_outreach(L.learner_id) # unlikely to pass; intervene now
elif L.certified and not L.renewed and L.engagement_tier == "High":
offer_next_course(L.learner_id) # engaged and passed, has not rebooked
# plus: instructors below the pass-rate line get a coaching review.| Signal | Condition | What you trigger |
|---|---|---|
| Low-engagement learner | Bottom engagement third | Outreach or a catch-up plan before the exam |
| Cohort trailing | Pass rate below prior cohorts | Intervene on the cohort, add support |
| Instructor below the line | Low completion and pass rate | Coaching review; share the leader's approach |
| Engaged, passed, not renewed | High engagement, certified, no rebooking | Offer the next course, upsell |
None of this teaches the class or closes the renewal for you. It shows which learners, cohorts and instructors need attention, and where the money is being left, so the effort goes where the outcome moves.
Put this in the quarterly business review
Run once, this is a snapshot. Run every quarter against a fresh export, and it is the outcome section of your business review: the funnel with this cohort against the last, the instructor scorecard, and the engagement-to-renewal link, priced with your own renewal value, that shows whether the program pays for itself. Ship a change to the weakest stage, give it a cohort, and rerun; if the funnel widened, keep going.
| Team | What they track | The signal that matters |
|---|---|---|
| Training academy / L&D (this article) | Funnel, instructor scorecard, renewal | engagement to pass and renewal |
| Exam-prep platform | Cohort pass rate, readiness | engagement to exam result |
| Corporate / frontline training | Completion, competency, ROI | engagement to on-the-job outcome |
Run this on your own data
Roll your own view export up to the learner grain, join your pass, certificate and renewal records on the learner ID, and set the stages of your funnel. The funnel, the scorecard and the engagement-to-outcome check run unchanged, and the same SQL scales from this laptop file to a real ClickHouse as your cohorts grow.
Frequently Asked Questions (FAQs)
How do I measure training effectiveness and ROI?
Connect three things: a baseline, learner engagement, and the business outcome. Joining video engagement data with pass, certificate, and renewal records gives you a funnel that connects what learners did with the learning outcomes they achieved.
Does higher engagement lead to better exam results?
In this cohort, strongly. When learners were divided into three engagement groups, pass rates were 0%, 15%, and 72%. Video engagement can be a leading indicator of exam performance, although this sample demonstrates the method rather than establishing a universal benchmark.
How do I measure instructor effectiveness?
Compare the outcomes learners achieve rather than relying only on satisfaction scores. In the sample, instructors teaching the same syllabus certified between 13% and 47% of learners, showing where additional coaching may help and which teaching approaches could be worth replicating.
Does video engagement predict renewals?
In this sample, yes. Renewal rates increased from 0% among the least-engaged learners to 65% among the most-engaged learners. This suggests that learners who engage more with the course content are also more likely to return, although the relationship should be validated against your own data.
What is a good course completion or certification rate?
Studies commonly put self-paced online course completion at roughly 5% to 15%, while cohort-based and high-touch programs can achieve much higher rates. Rather than targeting an industry average, track your own learner funnel and focus on the stage where the largest drop-off occurs.
What does it cost to start?
Getting started is free. You receive a $25 credit with no credit card required. The Video Data free tier includes 100,000 plays per month, and the FastPix Player is free for FastPix customers.




