booking.created, booking.rescheduled and booking.canceled
All three events carry the same booking object. The two change events add one field describing what changed.
The booking object
{
"booking": {
"id": "5e9c…",
"chatbot_id": 17,
"conversation_id": 8214,
"name": "Ada Lovelace",
"email": "[email protected]",
"event_label": "Intro call",
"provider": "native",
"external_uid": "abc123…",
"start_at": "2026-09-02T14:00:00.000Z",
"end_at": "2026-09-02T14:30:00.000Z",
"attendee_timezone": "Europe/Dublin",
"status": "confirmed",
"created_at": "2026-08-26T10:05:00.000Z",
"meet_url": "https://meet.google.com/…"
}
}| Field | Notes |
|---|---|
provider | native for our own scheduling on your Google Calendar, calcom for a Cal.com connection. |
external_uid | The Google event id, or the Cal.com booking uid. |
start_at / end_at | UTC. Use attendee_timezone to render the visitor's local time. |
meet_url | Present for native bookings with a Google Meet location; null otherwise. |
status | confirmed or canceled. |
booking.created
Fires when a meeting is booked, whether the visitor picked a slot from the booking card or asked the agent to book it in conversation.
booking.rescheduled
Adds the previous start so you can update an existing record. The id does not change on a reschedule.
{
"booking": { "…": "…" },
"previous_start_at": "2026-09-01T09:00:00.000Z"
}booking.canceled
Adds the reason, when one was given. cancel_reason is null when the booking was cancelled without one, and the booking object's status reads canceled.
{
"booking": { "…": "…" },
"cancel_reason": "Something came up"
}For native bookings we already email the visitor a confirmation, a reschedule notice, a cancellation and 24-hour and 1-hour reminders. Use these events for your systems, not for the visitor's messages.