Webhook Management API
Register and manage outbound webhook endpoints.
Webhooks let you receive real-time notifications when events happen in Empfio — a new lead is captured, a booking is created, a conversation is escalated. Instead of polling the API, your server receives a POST request with the event data.
Setup via dashboard
The easiest way to manage webhooks:
- Go to Settings → Integrations → Webhooks
- Click Add webhook
- Enter your HTTPS endpoint URL
- Select which events to subscribe to
- Save — Empfio sends a test ping to verify the URL
Inbound webhook endpoints
These are the endpoints where Empfio receives events from external services:
Agent events
POST /api/v1/webhooks/agent-eventReceives events from the LangGraph agent service. Used internally — the agent calls this endpoint to report lead creation, status updates, booking requests, and escalations.
Event types: new_lead, status_update, booking_request, message_logged, escalation.
This endpoint is authenticated via an internal Bearer token (INTERNAL_AUTH_TOKEN in your environment configuration).
Cal.com events
POST /api/v1/webhooks/calcomReceives webhook events from Cal.com when bookings are created, cancelled, or rescheduled.
Supported trigger events:
BOOKING_CREATED— a new booking was made in Cal.comBOOKING_CANCELLED— a booking was cancelledBOOKING_RESCHEDULED— a booking was moved to a different time
Cal.com webhook signatures are verified using the CALCOM_WEBHOOK_SECRET if configured.
Outbound webhook payload
When you register a webhook URL, Empfio sends POST requests with this envelope:
{
"event": "booking.created",
"timestamp": "2026-03-07T10:30:00Z",
"organization_id": "550e8400-...",
"data": { ... }
}See Webhook Events for the complete list of events and their data payloads.
Security
Each outbound webhook request includes an X-Empfio-Signature header — an HMAC-SHA256 signature of the raw request body, signed with your webhook secret.
To verify a webhook:
- Read the raw request body
- Compute
HMAC-SHA256(body, your_webhook_secret) - Compare the result with the
X-Empfio-Signatureheader value
Retries
If your endpoint returns a non-2xx response or times out (10 seconds), Empfio retries with exponential backoff — up to 3 attempts over 30 minutes. After all retries fail, the event is logged as failed.
Event deduplication
Empfio includes deduplication logic for agent events. If the same event is received twice within 60 seconds, the duplicate is discarded and a {"status": "duplicate"} response is returned.