Event types
Every event Heizen sends and what its data.object holds.
| Type | data.object | When |
|---|---|---|
invitation.created | invitation | An invitation is created, from the API, dashboard, bulk invite or an import |
invitation.expired | invitation | A pending link passed its expires_at without the candidate starting |
session.started | session | The candidate started the interview |
session.completed | session | The candidate finished; scoring begins |
session.abandoned | session | The candidate left and did not return |
result.ready | result | Scoring finished |
result.updated | result | A ready result changed, for example after a rescore |
import.completed | import | An import finished processing |
export.ready | export | An export file is ready to download |
webhook.test | { "object": "webhook_test", … } | You sent a test event. Never sent otherwise. |
Choose * to receive every type, including ones added later.
Cancelling an invitation does not send an event. The session shows status: "cancelled" when you next read it.
A typical flow
For one candidate, a live endpoint subscribed to everything sees:
invitation.createdsession.startedsession.completedresult.ready
and possibly result.updated later. If the candidate never starts, you get invitation.expired instead of the rest.
The event object
| Field | |
|---|---|
id | evt_…, also sent as the webhook-id header |
object | "event" |
type | One of the types above |
api_version | The API version the payload follows |
livemode | |
created_at | When the event happened |
data.object | The resource |
You can read past events through the Events API.