Skip to content

Event types

The Moodle plugin local_ssea observes 15 standard Moodle events and translates them into SSEA’s format before sending to the ingest endpoint. This page lists the full catalog.

SSEA event_typeMoodle eventWhen it fires
user_login\core\event\user_loggedinUser signs in to Moodle.
user_logout\core\event\user_loggedoutUser signs out (explicit logout).
SSEA event_typeMoodle eventWhen it fires
user_enrolled\core\event\user_enrolment_createdUser enrolled in a course.
course_viewed\core\event\course_viewedUser opens a course’s main page.
SSEA event_typeMoodle eventWhen it fires
resource_viewed\mod_resource\event\course_module_viewedUser views a resource (file, folder).
resource_viewed\mod_url\event\course_module_viewedUser views a URL-type resource.
page_viewed\mod_page\event\course_module_viewedUser views a Page-type resource.
SSEA event_typeMoodle eventWhen it firesEnriched metadata
quiz_attempted\mod_quiz\event\attempt_startedUser starts a quiz attempt.attempt_number, time_limit_seconds, quiz_name
quiz_submitted\mod_quiz\event\attempt_submittedUser submits a quiz attempt.attempt_number, score_percent, raw_score, time_taken_seconds, state
SSEA event_typeMoodle eventWhen it firesEnriched metadata
assignment_submitted\mod_assign\event\assessable_submittedUser submits an assignment.submission_status, is_late, due_date, submission_draft
SSEA event_typeMoodle eventWhen it firesEnriched metadata
forum_post_created\mod_forum\event\post_createdUser creates a post (new or reply).is_reply, parent_id, word_count, subject, forum_type, discussion_id
SSEA event_typeMoodle eventWhen it firesEnriched metadata
grade_updated\core\event\user_gradedTeacher or system assigns/updates a user’s grade.finalgrade, item_type, grademax, grademin, gradepass, percent, passed
grade_item_updated\core\event\grade_item_updatedA grade item definition is modified (e.g. weight, name).item_name, item_type, item_module, grademax, gradepass, hidden, locked
SSEA event_typeMoodle eventWhen it firesEnriched metadata
module_completed\core\event\course_module_completion_updatedModule completion status is updated.completion_state, completion_type, course_module_id
course_completed\core\event\course_completion_updatedCourse completion status is updated for a user.status, is_complete, time_completed, time_enrolled

All events share a common core:

{
"event_type": "quiz_submitted",
"user_id": "<moodle_user_id>",
"course_id": "<moodle_course_id>",
"module_id": "<moodle_course_module_id>",
"timestamp": "2026-04-13T14:30:00Z",
"context": {
"object_id": "<event_object_id>",
"context_level": 70
},
"metadata": {
"attempt_number": 2,
"score_percent": 84.5,
"time_taken_seconds": 1200,
"state": "finished"
}
}

Common fields:

FieldTypeRequiredDescription
event_typestringYesOne of the 15 types listed above.
user_idstringYesMoodle user ID.
course_idstringBy eventMoodle course ID (optional for user_login / user_logout).
module_idstringBy eventCourse module ID (activity events only).
timestampstring (ISO 8601 UTC)YesWhen the event happened at the source.
contextobjectOptionalMoodle context (object_id, context_level).
metadataobjectOptionalEvent-specific fields (see “Enriched metadata” columns above).
SSEA eventUsed for…
user_login, user_logoutSession metrics, inactivity detection (a key At-Risk factor).
user_enrolledEnrollment growth per course and per period.
course_viewed, resource_viewed, page_viewedEngagement metric, activity heatmap, estimated time in course.
quiz_attempted, quiz_submittedAcademic performance, at-risk correlation, academic scoring.
assignment_submittedSubmission rate, late-submission flag.
forum_post_createdEngagement depth (words per post, active conversations).
grade_updated, grade_item_updatedGrade distribution, low-grade alerts.
module_completed, course_completedCompletion rate per course/program, cohort analytics.

Each event generated by the plugin includes a unique event_id. The processing worker deduplicates repeat events based on a hash of key fields, so if your Moodle retries a send due to a network timeout the event is not counted twice.

The event catalog is stable across minor plugin versions. If a new type is added in the future, it is added without breaking existing ones. Tenants do not need to make any changes when new types are added — they simply stop being ignored once the plugin is updated.