Webhook events
Use the webhook event type strings in eventTypes when creating or updating a subscription. These are the same lowercase dotted values delivered in webhook payloads (for example patient.created, booking.updated).
Note: All webhook events are non-overlapping, so subscribing to booking.updated does not mean that you will be alerted when booking.patientJourney.arrived happens. You need to specifically subscribe to every event you want to receive.
Payload shape
Each delivered webhook is a JSON object with:
| Field | Description |
|---|---|
subscriptionId | The webhook subscription that received this event |
eventId | Unique ID for this delivery attempt |
eventType | Lowercase dotted event type string (matches your subscription) |
identifiers | String IDs for related records (see event pages below) |
Optional identifier keys are omitted from the payload when they do not apply (they are not sent as null).
Example:
{
"subscriptionId": "692597070fe21cfa5e6a010f",
"eventId": "692597070fe21cfa5e6a010a",
"eventType": "booking.created",
"identifiers": {
"bookingId": "507f1f77bcf86cd799439011",
"patientId": "507f191e810c19729de860ea",
"doctorId": "507f1f77bcf86cd799439012"
}
}
In the event reference pages, required identifiers are always present. Optional identifiers appear only when the related record exists (for example patientId on a booking without a patient is omitted).
Event groups
| Group | Description |
|---|---|
| Availability | Calendar slots, recurring patterns, and blockers |
| Booking | Appointments and patient journey stages |
| Invoice | Invoice lifecycle, line items, payments, and integrations |
| Lab | Lab requests and results |
| Letter | Letters and review status |
| Patient | Patient records and nested sub-resources |
| Patient document | Files and folders in the document library |
| Prescription | Prescriptions and e-prescriptions |
| Product | Product labels |
| Questionnaire | Questionnaire responses |
For subscription setup and signature verification, see the Webhooks guide.