Every event the platform emits, in one place.
A code-derived catalog of the analytics & tracking events fired by platform-backend and platform-frontend. It replaces the abandoned 2021 Confluence “Event Dictionary” tree (whose per-event pages were left empty). Every row here was extracted directly from source — event name, trigger, payload, and destination — so it reflects what actually ships today.
The Events Table
Search by name or description; filter by source, domain, or destination. Click any row to expand its payload, source file, and dispatch mechanism.
| Event | Source | Domain | Destinations | Trigger | Status |
|---|
How Events Flow
Two pipelines converge on Segment, which fans out to downstream tools. Backend events are dispatched from PHP event classes; frontend events from a trackEvent() mixin.
The Base Payload Envelope
Every backend event carries a common Segment track envelope; only the per-event data differs. There are two generations of base contract, and they nest data differently — worth knowing when you query Segment.
{
"userId": "<user uuid | anonymous-…>",
"event": "User Viewed A Lesson",
"properties": {
// ChurnZero identity keys
"accountExternalId": "…",
"contactExternalId": "…",
"sp_global_organization_id": "…",
"sp_global_user_id": "…",
"external_reseller_id": "…",
"meta": { "origin": "Platform", "accountUser": {…} },
"data": { /* event-specific */ }
},
"timestamp": 1740000000,
"context": { "active": true, "ip": "…" },
"integrations": { "ChurnZero": true }
}
{
"userId": "<user uuid | uniqid()>",
"event": "Course Stored",
"properties": {
// eventDetails placed directly here —
// no meta / data nesting
"created_by": "<uuid>",
"uuid": "<uuid>"
},
"timestamp": "2026-08-21T00:00:00+00:00",
"context": { "active": true, "ip": "…" },
"integrations": { "ChurnZero": true }
}
By Domain
The same catalog, grouped by owning domain — the per-domain view the old Confluence tree promised but never filled in. Each list links into the filtered table above.
Academic (38 events · 35 backend, 3 frontend)
Enrollment Key Destroyed· backendEnrollment Key Processed· backendEnrollment Key Status Destroyed· backendEnrollment Key Status Stored· backendEnrollment Key Status Updated· backendEnrollment Key Stored· backendEnrollment Key Updated· backendLTI Launch: LtiResourceLinkRequest· backendLTI Registration Deployment Created· backendLTI Registration Deployment Deleted· backendLTI Registration Deployment Updated· backendLTI Version Destroyed· backendLTI Version Stored· backendLTI Version Updated· backendSchool Class Assignment Destroyed· backendSchool Class Assignment Stored· backendSchool Class Assignment Updated· backendSchool Class Destroyed· backendSchool Class Status Destroyed· backendSchool Class Status Stored· backendSchool Class Status Updated· backendSchool Class Stored· backendSchool Class Updated· backendSchool Class User Destroyed· backendSchool Class User Status Destroyed· backendSchool Class User Status Stored· backendSchool Class User Status Updated· backendSchool Class User Stored· backendSchool Class User Updated· backendSchool Destroyed· backendSchool Stored· backendSchool Type Destroyed· backendSchool Type Stored· backendSchool Type Updated· backendSchool Updated· backendAssignment Section Expanded· frontendAssignment Sections Expand All· frontendUser bookmarked a lesson· frontend
Account (4 events · 0 backend, 4 frontend)
User clicked Leave School menu item· frontendUser clicked Update Email link· frontendUser closed Leave School Modal· frontendUser confirmed Leave School· frontend
Affiliates (3 events · 3 backend, 0 frontend)
Affiliate Destroyed· backendAffiliate Stored· backendAffiliate Updated· backend
Assessments (7 events · 0 backend, 7 frontend)
Test Attempt End Failed· frontendUser Answered A Test Question· frontendUser Ended A Test Attempt· frontendUser Planned A Test Attempt· frontendUser Requested Next Question On A Test· frontendUser Requested Previous Question On A Test Attempt· frontendUser Started A Test Attempt· frontend
Commercial (17 events · 17 backend, 0 frontend)
Company Class Destroyed· backendCompany Class Stored· backendCompany Class Updated· backendCompany Group Status Destroyed· backendCompany Group Status Stored· backendCompany Group Status Updated· backendCompany Group Stored· backendCompany Subscription Expired· backendCompany Type Destroyed· backendCompany Type Stored· backendCompany Type Updated· backendCompany User Was Linked· backendCompany User Was Unlinked· backendCompany User Was Updated· backendCompany Was Created· backendCompany Was Deleted· backendCompany Was Updated· backend
Core / Financials (4 events · 4 backend, 0 frontend)
Order Has Been Manually Processed By Invoice· backendOrder Receipt Requested To Be Emailed· backendStripe Payment Intent Payment Failed· backendStripe Payment Intent Succeeded· backend
Dashboard (4 events · 0 backend, 4 frontend)
Inactive User Notification Shown· frontendUser Clicked Buy Now· frontendUser clicked Lesson (Learning Carousel)· frontendUser Downloaded SOLIDWORKS Add-in· frontend
Grouping (2 events · 0 backend, 2 frontend)
User Copied a Class· frontendUser Copied a Group· frontend
Infrastructure (1 events · 1 backend, 0 frontend)
Event Type Not Found· backend
Library (45 events · 33 backend, 12 frontend)
Course Destroyed· backendCourse Stored· backendCourse Stored· backendCourse Updated· backendCourse Updated· backendCourse Version Destroyed· backendCourse Version Destroyed· backendCourse Version Stored· backendCourse Version Updated· backendLearning Path Destroyed· backendLearning Path Stored· backendLearning Path Updated· backendLearning Path Version Destroyed· backendLearning Path Version Stored· backendLearning Path Version Updated· backendLesson Destroyed· backendLesson Stored· backendLesson Type Destroyed· backendLesson Type Stored· backendLesson Type Updated· backendLesson Updated· backendSoftware Destroyed· backendSoftware Stored· backendSoftware Updated· backendTechnical Certificate Destroyed· backendTechnical Certificate Status Destroyed· backendTechnical Certificate Status Stored· backendTechnical Certificate Status Updated· backendTechnical Certificate Stored· backendTechnical Certificate Updated· backendTest Question Destroyed· backendTest Question Stored· backendTest Question Updated· backendcourseVersion Bookmarked Clicked· frontendlesson Bookmarked Clicked· frontendRelated Lesson Clicked· frontendRelated Lessons Displayed· frontendUser Bookmarked a Lesson· frontendUser Bookmarked Course Version· frontendUser Selected Bookmarked Filter· frontendUser Toggled Layout View· frontendUser Unbookmarked a Lesson· frontendUser Unbookmarked Course Version· frontendUser Viewed a Lesson· frontendUser Viewed an Entire Lesson· frontend
Onboarding (2 events · 0 backend, 2 frontend)
User Submitted Initial Onboarding Step· frontendUser Updated Onboarding Interests and Goals· frontend
Resellers (9 events · 9 backend, 0 frontend)
Affiliate Updated· backendCompany User Was Updated· backendCompany User Was Updated· backendCompany Was Created· backendCompany Was Updated· backendReseller Destroyed· backendReseller Stored· backendReseller User Logged In· backendUser Was Created· backend
Search (2 events · 0 backend, 2 frontend)
User Clicked Search Result· frontendUser Searched for Content· frontend
Users (33 events · 33 backend, 0 frontend)
User Achieved a Technical Certificate· backendUser Assigned To Account· backendUser Assigned To Class· backendUser Assigned To Company· backendUser Assigned To Group· backendUser Assigned To School· backendUser Booted Because of Password Reset· backendUser Destroyed· backendUser Failed To Login· backendUser Failed To Login As· backendUser Forgot Their Password· backendUser Lesson View Close To Completion· backendUser Logged In· backendUser Logged In As· backendUser Logged Out· backendUser Obtained A Temporary Password· backendUser Requested Password Reset For An Email We Do Not Have· backendUser Requested Their Test Results· backendUser Set New Active Account· backendUser Signed Up· backendUser Signed Up Via Hawkridge Signup Flow· backendUser Stored· backendUser Test Attempt Was Graded· backendUser Unassigned From Account· backendUser Unassigned From Class· backendUser Unassigned From Company· backendUser Unassigned From Group· backendUser Unassigned From School· backendUser Viewed A Lesson· backendUser Viewed A Lesson For The First Time· backendUser Was Created· backendUser Was Deleted· backendUser Was Updated· backend
Frontend Events
The 36 events fired from platform-frontend, by dispatch mechanism. Store-routed events get the full Segment envelope; direct-mixin events also hit Hotjar; onboarding events use the survey payload builder.
Store-routed (Segment envelope) (27)
| Event | Area | Destinations | Trigger |
|---|---|---|---|
| Assignment Section Expanded | Academic | Segment | Expand an assignment section |
| Assignment Sections Expand All | Academic | Segment | Click Expand All on assignment sections |
| User bookmarked a lessondyn | Academic | Segment | Bookmark a lesson from within an assignment view |
| Test Attempt End Failed | Assessments | Segment | Error thrown while ending a test attempt |
| User Answered A Test Question | Assessments | Segment | Submit an answer to a quiz question |
| User Ended A Test Attempt | Assessments | Segment | Finish a test attempt |
| User Planned A Test Attempt | Assessments | Segment | Test attempt creation on assessment load |
| User Requested Next Question On A Test | Assessments | Segment | Click Next on a test question |
| User Requested Previous Question On A Test Attempt | Assessments | Segment | Click Previous on a test question |
| User Started A Test Attempt | Assessments | Segment | Start a test attempt |
| Inactive User Notification Showndyn | Dashboard | Segment | Inactive-status notification is displayed |
| User Clicked Buy Now | Dashboard | Segment | Click the Buy Now / membership link |
| User Downloaded SOLIDWORKS Add-in | Dashboard | Segment | Click the SOLIDWORKS add-in download link |
| courseVersion Bookmarked Clickeddyn | Library | Segment | Click a course-version bookmark card |
| lesson Bookmarked Clickeddyn | Library | Segment | Click a lesson bookmark card |
| Related Lesson Clicked | Library | Segment | Click a related-lesson recommendation |
| Related Lessons Displayed | Library | Segment | Recommendation list is rendered |
| User Bookmarked a Lessondyn | Library | Segment | Toggle a lesson bookmark (add) |
| User Bookmarked Course Versiondyn | Library | Segment | Toggle a course-version bookmark (add) |
| User Selected Bookmarked Filter | Library | Segment | Select the Bookmarked filter |
| User Toggled Layout View | Library | Segment | Toggle theater mode in the lesson player |
| User Unbookmarked a Lessondyn | Library | Segment | Toggle a lesson bookmark (remove) |
| User Unbookmarked Course Versiondyn | Library | Segment | Toggle a course-version bookmark (remove) |
| User Viewed a Lesson | Library | Segment | View a lesson in the player |
| User Viewed an Entire Lesson | Library | Segment | Lesson video playback ends |
| User Clicked Search Result | Search | Segment | Click a search result item |
| User Searched for Content | Search | Segment | Execute a search query |
Direct mixin (Segment + Hotjar) (7)
| Event | Area | Destinations | Trigger |
|---|---|---|---|
| User clicked Leave School menu item | Account | SegmentHotjar | Click Leave School menu item |
| User clicked Update Email link | Account | SegmentHotjar | Click Update Email link |
| User closed Leave School Modal | Account | SegmentHotjar | Close the Leave School modal |
| User confirmed Leave School | Account | SegmentHotjar | Confirm Leave School in the modal |
| User clicked Lesson (Learning Carousel) | Dashboard | SegmentHotjar | Click a lesson in the learning carousel |
| User Copied a Class | Grouping | SegmentHotjar | Submit a copy-class form successfully |
| User Copied a Group | Grouping | SegmentHotjar | Submit a copy-group form successfully |
Onboarding (survey payload builder) (2)
| Event | Area | Destinations | Trigger |
|---|---|---|---|
| User Submitted Initial Onboarding Stepdyn | Onboarding | Segment | Submit an onboarding survey step |
| User Updated Onboarding Interests and Goalsdyn | Onboarding | Segment | Save interests-and-goals updates on the profile page |
Methodology & Freshness
This page is a static snapshot generated by extracting event definitions from both repositories. To keep it fresh, re-run the commands below and regenerate.
Backend enumeration
# From platform-backend/src — the authoritative catalog is the class glob, # NOT the seeders (seeders register only 26 of 135 to a destination). grep -rlE "extends SegmentEvent(Contract)?\b" app --include='*.php' | wc -l # 135 grep -rhoE "eventName = ['\"][^'\"]+['\"]" app --include='*.php' grep -rhoE "const EVENT_NAME = ['\"][^'\"]+['\"]" app --include='*.php' grep -rA15 "eventDetails = \[" app --include='*.php' # payload keys
Frontend enumeration
# From platform-frontend grep -rhoE "trackEvent\(['\"][^'\"]+['\"]" src --include='*.vue' --include='*.js' | sort -u
To keep this fresh
- Re-run the greps above; diff the backend class count and the frontend unique-name list against the stat strip.
- Re-run the generator (prototypes/.build-event-dictionary.py) to rebuild the embedded data and this page.
- Flag naming inconsistencies you find — e.g. the frontend fires both User Bookmarked a Lesson and lowercase User bookmarked a lesson, which Segment sees as two events.