Most training tracking is manual in some hidden way. Even teams with a real LMS often keep a parallel spreadsheet, because the LMS reports don't quite answer the question being asked. That spreadsheet is where the truth quietly stops being true.
Why manual tracking always drifts
The problem isn't diligence, it's that the record lives somewhere other than the event.
Someone completes a module. Somebody else has to notice, open a different document, and write it down. Any gap in that chain — a busy week, a handover, a person leaving — puts the record permanently out of step with reality, and nobody discovers it until the moment it matters.
Automatic tracking means the completion and the record are the same event. There's nothing to reconcile because nothing was ever separate.
What the record needs to contain
The aggregate percentage is the least useful thing tracking produces. What you actually need, in rough order of importance:
- Who — a named individual, not a count.
- What — the specific course or policy, versioned if it changes over time.
- When — a timestamp, not just a date bucket.
- Whether they passed — if there's an assessment, the outcome as well as the completion.
- Exportable — because the request will eventually come from someone who doesn't have access to your tools.
A dashboard showing 94% satisfies none of these. It tells you there's a gap without telling you who is in it.
Percentages hide the useful information
Two teams at 70% completion can have completely different problems. In one, everybody started and a third stalled halfway. In the other, 70% finished promptly and 30% never opened it at all.
The first is a content problem — something in the middle is too long or too confusing. The second is a delivery or assignment problem, and no amount of editing the course will fix it.
The aggregate number can't distinguish those. Per-person and per-module data can, which is why tracking that only reports an average is close to useless for actually improving anything.
Push the visibility outward
Centralised chasing is slow and unpleasant. The person doing it usually has no relationship with the people they're chasing, so it escalates awkwardly.
Team-level visibility works better. When a manager can see that three of their eight people haven't finished, they close it themselves — usually with a single message, and usually faster than any formal process. The gap closes because the person best placed to close it can see it.
This only happens if the number is somewhere they already look. A report they have to remember to run doesn't get run.
Automatic assignment is half of automatic tracking
Tracking completion is pointless if enrolment is manual, because your denominator is wrong.
If people have to be added to courses individually, someone who joined during a busy month simply isn't counted. Completion reads 100% while a real gap exists — the most dangerous kind of reporting error, because it looks like success.
Assigning to a group, a channel, or everyone who joins from a date forward keeps the denominator honest without anyone maintaining it.
What good looks like
You should be able to answer, without preparation: which teams are behind, who specifically hasn't finished, where in the course people are stopping, and whether a named person completed a named policy on a named date.
If any of those takes more than a minute, the tracking isn't doing its job.
How Poplearn handles it
/progress returns live completion by team, exportable on demand — a per-person, timestamped record rather than a percentage.
Because modules are delivered as Slack direct messages and completed in place, the record is written as it happens rather than reconciled later. And /assign #support targets a person, a channel, or every new hire from that date forward, so the denominator stays correct without maintenance.
Add Poplearn to Slack — free under 20 seats, installs in about a minute.

