Skip to content

EdTech / Online Learning Events

Learning platforms generate a rich stream of engagement data: every lesson started, video completed, assessment submitted, and discussion post created tells a story about learner motivation and progress. A structured event taxonomy lets you identify at-risk students before they churn, personalise learning paths based on behaviour, and build growth loops where course completions and certifications drive organic referrals.


Events capturing initial interest and trial enrolment.

Event NameKey PropertiesVolumeDescription
user.signed_upchannel, utm_source, device_typeHighNew user creates an account
lead.capturedsource, campaign_id, interest_topicHighLead collected from landing page, webinar, or partner
trial.startedtrial_duration_days, plan_type, sourceMediumUser begins a free trial
free_course.enrolledcourse_id, course_title, categoryHighUser enrols in a free course (top-of-funnel)

Enrolment, onboarding, and preference-setting events — getting learners to their first “aha” moment.

Event NameKey PropertiesVolumeDescription
enrollment.createdcourse_id, enrollment_type, price_centsHighUser enrols in a course (free or paid)
enrollment.cancelledcourse_id, cancellation_reason, progress_pctLowUser cancels an enrolment before completion
onboarding.startedonboarding_version, device_typeHighUser starts the platform onboarding flow
onboarding.completedonboarding_version, duration_seconds, steps_completedMediumUser completes the onboarding flow
profile.learning_preferences_setpreferred_topics, skill_level, learning_goalsMediumUser sets learning preferences or goals

The core learning loop — lessons, videos, assessments, discussions, and study sessions.

Event NameKey PropertiesVolumeDescription
course.startedcourse_id, course_title, categoryHighUser starts their first lesson in a course
lesson.startedlesson_id, course_id, lesson_numberHighUser opens a lesson
lesson.completedlesson_id, course_id, duration_seconds, completion_typeHighUser completes a lesson
video.playedvideo_id, lesson_id, playback_rateHighUser starts playing a video
video.pausedvideo_id, current_time_seconds, total_durationHighUser pauses a video
video.completedvideo_id, lesson_id, watch_pct, duration_secondsHighUser watches a video to the end
video.seekedvideo_id, from_seconds, to_secondsHighUser jumps to a different position in a video
module.completedmodule_id, course_id, lessons_completed, score_pctMediumUser completes all lessons in a module
course.progress_updatedcourse_id, progress_pct, lessons_done, total_lessonsHighCourse progress percentage recalculated
course.completedcourse_id, course_title, total_duration_hours, final_score_pctMediumUser completes all course requirements
assessment.startedassessment_id, assessment_type, course_idMediumUser begins a quiz or exam
assessment.submittedassessment_id, score_pct, time_taken_secondsMediumUser submits an assessment
assessment.gradedassessment_id, score_pct, passed, grader_typeMediumAssessment graded (auto or manual)
assessment.retriedassessment_id, attempt_number, previous_score_pctLowUser retries a failed assessment
assignment.submittedassignment_id, course_id, file_count, word_countMediumUser submits a written assignment
assignment.gradedassignment_id, score_pct, grader_id, feedback_providedLowAssignment graded by instructor or peer
note.createdlesson_id, note_length, note_typeMediumUser creates a note on a lesson
bookmark.addedcontent_id, content_type, course_idMediumUser bookmarks a lesson, video, or resource
discussion.post_createddiscussion_id, course_id, post_type, word_countMediumUser creates a discussion post
discussion.reply_posteddiscussion_id, parent_post_id, word_countMediumUser replies to a discussion thread
study_session.startedsession_type, planned_duration_minutesHighUser begins a focused study session
study_session.endedactual_duration_minutes, lessons_completed, focus_scoreHighStudy session ends
live_class.joinedclass_id, instructor_id, join_methodMediumUser joins a live class or webinar
live_class.leftclass_id, duration_attended_minutes, total_duration_minutesMediumUser leaves a live class

Subscription, purchase, and certification events that generate revenue.

Event NameKey PropertiesVolumeDescription
subscription.createdplan_name, billing_interval, mrr_centsMediumUser subscribes to a paid plan
course.purchasedcourse_id, price_cents, currency, coupon_codeMediumUser purchases an individual course
bundle.purchasedbundle_id, course_count, price_cents, discount_pctLowUser purchases a course bundle
certificate.earnedcourse_id, certificate_id, credential_typeMediumUser earns a certificate or credential
certificate.sharedcertificate_id, share_platform, share_methodLowUser shares their certificate on social media or LinkedIn

Ratings, reviews, and referral events that drive organic growth.

Event NameKey PropertiesVolumeDescription
course.reviewedcourse_id, rating, review_length, has_textMediumUser leaves a course review
course.sharedcourse_id, share_platform, share_methodMediumUser shares a course link with others
referral.link_sharedchannel, program_id, share_methodMediumUser shares their referral link
referral.convertedreferrer_id, referred_id, reward_typeLowReferred user signs up or enrols
instructor.ratedinstructor_id, rating, course_idLowUser rates an instructor

Platform administration and content lifecycle events.

Event NameKey PropertiesVolumeDescription
content.publishedcontent_id, content_type, course_id, author_idLow (admin)New lesson, module, or course published
content.updatedcontent_id, content_type, change_type, author_idLow (admin)Existing content updated
plagiarism.detectedassignment_id, similarity_score_pct, matched_sourcesLow (admin)Plagiarism detection flags a submission
accreditation.milestone_reachedmilestone_type, course_id, compliance_statusLow (admin)Accreditation or compliance milestone reached


Getting Started — Top Events to Track First

Section titled “Getting Started — Top Events to Track First”

Start with these high-impact events before expanding to the full taxonomy.

// 1. Signup
growthos.track('user.signed_up', {
channel: 'organic',
device_type: 'desktop',
});
// 2. Enrolment
growthos.track('enrollment.created', {
course_id: 'crs_python101',
enrollment_type: 'free',
price_cents: 0,
});
// 3. Lesson completed
growthos.track('lesson.completed', {
lesson_id: 'les_intro_01',
course_id: 'crs_python101',
duration_seconds: 420,
completion_type: 'watched_full',
});
// 4. Assessment submitted
growthos.track('assessment.submitted', {
assessment_id: 'asmt_quiz_01',
score_pct: 85,
time_taken_seconds: 600,
});
// 5. Course completed
growthos.track('course.completed', {
course_id: 'crs_python101',
course_title: 'Python 101',
total_duration_hours: 12.5,
final_score_pct: 88,
});
// 6. Certificate earned
growthos.track('certificate.earned', {
course_id: 'crs_python101',
certificate_id: 'cert_abc123',
credential_type: 'completion',
});
// 7. Subscription created
growthos.track('subscription.created', {
plan_name: 'pro',
billing_interval: 'annual',
mrr_cents: 1990,
});
// 8. Course reviewed
growthos.track('course.reviewed', {
course_id: 'crs_python101',
rating: 5,
review_length: 280,
has_text: true,
});
// 9. Referral shared
growthos.track('referral.link_shared', {
channel: 'linkedin',
program_id: 'prog_edtech_2025',
share_method: 'certificate_page',
});