Siren

StudentCompletedLesson

Fires when a student finishes a lesson in a connected LMS. Powers engagement tracking for education-based incentive programs.

Last updated: April 8, 2026

StudentCompletedLesson

StudentCompletedLesson fires when a student finishes a lesson in a connected learning management system. This is how Siren powers education-based incentive programs: course creators and educators can be rewarded when students they referred or are associated with complete lessons, giving program operators a way to incentivize teaching quality and student engagement.

The event ID is student_completed_lesson, and its fully qualified class is Siren\LMS\Core\Events\StudentCompletedLesson.

What does this event carry?

The event carries the Student model, the Lesson model, an array of Educator models representing the instructors associated with the lesson, and an optional Course model when the lesson belongs to a structured course.

use Siren\LMS\Core\Events\StudentCompletedLesson;

public function handle(Event $event): void
{
    $student = $event->getStudent();
    $lesson = $event->getLesson();
    $educators = $event->getEducators();
    $course = $event->getCourse(); // may be null

    // Educators are the collaborators who can be rewarded
    // for student completions in their lessons or courses
}

How does this connect to the incentive pipeline?

The educator models in the event are the link to Siren’s collaborator system. When a student completes a lesson, the system can create engagements and conversions that credit the associated educators, just as a site visit or coupon code credits a traditional affiliate. Programs configured with lesson-completion triggers use this event as their entry point.

What about course-level completions?

When a student finishes an entire course rather than a single lesson, the system fires StudentCompletedCourse instead. That event follows the same pattern but represents the broader milestone. Programs can be configured to trigger on either lesson completions, course completions, or both, depending on the granularity the program operator wants.

For the full lifecycle of system events and how they connect to the rest of Siren’s architecture, see the System Events overview.