Skip to content
Agorix
Updated 29 July 2026

Course completion systems: finishing is an operations problem.

Almost every attempt to improve course completion starts by trying to make students more motivated. This one starts with the structures around them: what finished means, how the first sitting ends, what the first week sends, which behaviour raises a hand, and what the drop-off curve is telling you about the curriculum. Written to work with any course platform; where a tool decision genuinely changes the plan, it says so.

7metrics defined
05signals to wire
07steps, in order

What you will have at the end

  • Seven completion metrics defined precisely enough to argue about
  • A first sitting that ends with something finished, not with an overview
  • Milestones named by capability, and a progress bar that tells the truth
  • The onboarding week laid out hour by hour
  • Five inactivity signals worth wiring, and the threshold problem underneath them
  • A re-engagement touch that names the lesson instead of missing the student
  • The drop-off curve read as curriculum feedback rather than as a verdict on students
A student list showing progress through a course, with completed lessons and current position for each learner.
Step 00Define finished

You cannot improve a number two people define differently.

Completion is the most casually used word in online education. Before any of the work below is worth doing, decide precisely what you are counting — because every intervention that follows gets judged against it, and a moving definition can make a course look like it improved when nothing changed except the denominator.

Seven definitions cover it. Write them down once, put them somewhere the whole team can see, and use the same words every time afterwards. This is an afternoon of work with no engineering in it and it is the reason next quarter’s comparison will mean something.

MetricWhat it means, exactly
EnrolledEveryone with access, whatever route they took to get it — buyers, comped seats, bundle recipients, team licences, refunds you have not revoked. It is the largest denominator and the one that flatters you least, which is exactly why it needs stating rather than assuming.
StartedReached the first unit and did something in it. Not “logged in once.” A login without an action is an intention, and counting intentions as starts is the single most common way a completion report ends up describing a course nobody took.
Unit completion rateOf the students who started a given unit, the share who finished it. This is a diagnostic number, read per unit and never averaged into a headline. Averaged, it hides the exact thing you are looking for: the one unit where the curve falls off a cliff.
Milestone rateOf the students who started the course, the share who reached each named milestone. Three or four numbers, not thirty. This is the report you actually run the course from, because the gaps between the numbers point at specific stretches of curriculum.
Completion rateCompleted divided by started, or completed divided by enrolled. These are two different numbers and the gap between them is often large. Publish both, or name which one you use every time you say the words, because half the disagreements about completion are two people using different denominators.
Median time to completeThe point by which half your finishers have finished. It is the guard against “everyone gets there eventually” — a course with a respectable completion rate and a median of nine months is not being completed, it is being abandoned slowly.
Active in the last 14 daysThe share of enrolled students who did something in the last fortnight. The only leading indicator on this list: it moves weeks before the completion rate does, which makes it the number to put on a dashboard and the one to act on.

On benchmarks: do not

Somewhere in the research for this you will find a headline completion figure for online courses, and it will be tempting to hold yourself against it. Do not. Those numbers are averaged across free courses, compliance training, university-adjacent programmes and paid cohorts, over populations that did not pay what your students paid and did not arrive the way your students arrive — and almost none of them state which denominator they used, which alone can move a rate by a factor of two.

The comparison that is actually available to you is better anyway: your own last cohort, measured the same way, before and after one change. That tells you whether the change worked. An industry average cannot tell you anything, because you cannot act on the gap.

The one number for the dashboard

Active in the last fourteen days, not completion rate.

Completion is a lagging indicator — by the time it moves, the cohort that produced it is finished and nothing you do can change their outcome. The share of enrolled students who did something in the last fortnight moves weeks earlier, which makes it the only number on the list you can still act on. Put completion in the quarterly review and put this one where you will see it on a Monday.

Ch. 01The first sittingChapter 01 / 07

Session one has to end with something finished.

If there is one change on this page worth making before all the others, it is this. The student decides whether this course is going to be part of their life at the end of the first sitting, and they decide it on evidence — whether anything actually happened.

Most courses open with a welcome video, a tour of the platform and an overview of the modules ahead. That opening is written for the author, who knows how much is coming and wants to frame it. For the student it produces a first session in which they watched some things, learned that there is a lot to do, and finished nothing. There is nothing to tell anyone about, nothing to look at, and no evidence that the purchase is going to work out.

Replace it with a first unit that ends in an artefact. A completed worksheet, a decision made and written down, a setting changed, a first draft, a template filled in, a calculation done with their own numbers. Small is fine. Real is not optional.

What counts as a first win

  • It is complete on its own. Not step one of a five-part exercise. Something that has an end, so that stopping there feels like finishing rather than pausing.
  • It fits the time they actually have. You can find this out by asking, and the answer is almost always shorter than the sitting you designed. Ask on the enrolment form; it is one question and it changes the whole build.
  • It needs nothing installed first. Every account, download or configuration in front of the first win is a gate, and gates are where first sessions end. Move the setup into an optional unit that comes after the student has a reason to do it.
  • It produces something they could show somebody. The showable artefact is what converts a private purchase into a public commitment, and public commitments come back on day two.
  • It is theirs, not yours. A worked example you demonstrate is teaching. The same exercise done with their own situation in it is a win. The difference costs you nothing and changes everything about what happens next.

Curriculum logic and motivation logic disagree here

The shortest complete unit in your programme is rarely the one that belongs first logically. Foundations, definitions and context want to go at the front, and they are genuinely load-bearing later. Put them second anyway. A student who has finished something will sit through the foundations; a student who has only sat through the foundations frequently never gets to the part that would have shown them why the foundations mattered.

Reordering costs a few hours in the outline and nothing in production. Of everything on this page, it is the change with the best ratio of effort to effect, and it is the only one that improves the experience of students who have not enrolled yet.

Ch. 02Milestones and progressChapter 02 / 07

The unit of design is the sitting, not the module.

Courses are usually built in modules because modules are how the material organises itself. Students do not experience modules. They experience sittings: the amount they can get through between opening the thing and being interrupted.

Size every unit so that a normal interruption arrives after an ending rather than in the middle of one. A student who stops halfway through a forty-minute lesson has to decide, next time, whether to restart it — and restarting is expensive enough that a meaningful share of them simply do not. Four ten-minute units with four completions behind them produce a different next session than one forty-minute unit at sixty per cent.

Then make every unit resumable. “Continue where you left off” is worth more than a beautifully organised table of contents, because the table of contents asks a student who has been away for nine days to remember something, and the resume button does not.

Name milestones as capabilities

“Module 3 complete” tells the student they have moved through your structure. “You can now price a package and defend it on a call” tells them what they got. The second is the reason they bought, and it is the sentence they will repeat to somebody else — which is both a retention mechanism and, incidentally, your best marketing copy, arrived at honestly.

Three or four milestones is usually right. Thirty is a progress bar with extra steps. A milestone should be far enough apart to feel like an arrival and close enough together that the next one is visible from the last.

A progress display that tells the truth

Progress has to be visible, and it has to be honest. A bar that fills as video plays rewards having a tab open. A bar that fills when work is completed rewards the thing you actually want, and it stays accurate when the student tries to use the skill and discovers whether they have it. Students notice the difference eventually; the ones who notice late feel misled, and they are right.

Shows structure

“Module 3 of 8 complete”

Accurate, and it measures your course. It answers “how much is left,” which is the question a student asks when they are already wondering whether to stop.

Shows capability

“You can now run the first call”

Also accurate, and it measures the student. It answers “what did I get,” which is the question that makes the next unit worth opening. Use both; lead with this one.

Where a credential is part of the programme, attach it to a capability milestone rather than to arriving at the end — certificates and assessments covers what makes one worth having. A certificate is a reasonable marker of something real and a poor substitute for structure: bolted onto a course people are not finishing, it changes nothing, because the reason they stopped was never the absence of a reward at the end.

Ch. 03The onboarding weekChapter 03 / 07

Week one is where the completion rate is decided.

Not because week one is the hardest part of the course, but because it is where the habit either forms or does not. A student who finished something on day one and something else on day three has a course in their life. A student who has opened nothing by day five has a receipt.

The week has six moving parts and one of them is not an email. They are worth listing in order, because the ordering is where most of the value is — an orientation message sent before access has landed, or a nudge that arrives before the student has had a reasonable chance to start, does harm rather than nothing.

WhenWhat happensWhere
Minute 0Access. The receipt and the way in, sent as a transactional message with nothing else attached. Every minute between the payment and the link is a minute in which the decision to start can be postponed, and a start postponed on the evening somebody bought is a start that has to be made again from cold.Email
Hour 1 → Day 1Orientation. How the course works, what a sitting costs in minutes, where questions go, and the name of the first thing they are going to finish. One link, pointing at the first unit rather than at the syllabus.Email
Day 1The first sitting. The student finishes something real and has it in their hands. Everything before this row exists to get them here; everything after it is easier because they arrived.Portal
Day 2 → Day 3The first-win nudge. Points at the smallest completable thing they have not done yet, by name, with an honest estimate of how long it takes.Email
Day 3 → Day 5The stall branch. Fires on no completed unit rather than on the date, and suppresses itself the moment something completes. Names the lesson, never the student.Branch
Day 7Momentum. Their own progress reflected back to them in their own terms, and the next milestone named as a capability rather than as a module number.Email
Week 2+The first live checkpoint, placed the week after the unit where people stall rather than at the end of the programme where it can only congratulate the survivors.Live

Two rows in that table are doing most of the work. Minute zero, because the gap between paying and getting in is dead time that nothing later recovers — it is the only part of the week that is purely a plumbing problem, and it is worth testing by buying your own course on a phone. And the branch on day three, because it is the only row that fires on what the student did rather than on what day it is.

All five sends, with subject lines, the fires-on condition for the branch, and what changes for a cohort, are written out in the student onboarding email sequence.

What each message is allowed to do

  1. Access does one job. Get them in. No curriculum tour, no bonus offers, no newsletter subscription confirmation. Every additional element in this email is a competing link on the most important click in the whole relationship.
  2. Orientation sets the shape. How the course works, what a sitting costs, where questions go, who answers them, and the name of the first thing they will finish. This is the message that replaces the welcome video you just deleted.
  3. The first-win nudge points at one thing. Named, specific, small. “Finish the pricing worksheet in unit two — about twelve minutes” beats any amount of encouragement, because it removes the decision about what to do rather than adding pressure to do it.
  4. The branch notices. It fires on no completed unit, not on day three, and it stops the moment something completes. This is the difference between a system that responds and a broadcast that happens to be badly timed for half the list.
  5. Momentum reflects it back. What they finished this week, in their words, with the next milestone named as a capability. This is also where the pace expectation gets reset for anyone who is behind, without a word of guilt in it.
Ch. 04Inactivity signalsChapter 04 / 07

Inactive is a threshold, and the threshold is yours to set.

Every re-engagement system starts with a definition problem that most of them skip. Four quiet days means nothing on a twelve-week programme and means the student is gone on a seven-day sprint. Publish the pace first; inactivity is a deviation from it, not a number of days.

So the sequence is: decide what pace you expect, tell the student what it is, then define each signal as a departure from that expectation. This has the useful side effect of making the eventual message defensible — you are not writing to somebody because they have been quiet, you are writing because they are behind a pace they agreed to when they enrolled.

Five signals, in the order they are worth building

  1. Access granted, nothing opened. The window here is hours, not days. Somebody who bought on Tuesday evening and has not opened anything by Thursday has not made a decision about your course — they have made a decision about their week, and it is still reversible. Wait a fortnight and you are writing to somebody who has already filed the purchase under things that did not happen.
  2. Started a unit and did not finish it. The signal worth having above all the others, because it carries a location. You are not writing to a student who has gone quiet, you are writing to a student who is stuck on the pricing worksheet, and those two messages have nothing in common. Store the unit, not just the timestamp.
  3. Finished a milestone and stopped. The dangerous one, because it reads as success in every report. Somebody who completed module two and vanished looks identical to somebody making steady progress until you compare the dates. Milestones are natural exit points — the sense of an ending is real, and it is worth an explicit send that opens the next one.
  4. Behind the pace you published. Only meaningful if you published a pace. “Two units a week, done in six” gives inactivity a definition; without one, four quiet days on a twelve-week programme and four quiet days on a seven-day sprint produce the same alert and only one of them means anything.
  5. Asked a question and did not come back. Somebody who posted in the forum, emailed support or raised a hand on a call and then went quiet was blocked by something specific and probably still is. This is the smallest of the five segments and the one where a single human reply does the most work.

The second one deserves the emphasis. Knowing where somebody stopped is worth more than knowing that they stopped, by a wide margin, because it turns a generic check-in into a specific piece of help. It is also the signal most likely to be thrown away by a system that records a last-seen date and nothing else, so check what your platform actually stores before you design a message around it.

Where the signal has to live

A behaviour signal is only as useful as the system that can read it at the moment of sending. If lesson progress lives in the course platform and the email lives somewhere else, then either somebody exports a spreadsheet every Monday, or the message goes out on a calendar and pretends to be behavioural. Both are common. Only the first is honest, and neither scales past a couple of hundred students.

This is the point where behaviour-triggered workflows stop being a nice idea and start being the difference between a system that responds and a newsletter about your course. If you are building your first ones, start with the smallest set and add signals only when a message you already send is provably going to the wrong people.

Ch. 05The re-engagement touchChapter 05 / 07

Name the lesson. Do not miss the student.

The default re-engagement email says some version of “we noticed you have not been around — jump back in.” It is written to everyone who stopped, which means it is written to nobody, and it asks for the one thing the student has already decided against doing.

A message that works has four parts and none of them is encouragement. It names where they stopped. It says, honestly, that this is a common place to stop and why — which converts a private failure into a known feature of the material. It gives one small next action with a real time estimate. And it offers a reply that reaches a person, because some stalled students are stuck on something a two-line answer would clear.

What it does not do is guilt. “You have not logged in for two weeks” is a fact the student already knows and a frame that makes returning feel like admitting something. The message should read as though somebody noticed and wanted to help, because that is exactly what happened — you just did the noticing in advance.

The ladder, and where it stops

  1. The behavioural message. Automated, fires on the signal rather than the calendar, and names the unit. One action, sized honestly. It should read like somebody noticed, because somebody did — you just noticed in advance and wrote it down.
  2. The human message. If the first one produced nothing, the second should not be another automated send with a new subject line. A short note from a person that asks a question rather than making a request gets replies that a sequence cannot, and the replies are worth more than the re-engagement.
  3. The standing invitation. Point at the next live checkpoint by name and date. A stuck student needs a place to bring the thing they are stuck on, and a calendar entry is a much smaller commitment than restarting a course alone.
  4. The honest exit. Two touches without a response, and chasing stops being help. Offer the thing that is actually useful — a pause, an extension, a transfer to the next cohort, or a refund where your policy allows it. It costs you one student and buys back the reputation that a nagging sequence spends.

That last rung matters more than it looks. Every additional chase after the second one trades a small chance of recovering one student against the certainty of teaching everyone else that your emails are noise. Move non-responders to a slower list, keep the door open, and let the next live checkpoint be the thing that brings some of them back.

Where an assistant drafts these at volume, the draft is the useful part and the send is not — a message that names the wrong lesson is worse than no message at all. Keep customer-facing work behind an approval gate so a person signs off before it reaches a student. The broader pattern, for students who have been gone long enough that this is a campaign rather than a touch, is in the re-engagement campaign guide.

Where a tool decision changes the plan

Writing the message is easy. Knowing which lesson to name is the hard part.

Any email tool can send a re-engagement sequence. Sending one that names the unit somebody stalled on means the progress data and the sending system have to be the same system — otherwise it is a weekly export and a paste. In Agorix, lesson activity, milestones, inactivity and purchase history can sit on one customer record, and workflows branch on them directly — see how courses connect.

Start your 14-day trial 14 days · $0 due today · Payment method required · Cancel before first charge and pay nothing
Ch. 06Live checkpointsChapter 06 / 07

A date on the calendar does work that no email does.

A self-paced course has no external clock in it, which is the feature people buy it for and also the reason a great many of them never finish. A scheduled hour puts the clock back without taking the flexibility away.

The mechanism is not the teaching that happens on the call. It is that a date creates a before, and a before creates work. The unit gets finished on Tuesday night because the call is on Wednesday, and the work is the completion. Which means the checkpoint is doing its job even for the students who intended to come and did not.

Put it where people stop, not at the end

The instinct is to schedule a call at the end of the programme, where it becomes a graduation. A graduation reaches the students who were always going to finish. Place the checkpoint the week after the unit with the worst completion curve instead, so the call exists precisely where students are deciding whether to continue, and can be about the thing they are stuck on.

Individual problems

Office hours

Drop-in, no agenda, whoever turns up. Right when students are stuck on different things and the value is access to you. How to structure them so the quiet weeks are still worth running.

Shared work

Structured group calls

Same agenda, same unit, work reviewed in front of the group. Right when everyone is at roughly the same point. The call structure is what stops it becoming a free-for-all.

Judge a checkpoint on whether the work arrives before it, not on how many people attend. A thinly attended call whose deadline pulled a dozen units over the line is doing the thing you scheduled it for. If neither the attendance nor the work is moving, the call is in the wrong week — move it, before concluding that live checkpoints do not suit your programme.

A cohort gets this structure by default, which is most of why the format has the reputation it does. A self-paced programme can borrow it: a recurring monthly call, a start-date intake, published pacing. Cohort versus self-paced is the decision itself; this is the part of it worth stealing either way.

Ch. 07Drop-off as feedbackChapter 07 / 07

The drop-off report is about the curriculum, not about the students.

Read as a student-behaviour report, the unit-level curve tells you that people are not very committed, which is unactionable and also unkind. Read as curriculum feedback, the same chart points at specific stretches of material and tells you what to change.

Plot unit completion in course order and look at the shape. Four shapes cover most courses, and each one has a different cause and a different fix — which is the entire reason the diagnosis is worth doing before the rewrite.

ShapeWhat you are looking at
The cliffOne unit where a large share of the people who started it never finish it.Something specific is in the way: the unit is long, it needs a tool or an account, it asks for a decision the student cannot make yet, or an asset is broken. Check the asset first — it is the cheapest and it is more often the answer than anyone expects.
The slow bleedA steady decline across every unit with no single break in it.A pacing problem rather than a content problem. Units are longer than the sitting your students actually have, or the milestones are too far apart to feel like arrivals. Splitting units changes this curve more reliably than rewriting them.
The plateauA section almost nobody starts, even though the section before it completes well.A structural gate: a prerequisite, a setup step, an assignment that is too large, or a drip that has not released. Look at what stands between the last completed unit and the first untouched one rather than at either unit itself.
The milestone stopCompletion holds up neatly, then stops immediately after a milestone.The ending was real and nothing opened after it. Name what the next section makes possible, in the milestone message itself, before the student decides they have got what they came for.

Fix in order of cost

Check the asset first: a video that fails on mobile, a download that 404s, a quiz that will not submit. It is the cheapest possible cause and it is the answer more often than anybody expects, particularly on a unit that used to complete well and now does not. Then length, then sequence, then the content itself. Rewriting a lesson is the most expensive move available and it should be the fourth thing you try, not the first.

Ask the people who left

The curve tells you where. Only students tell you why, and the students who finished cannot — they are, by definition, the ones for whom the difficult unit was not difficult enough to stop. Exit questions to people who stalled are uncomfortable to send and worth more than any other feedback you collect; student feedback loops covers how to ask so the answers are usable.

Changes that move completion

  • Move the shortest complete unit to position one, even where the logic of the curriculum objects
  • Split the unit with the cliff in it, and put the setup work in its own optional unit before it
  • Rename milestones as capabilities — what the student can now do, not which module they cleared
  • Add a live checkpoint the week after the unit where people stall, not at the end
  • Fix the broken asset before rewriting the lesson it sits in
  • Write the stall branch for the one unit with the worst curve, and only that unit, first

Changes that feel like progress

  • Adding a certificate to a course people are not finishing — an incentive does not open a structural gate
  • Rewriting the whole programme because one unit has a cliff in it
  • Sending the same weekly reminder to everybody regardless of where they stopped
  • Adding content to a course students already do not finish
  • Benchmarking against a completion rate you found online instead of against your own last cohort
  • Reading the exit survey from finishers as an explanation of why the others left
A learning report showing progress and completion across a course, unit by unit.
Fig. 02The report that decides what to change next. Read it per unit — an averaged completion rate hides the exact thing you are looking for.
OrderWhat to build first

Seven chapters, and you cannot do them all this month.

Everything above is worth doing and almost nobody has the time to do it at once. This is the order, for a course that already exists and is not being finished — ranked by how much of the outcome each step controls against what it costs to build.

  1. Write the definitions down. An afternoon, no engineering, and it makes every number after it comparable. Skip this and you will spend the next quarter arguing about whether completion went up.
  2. Rebuild the first sitting. The highest-leverage change on the list and the only one that improves the outcome for students you have not enrolled yet. Everything else recovers people; this one stops them needing recovery.
  3. Send the access and orientation emails properly. Two emails, both of which you are probably sending in some form already, both of which usually have the wrong job. The onboarding sequence is written out in full.
  4. Wire one stall signal, on the worst unit. Not five signals across the whole curriculum. One, on the unit with the ugliest curve, so you learn whether the message does anything before you build the machine that sends nine of them.
  5. Put a live checkpoint after that unit. A recurring hour with a date on it does work that no email does. Office hours if the questions are individual, a structured group call if the work is shared.
  6. Rename the milestones. Cheap, fast, and it changes what the progress display means to the person reading it. Do it while you are waiting for the first cohort of data on everything above.
  7. Set a review cadence for the curve. Once per cohort, or once a quarter for an evergreen programme. The report is only useful if somebody is booked to read it and empowered to change the curriculum in response.
If you have twelve students

Do all of this by hand, and do it better.

At small numbers, a person watching the progress list once a week and writing three individual messages beats every system on this page — and it teaches you what the automated version will need to say when you build it. Automate at the point where you stop noticing, not at the point where it becomes possible. The systems above exist to preserve a level of attention you can no longer give personally, not to replace one you never gave.

The completion build checklist0 / 12 ready

Before the next student enrols

Wire in the first week

Common questions

Six questions about course completion.

What is a good course completion rate?

There is no honest external benchmark, and this guide will not give you one. Published completion figures come from datasets whose denominators, prices and audiences have nothing to do with yours — free courses, compliance training, paid cohorts, degree-adjacent programmes — and the same course can report wildly different rates depending on whether you divide by enrolled or by started. Measure your own cohort with the seven definitions above, change one thing, and compare it to itself. That comparison is worth more than any figure you could borrow.

How do I measure course completion properly?

Define seven things once and write them down: enrolled, started, unit completion rate, milestone rate, completion rate, median time to complete, and the share active in the last fourteen days. Two of those definitions do most of the work. Started means reached the first unit and did something in it, not logged in once. Completion rate means completed divided by started, or completed divided by enrolled — two different numbers with a large gap between them, so publish both or name which one you use every single time.

Why do students stop taking an online course?

Usually for structural reasons rather than motivational ones. The first sitting ended with an overview rather than a finished thing; units are longer than the time students actually have; a milestone felt like an ending and nothing opened after it; or one specific unit contains a gate — a tool to install, an account to create, a decision they cannot make yet, or an asset that is simply broken. The unit-level curve tells you which, and asking the students who stopped tells you why.

Do cohorts finish courses more often than self-paced students?

A cohort supplies two things a self-paced course has to manufacture: a date and a group. Both are structural rather than motivational, and both can be borrowed — scheduled checkpoints, published pacing, start-date intakes on an otherwise evergreen programme. Treat the format as a source of structure rather than as a cure, and decide it on how your students buy and learn: cohort versus self-paced works through the trade.

What should a re-engagement email for a stalled student say?

It should name the unit they stopped on, say plainly that it is a common place to stop and why, give one small next action with an honest time estimate, and offer a reply that reaches a person. It fires on the behaviour — nothing completed since a given point — rather than on a calendar date, and it suppresses itself the moment the student completes something. The wording is in the onboarding email pack.

Should I make my lessons shorter to improve completion?

Length is one of four common causes and not always the one you have. Read the unit-level curve first. A steady decline across every unit points at pacing and length, and splitting units will help. A cliff at one unit points at something specific inside that unit. A section nobody starts points at a gate standing in front of it. Shortening lessons in response to a cliff or a gate changes nothing except the running time, and it costs you a rewrite you did not need.

Keep going

The parts of this with guides of their own.

From a completion problem to a completion system

You have the system. Agorix is where it runs.

Course delivery, the onboarding sequence, progress and inactivity signals, the live checkpoint and the workflow that acts on all of it — on one customer record, so the message that names the lesson does not need an export first.

14 days · $0 due today · Payment method required · Cancel before first charge and pay nothing