Webhook Events
Reference for all events Empfio sends to registered webhook endpoints.
Event envelope
Every event uses the same outer structure:
{
"event": "booking.created",
"timestamp": "2026-03-07T10:30:00Z",
"organization_id": "550e8400-e29b-41d4-a716-446655440000",
"data": { ... }
}| Field | Type | Description |
|---|---|---|
event | string | Event type identifier |
timestamp | string | ISO 8601 timestamp of when the event occurred |
organization_id | UUID | The organization this event belongs to |
data | object | Event-specific payload (varies by event type) |
Lead events
lead.created
Fired when a new lead is captured from any channel.
{
"event": "lead.created",
"timestamp": "2026-03-07T10:00:00Z",
"organization_id": "550e8400-...",
"data": {
"id": "660f9500-...",
"name": "Jane Smith",
"email": "jane@example.com",
"phone": "+49123456789",
"channel": "whatsapp",
"status": "new",
"created_at": "2026-03-07T10:00:00Z"
}
}lead.status_changed
Fired when a lead's status is updated (e.g. from new to contacted to booked).
{
"event": "lead.status_changed",
"timestamp": "2026-03-07T10:05:00Z",
"organization_id": "550e8400-...",
"data": {
"id": "660f9500-...",
"previous_status": "new",
"status": "booked"
}
}Booking events
booking.created
Fired when an appointment is confirmed via Cal.com.
{
"event": "booking.created",
"timestamp": "2026-03-07T10:10:00Z",
"organization_id": "550e8400-...",
"data": {
"id": "770a9400-...",
"lead_id": "660f9500-...",
"start_time": "2026-03-20T14:00:00Z",
"end_time": "2026-03-20T14:30:00Z",
"service": "Haircut",
"calcom_booking_id": 12345
}
}booking.cancelled
Fired when a booking is cancelled (either from the Empfio dashboard or via a Cal.com webhook).
{
"event": "booking.cancelled",
"timestamp": "2026-03-08T09:00:00Z",
"organization_id": "550e8400-...",
"data": {
"id": "770a9400-...",
"lead_id": "660f9500-...",
"start_time": "2026-03-20T14:00:00Z",
"end_time": "2026-03-20T14:30:00Z",
"cancelled_at": "2026-03-08T09:00:00Z"
}
}Conversation events
conversation.escalated
Fired when the AI agent escalates a conversation to a human team member.
{
"event": "conversation.escalated",
"timestamp": "2026-03-07T10:12:00Z",
"organization_id": "550e8400-...",
"data": {
"conversation_id": "880b0500-...",
"lead_id": "660f9500-...",
"channel": "telegram",
"reason": "Customer explicitly requested a human"
}
}Using events with integrations
These webhook events can be consumed by:
- Zapier — use "Webhooks by Zapier → Catch Hook" as a trigger
- Make — use the "Custom webhook" module as a trigger
- Custom webhooks — send events to your own HTTPS endpoint
- Any system that can receive HTTP POST requests with JSON payloads