Course Completion Rules
A course's completion rule decides when a student counts as finished -- the moment their enrollment flips to completed, progress hits 100%, and any certificate is awarded. You choose one rule per course from four options.
What you can do
- Complete a course when the student finishes every lesson.
- Complete a course only when every lesson is done AND the student passes the course's quiz.
- Complete a course when the student finishes a set percentage of the content, so a long course can finish before the very last lesson.
- Keep completion manual, so an admin or instructor marks each student complete by hand and the course never auto-completes.

How to use it
Step 1 -- open the Completion & Certificate section
Edit the course and open the Completion & Certificate section of the course editor.
Step 2 -- choose a Completion Requirement
The Completion Requirement dropdown offers four rules:
- All Lessons Completed -- the enrollment completes when every lesson in the course is marked complete (progress reaches 100%).
- Lessons + Final Quiz -- every lesson must be complete AND the student must have at least one passing attempt on a quiz scoped to the course (or one of its lessons). Practice and survey quizzes do not gate completion.
- Percentage of Content -- the enrollment completes when the student's progress reaches the percentage you set (see step 3). Useful when the last few lessons are optional.
- Manual Completion -- the course never auto-completes. Only an admin or instructor marks a student complete.
Step 3 -- set the percentage (percentage rule only)
When you pick Percentage of Content, a Completion Percentage slider appears. Set the minimum share of lessons a student must finish (1-100). At that threshold the course completes; it does not wait for the last lesson.
Step 4 -- save
Save the course. From then on, whenever a student finishes a lesson or submits a quiz, Learnomy re-checks the rule and completes the enrollment the moment it is satisfied. Completion fires whether the last action was a lesson finish or a quiz pass -- both paths converge on the same check.
Settings and options
- Where completion is re-checked. Completion is evaluated on two events: a lesson being marked complete, and a quiz being submitted. Either can be the one that finishes the course, so a
lessons_and_quizcourse that had all lessons done completes the instant the quiz is passed. - Manual never auto-completes. With the manual rule, the auto-completion path is skipped entirely; nobody is completed until an admin or instructor does it.
- Certificates ride on completion. If the course awards a certificate, it is issued when the completion rule is met -- so the rule you pick also controls when the certificate lands.
- Per-lesson enforcement is separate. The Completion Requirement decides when the whole course finishes. How strictly each individual lesson's watch-time / video-percent / scroll / quiz-pass rules are enforced is a separate control (Per-Lesson Rule Enforcement: inherit / strict / advisory / off).
For developers
Service (Learnomy\Services\Progress_Service):
mark_lesson_complete( $user_id, $lesson_id, $bypass_rules, $time_spent_seconds, $client_signals )-- marks a lesson complete, rolls up course progress, and completes the enrollment when the rule is satisfied.maybe_complete_course( $user_id, $course_id )-- idempotent re-check called from both the lesson-complete and quiz-submit paths; returns true when the call resulted in completion.calculate_course_progress( $user_id, $course_id )-- the 0-100 progress figure the rules read.
The lrn_courses.completion_type column holds one of all_lessons, lessons_and_quiz, percentage, manual; completion_value holds the percentage threshold (1-100) for the percentage rule.
Hooks: learnomy_lesson_completed (fires per lesson), learnomy_course_completed (fires when an enrollment completes). REST: POST /learnomy/v1/progress/sync posts { item_type: 'lesson', item_id, status: 'completed' } and runs the same completion logic.