Skip to main content

Overview

Booking webhooks notify your application when a booking (dossier) is created, modified or deleted - including status changes, date/time changes, guest count changes, contact reassignment and custom field edits.
Booking events are currently in beta: the payload structure may still evolve before general availability.

Payload

The data field carries the full booking payload, identical to GET /bookings/{id} - nested events[], financial references and custom fields included.
There is no dedicated status_changed event: a status change is a booking.updated like any other - read status_id (and resolve its type/is_canceled via GET /status) to drive your pipeline.

Delivery semantics

  • One webhook per logical mutation. Changes are coalesced over a short window (~10 seconds): creating a 3-day booking, or changing the status of a multi-event booking, delivers one webhook with the final state - not one per event.
  • No-op suppression. An update that leaves the payload identical to the last delivered one is not delivered.
  • Upsert semantics. The first delivered event for a booking that existed before your webhook was created (or before the feature went live) may be a booking.created. Treat created and updated as upserts of the same resource.
  • Booking ID changes. When a single-event booking gains a second event, its id changes (new group ID). You then receive a booking.updated carrying the new id; the event IDs (events[].id) never change, so match on the events you already hold and re-key your side.
  • New webhooks warm-up. A newly created webhook can take up to 5 minutes to start receiving booking events.
  • Deliveries use the standard envelope, HMAC signature and retry policy - see Webhooks introduction and Security.

Typical integration loop

  1. Subscribe to booking.created + booking.updated + booking.deleted.
  2. On each delivery, upsert the booking in your system keyed by its id, and store the events[].id list: if a later delivery arrives under a new booking id, the shared event IDs identify it as the same booking.
  3. Backfill or reconcile at any time by paging through GET /bookings (optionally windowed with created_from/created_to).