Registering a webhook
secret — store it securely. It is shown only once.
Signature verification
Every webhook delivery includes anX-Edpire-Signature header. Always verify it before processing:
Available events
| Event | Triggered when | Key payload fields |
|---|---|---|
submission.graded | Learner submits and assessment is graded | submission_id, assessment_id, learner_ref, score, max_score, percentage, passed, submitted_at, source |
assessment.published | Assessment published for the first time | assessment_id, share_code, title |
assessment.content_updated | Published assessment content is updated (republish or manual trigger) | assessment_id, title |
assessment.archived | Assessment archived | assessment_id |
assessment.updated | Assessment title/description/settings changed | assessment_id, title |
collection.created | New collection created | collection_id, name |
collection.updated | Collection name/description changed | collection_id, name |
collection.deleted | Collection deleted | collection_id |
collection.item_added | Assessment added to a collection | collection_id, assessment_id, assessment_title, share_code, position |
collection.archived | Collection archived | collection_id |
collection.item_removed | Assessment removed from a collection | collection_id, assessment_id |
collection.reordered | Collection items reordered | collection_id, item_ids |
Retry behavior
If your endpoint returns a non-2xx status, Edpire retries with exponential backoff:| Attempt | Delay |
|---|---|
| 1st retry | 1 minute |
| 2nd retry | 5 minutes |
| 3rd retry | 30 minutes |
| 4th retry | 2 hours |
| 5th retry | 8 hours |
failing.
Best practices
Respond with 200 immediately
Respond with 200 immediately
Respond before processing. Move heavy logic to a background queue to avoid timeouts.
Handle idempotency
Handle idempotency
The same event can be delivered more than once. Always check whether you’ve already processed a given
submission_id before writing to your database.Log everything
Log everything
Log all incoming events for debugging. The
X-Edpire-Event header tells you the event type without parsing the body.Handle unknown events
Handle unknown events
New event types may be added in future versions. Ignore events you don’t recognize rather than erroring.