Event Types
Subscribe to specific events to receive only the notifications your application needs.
Booking Events
| Event | Triggered When |
|---|---|
booking.created | A new booking is created |
booking.confirmed | Booking is confirmed (auto or manual) |
booking.rescheduled | Booking date/time is changed |
booking.cancelled | Booking is cancelled |
booking.started | Crew checks in at the service location |
booking.completed | Crew checks out, service is done |
booking.no_show | Customer was not available for service |
Customer Events
| Event | Triggered When |
|---|---|
customer.created | New customer account is created |
customer.updated | Customer profile information changes |
customer.deactivated | Customer account is deactivated |
Invoice Events
| Event | Triggered When |
|---|---|
invoice.created | New invoice is generated |
invoice.sent | Invoice email is sent to customer |
invoice.paid | Invoice is fully paid |
invoice.overdue | Invoice passes its due date unpaid |
invoice.voided | Invoice is voided/cancelled |
Payment Events
| Event | Triggered When |
|---|---|
payment.succeeded | Payment is successfully processed |
payment.failed | Payment attempt fails |
payment.refunded | A refund is processed |
Subscription Events
| Event | Triggered When |
|---|---|
subscription.created | New recurring subscription starts |
subscription.renewed | Subscription successfully renews |
subscription.paused | Subscription is paused |
subscription.resumed | Subscription resumes from pause |
subscription.cancelled | Subscription is cancelled |
Using Wildcards
Subscribe to all events in a category using the wildcard:
{
"events": ["booking.*", "payment.*"]
}
Or subscribe to all events:
{
"events": ["*"]
}
Event Payload Structure
Every webhook payload follows this structure:
{
"id": "evt_01HQ3K5M7N8P9R",
"type": "booking.completed",
"created_at": "2026-02-26T15:30:00Z",
"data": {
// Event-specific data (the full object)
},
"previous_data": {
// Previous state for update events (null for create events)
}
}
The data field contains the full object at the time of the event. For update events, previous_data contains the state before the change, allowing you to compute diffs.
On this page