WebhooksEvents

Booking events

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/…"
  }
}
FieldNotes
providernative for our own scheduling on your Google Calendar, calcom for a Cal.com connection.
external_uidThe Google event id, or the Cal.com booking uid.
start_at / end_atUTC. Use attendee_timezone to render the visitor's local time.
meet_urlPresent for native bookings with a Google Meet location; null otherwise.
statusconfirmed 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.

Next steps