Skip to main content

Events

Select the events you want under Workspace Settings > Integrations > Webhooks > Events. You must subscribe to at least one. There is also webhook.test, sent only when you click Send test event. Learner activity never triggers it.
The test payload has a different shape from a real event. If your handler branches on event, give webhook.test an explicit case or ignore it. See The test payload.

Request headers

Every delivery is a POST with these headers:

Event payload

course.completed and course.progress_updated share this shape. Only event and the progress values differ.

Field reference

progress.status can be null, and progress.completed_at is null on every course.progress_updated that has not reached completion. Handle both cases.

The test payload

The test event carries a flat message plus a nested sample object, rather than the top-level user, course, and progress of a real event.
The sample object contains placeholder values such as id: 0 and test@example.com. Never write it to your database.
Next: Verify signatures