Skip to content
Learnomy
Get Learnomy Pro

Course Completion Rules

How to Set Course Completion Rules in Learnomy2:26Chapters and transcript

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.

Course Completion Rules first view

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:

  1. All Lessons Completed -- the enrollment completes when every lesson in the course is marked complete (progress reaches 100%). A quiz in the course stays optional under this rule; the editor says so under the dropdown and names the rule to pick if a quiz has to be passed first. A course that has no lessons at all, only a quiz, completes when that quiz is passed.
  2. 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.
  3. 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.
  4. Manual Completion -- the course never auto-completes. Only an admin or instructor marks a student complete. A student who has finished every lesson sees a note that their instructor still has to mark the course complete (see below).

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.

What the student sees when the course completes#

The step that completes the course -- a lesson, a sub-lesson or a quiz pass -- sends the student to the Course complete screen at /courses/{course-slug}/complete/. Every ending lands on the same screen. It shows:

  • the course name and a short well-done line;
  • View your certificate, when a certificate was issued;
  • Leave a review, when reviews are on and the student has not reviewed the course yet;
  • any step still open, for example "One Quiz is still open if you want to take it" on a course whose rule left a quiz optional;
  • Back to Course.

Afterwards the course page button reads Course complete and the last step's Finished link both lead back to this screen. Only a student who has really completed the course can open it; anyone else is sent to the course page.

A lesson with sub-lessons#

A lesson that has sub-lessons counts as finished when the lesson and every published sub-lesson under it are done. Until then the course percentage, the section counter (for example 0/1) and the certificate all wait. Finishing only the sub-lesson does not complete the lesson either.

Manual Completion: the waiting state#

On a Manual course a student can reach 100% without being complete. Until an admin or instructor marks them complete:

  • the course page shows the progress block and one note, "You have finished all the lessons. Your instructor marks this course complete; you will hear from us when they do.", with no congratulations banner and no certificate button;
  • the My Courses card reads Waiting for your instructor instead of Review;
  • the last lesson reads Waiting for your instructor with a link back to the course.

No certificate is issued and the Course complete screen stays closed until the instructor confirms.

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_quiz course 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. A student holds one active certificate per course: a second request made at the same moment returns the first certificate instead of issuing another. Opening the course page never issues a certificate on its own; a bare 100% on a Manual course is not completion.
  • 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 once, when an enrollment completes), and the filter learnomy_course_complete_url (args: $url, $course) to send students somewhere else when a course completes. The lesson, sub-lesson and quiz-submit REST responses carry course_complete_url on the request that completes the course and on no other. The screen's template is course-complete.php, overridable like any other (see Template Overrides). Progress_Service::completed_lesson_count( $course_id, $progress_rows ) is the one counter behind the percentage: top-level lessons, each finished only with its sub-lessons. REST: POST /learnomy/v1/progress/sync posts { item_type: 'lesson', item_id, status: 'completed' } and runs the same completion logic.