> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ouraicalling.com/llms.txt
> Use this file to discover all available pages before exploring further.

# WhatsApp Voice

> How WhatsApp calling works on the platform — setup and product UX

<Warning>
  Outbound WhatsApp calling is a workspace-gated Beta capability, is only
  available in supported regions, and requires explicit permission from the
  recipient. Multi-channel campaigns request permission automatically, show
  the lead as **Awaiting permission**, and only dial after a signed grant
  webhook. A decline or expiry is terminal for that delivery.
</Warning>

Campaign calls include `campaign_id`, `lead_id`, lead fields, mapped variables,
and the campaign timezone in the agent dispatch. WhatsApp media never enters
the SIP dial path.

WhatsApp **voice calls** use the platform’s WhatsApp voice connector. The same voice agent that answers phone calls also answers WhatsApp calls.

Product setup (credentials, webhook, toggles, templates): **Settings → Channels → WhatsApp** — see [WhatsApp (Text + Voice)](/channels/whatsapp).

Text chat uses the Cloud API path on the same connector (`messages` webhook field). Voice uses the same webhook URL with the `calls` field.

## What the end user sees

1. Customer taps **call** on your WhatsApp Business number (or answers an outbound call).
2. Normal WhatsApp call UI (ringing → connected).
3. Your assistant speaks like on a phone line (STT/LLM/TTS in the call session).
4. After hang-up: same History / analysis / credits path as other voice calls.

There is no custom in-app WhatsApp dialer for the customer — they stay in WhatsApp.

## What workspace admins will see (product)

**Settings → Channels → WhatsApp**:

1. Connect Meta credentials (Phone Number ID + permanent System User token + app secret + verify token + WABA ID), or use **Connect with Meta**.
2. Assign an assistant.
3. Copy webhook URL for Meta (`messages` + `calls` + template status).
4. Enable voice inbound / outbound toggles (outbound is region-dependent + Meta user permission).
5. Optional: place a test WhatsApp call from the same panel.

Webhook route: `https://app.famulor.io/api/webhooks/messaging/whatsapp/{connectorId}`.

Outbound API: `POST /api/calls/whatsapp-outbound`.

## Apps / accounts you need

1. [Meta Developer](https://developers.facebook.com/) account.
2. WhatsApp Business Account (WABA) with a business phone number.
3. **Voice calling** enabled on that number (Cloud API v23/v24).
4. Meta app with WhatsApp product + permanent **System User** access token (or Embedded Signup).
5. Platform voice infrastructure with WhatsApp calling enabled (operator-configured).

## Meta setup (step by step)

1. Create / open a Meta app → add **WhatsApp**.
2. Under WhatsApp → API Setup, note:
   * **Phone number ID**
   * **Access token** (use a long-lived System User token in production)
3. WhatsApp → Configuration → Webhooks:
   * Callback URL: `https://app.famulor.io/api/webhooks/messaging/whatsapp/{connectorId}` (or the platform WhatsApp webhook)
   * Verify token: the connector verify token (or platform verify token for the app-level callback)
   * Subscribe at least to **`calls`** (and **`messages`** for text)
   * Use API version **v23.0** or **v24.0** consistently
4. Enable call permissions:
   * Inbound: configure available call hours (user-initiated calls)
   * Outbound: only in supported regions + explicit user permission

## Call flow (product)

### Inbound

1. User calls your WhatsApp Business number.
2. Meta POSTs a **call connect** webhook with SDP offer + call id.
3. The platform accepts the call, dispatches the voice agent, and bridges audio into the call session.
4. The assistant runs as on a normal phone call.

### Outbound

1. Workspace (UI / API / MCP) starts an outbound WhatsApp call to the user’s number.
2. Meta rings the user and sends a **call connect** webhook with SDP answer.
3. The platform immediately connects media (delay can cause silence / drop).
4. On hang-up: Meta **call terminate** → platform disconnects the session.

## Related

* [WhatsApp (Text + Voice)](/channels/whatsapp)
* [Messaging channels](/channels/messaging)
* [Phone numbers](/telephony/phone-numbers)
