Tableo Restaurant API
Webhooks

Webhook Events

Complete reference of webhook event types emitted by Tableo.

Tableo delivers the following event types to your webhook URLs. Subscribe to a subset of them via the events[] field when creating or updating a webhook.

Booking events

All booking events include the booking snapshot under data.booking. Status transitions emit a single status-specific event — they do not also emit booking.updated.

booking.created

A new booking was created.

booking.updated

A booking was edited without a status change. Triggers include changes to date, time, party size/covers, dining area, table reassignment, patron, or reference.

The payload adds data.changes.updated_fields: an array naming the booking fields that changed in this edit. Possible values:

  • date
  • time
  • end_time
  • no_of_adults
  • no_of_children
  • dining_area_id
  • patron_id
  • reference
  • table_histories

Status changes do not trigger booking.updated — they use the status-specific events below.

booking.confirmed

The booking transitioned to confirmed.

booking.accepted

The booking transitioned to accepted.

booking.cancelled

The booking transitioned to cancelled.

booking.rejected

The booking transitioned to rejected.

booking.noshow

The booking transitioned to no-show.

booking.seated

The booking transitioned to arrived / seated.

Test event

webhook.ping

Synthetic test delivery emitted only by the test endpoint (POST /api/restaurant/webhooks/{webhook_id}/test).

webhook.ping is not a subscribable event. It is delivered to the target webhook regardless of its events[] subscription, and is signed with the webhook's secret so you can verify your signature-checking code end-to-end.

Delivery semantics

  • At-least-once delivery. A single event may be delivered more than once — always deduplicate by X-Webhook-Id (or the payload id).
  • Retries. Any non-2xx response or network error is treated as a failure and retried automatically, up to max_attempts (3). Retries may arrive out of order relative to other events.
  • No global sequence. There is no monotonic global event sequence. Use X-Webhook-Delivery-Id for best-effort ordering within a single webhook.

See Create a webhook subscription for the full list of delivery headers and signature verification.

On this page