Official Cloud API only. WhatsApp Calling is a feature of the official WhatsApp Cloud API (WABA). It isn’t available on the Unofficial API or Twilio — calling only works on a WABA number. See Connect Your WhatsApp Number.
Prerequisites
All of these must be in place before a number can place or take calls:Configure the calling webhook
Meta sends call events to Soneka over a dedicated webhook, separate from the messages webhook.1
Set the callback URL
https://YOUR-DOMAIN/webhooks/wa-calling2
Set the verify token
Use the value your admin set under Admin → Settings → WhatsApp Message. Meta’s verification check only passes when this matches.
3
Set the WABA app secret
On the same admin screen. Every incoming call webhook is checked against this secret to prove it really came from Meta; if it isn’t set, Soneka refuses the webhook outright (there’s no bypass, because each call changes your workspace’s data).
4
Subscribe the calls field
In Meta’s webhook settings, subscribe your WhatsApp Business Account to the calls field.
Per-number status & enabling calling
The WhatsApp Calling settings list shows every WABA number in the workspace with its current state:- Phone number and display label.
- Connection status — the provider connection health.
- Calling enabled — whether voice calling is on for that number, and when it was last enabled.
Microphone permission
Voice runs entirely in your browser, so it must be allowed to use the microphone. Soneka turns the mic on before connecting the call; otherwise the call would be one-way and the customer would hear silence. The first time you start or accept a call, the browser asks for microphone access — grant it. If it’s blocked, Soneka stops the call with a clear error (“Microphone access blocked — the caller will not hear you”) rather than connecting a one-way call. Re-enable the microphone for the site in your browser settings and try again.Two different “permissions”. The microphone permission is a browser setting on your own device. It’s separate from the customer calling permission — the consent the customer gives in WhatsApp before you can dial them (see below).
Outbound dialling
To call a customer, open a conversation on a calling-enabled WABA number and click Call. What happens:1
Your browser turns on the mic
And sets up the call connection.
2
Soneka checks the customer's calling permission
Then asks Meta to place the call to their number. The call is recorded so you can find it later.
3
The on-call panel appears
With a live timer. When the customer answers, the audio connects. Use Mute and Hang up from the panel.
Incoming calls: toast, accept & reject
When a customer calls one of your enabled numbers, Team Inbox shows an incoming-call popup with the caller’s name and number. The inbox checks for ringing calls every few seconds, and the popup offers:- Accept — answer the call.
- Decline — reject the call. The customer stops ringing and the call is recorded as rejected.
Accepting a call
- Your browser connects to the customer’s call and turns on the mic.
- Soneka tells Meta you’ve accepted, and the audio connects between your browser and the customer.
- The on-call panel takes over with the live timer, mute, and hang-up controls. Hang up ends the call; Meta then confirms the final duration and reason.
Built for a shared team. If two teammates click Accept on the same ringing call, the first one wins and the second sees “already accepted by another teammate”. Accepting also tells the AI agent to stand down, so an AI and a person don’t both answer.
AI answering & the voicemail fallback
When a call comes in, Soneka decides who picks up. It first looks for an AI Call Assistant to attach — one pinned to the conversation, the workspace default, or the first active Live assistant. What happens next depends on whether an assistant is set up and the voice service is available:- Live AI pickup (the main path). If an assistant is found, it answers the call, speaks its greeting, and holds a real spoken conversation: it transcribes the caller’s speech (Deepgram), sends it to your chosen AI model, turns the reply into a voice (ElevenLabs), and plays it back — on a loop. Once the AI claims the call, the voicemail timer stands down.
- Voicemail fallback. If no assistant is set up, the voice service is unavailable, or Deepgram / ElevenLabs keys are missing, the call is declined so the customer stops ringing. After a short wait (15 seconds by default), Soneka sends a spoken voicemail voice note over chat (“Sorry we missed your call — please reply and we’ll get back to you”). The wording comes from the assigned voice agent, and a note is added to the conversation so the operator can see what the AI said. If no voice-enabled AI agent exists, the call is simply declined and logged as missed.
Call recording (3-way) & transcript
Recording applies to AI-answered calls and is set per assistant in the AI Call Assistant’s routing step. It needs the Call Recording plan feature. Two independent switches control which audio is captured:- Record agent — the AI’s spoken side.
- Record caller — the customer’s side.