Course Completion Detection & Certificate State
Course Completion Detection & Certificate State
Available from: v1.0.40
The platform now automatically detects when a learner finishes all lessons in a course, records the completion timestamp, and surfaces that event on the learner dashboard. This is the foundation for certificate issuance, completion badges, and any downstream automation you want to trigger on course completion.
How It Works
Completion detection is fully automatic — no configuration is required.
Completion Flow
- Lesson-level tracking — The system already records each lesson a learner completes.
- Threshold check — Every time a lesson is marked complete, the system evaluates whether every lesson in the course has now been finished by that learner.
- Milestone event — When all lessons are complete, two things happen simultaneously:
- The
enrollments.completed_atcolumn is set to the current UTC timestamp. - A completion record is written and made available to the learner dashboard.
- The
The enrollments.completed_at Field
| Field | Type | Description |
|---|---|---|
completed_at | timestamp (UTC) | Set once, when all lessons in the course are finished. null if the course is not yet complete. |
This field is the canonical source of truth for whether a learner has completed a course. Downstream features — certificates, dashboard badges, reporting — should key off this value.
Learner Dashboard
Once completed_at is set, the learner's dashboard reflects the completion state. This enables:
- A visual completion indicator or badge on the course card.
- A certificate state that can be rendered or downloaded (certificate generation is a separate feature).
- A permanent record the learner can refer back to.
Important Behaviour Notes
- Idempotent — If a completion check runs more than once,
completed_atis only written on the first detection. Subsequent checks do not overwrite the original timestamp. - Existing enrollments — Enrollments where all lessons were completed before v1.0.40 will not be back-filled. The
completed_attimestamp will be recorded the next time the completion check is triggered for that learner (e.g. if they revisit a lesson). - New enrollments — Completion detection applies automatically with no additional setup.
Blog Post
See the v1.0.40 blog post for a product-level overview of this feature.