Developer docs
Events
Every event type and the payload it carries.
On this page (3)
Event types
| Type | Sent when |
|---|---|
booking.created |
A booking is made, from any source: your Bewtee page, the widget, the API or the dashboard. Online bookings are announced once the customer has verified their phone number. |
booking.accepted |
The business (or auto-accept) confirms a pending booking. |
booking.rejected |
The business declines a pending booking. |
booking.cancelled |
The booking is cancelled by the business or the customer. See cancelled_by. |
booking.rescheduled |
The business moves the booking to a new date or time. |
booking.completed |
The appointment is marked completed. |
booking.no_show |
The customer did not arrive. |
booking.expired |
A pending booking was not answered in time. |
ping |
You pressed Send test. Sent regardless of the events you selected. |
A booking created directly as confirmed (for example one the business adds in the dashboard) sends booking.created with status: "accepted" and no separate booking.accepted.
Payload
{
"id": "evt_8k2m4n6p8q0r2s4t6u8v0w2x4y",
"type": "booking.accepted",
"api_version": "v1",
"business_id": 123,
"created_at": "2026-11-16T14:02:11+05:30",
"data": {
"booking": {
"id": 9812,
"status": "accepted",
"date": "2026-11-16",
"time": "14:00",
"starts_at": "2026-11-16T14:00:00+05:30",
"ends_at": "2026-11-16T14:45:00+05:30",
"duration_minutes": 45,
"amount": { "subtotal": 500, "discount": 0, "total": 500, "currency": "INR" },
"payment_method": "pay_at_salon",
"payment_status": "pay_at_salon",
"customer": { "id": 77, "name": "Asha Rao", "phone": "9876543210", "email": "[email protected]" },
"services": [
{ "service_id": 10, "name": "Haircut", "price": 500, "duration_minutes": 45, "quantity": 1, "staff_id": 7 }
],
"status_reason": null,
"cancelled_by": null,
"accept_deadline_at": null,
"status_updated_at": "2026-11-16T14:02:11+05:30",
"created_at": "2026-11-16T14:01:40+05:30"
},
"previous_status": "pending"
}
}
| Field | Description |
|---|---|
id |
Unique event ID. Use it to ignore duplicates. |
type |
The event type. |
api_version |
Version of the payload format. Currently v1. |
business_id |
The business the event belongs to. |
created_at |
When the change happened. |
data.booking |
The booking, in the same shape as the API. Its status is the status this event describes. |
data.previous_status |
Present on status changes. |
data.previous_date, data.previous_time |
Present on booking.rescheduled. |
New fields may be added to payloads at any time. Ignore fields you do not recognise.
Test event
{
"id": "evt_1a2b3c4d5e6f7g8h9i0j1k2l3m",
"type": "ping",
"api_version": "v1",
"business_id": 123,
"created_at": "2026-11-16T10:00:00+05:30",
"data": { "message": "This is a test event from Bewtee." }
}