Automations — use the WhatsApp voice event trigger. That binds a dedicated webhook and will not overwrite your New conversation flow.Custom backends — events are also POSTed to the assistant’s conversation webhook URL (the same URL used for new-conversation notifications). Filter incoming POSTs on
"event": "whatsapp_voice".Event types
Payload
Every voice event is a small JSON object. It does not include provider IDs, trunks, recordings, transcripts, or costs.string
Always
whatsapp_voicestring
One of the event types above
integer
WhatsApp sender that owns the chat
string
Customer number in E.164
string
Conversation UUID, or
nullstring
Assistant UUID
string
Assistant name, as shown in the dashboard
string
Current permission status:
pending, granted, rejected, revoked, expired, or nullstring
When granted consent ends, or
nullboolean
Whether you may place a WhatsApp call right now
integer
Present only on
voice_call. Dashboard call id.string
Present only on
voice_call: whatsapp_outbound or whatsapp_inboundTypical automation
- Customer replies to your template (24-hour window opens)
- You request permission
- Your server receives
call_permission_granted - You place the call
- You receive
voice_call, then later the post-call webhook
call_permission_granted, the customer declined, ignored the card, or the ask never delivered. Check Get call permission and WhatsApp Calling.
Delivery
- POST JSON, 10 second timeout, up to 3 retries
- Respond with HTTP 2xx so we do not retry
- Ignore events whose
eventis notwhatsapp_voiceif you also use this URL for new conversations

