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

# WhatsApp Calling

> Enable voice calling on your WhatsApp Business numbers — inbound and outbound calls via Plivo's Voice API

<Info title="TL;DR">
  * **What:** Make and receive voice calls on your WhatsApp Business numbers using the same Plivo Call API and XML elements as regular calls
  * **How:** In the [WhatsApp Numbers page](https://cx.plivo.com/whatsapp/numbers), open **Configure Number** for your WhatsApp number, set a **Webhook URL** for inbound messages, toggle **Enable WhatsApp Calling**, and set an **Answer URL** for voice calls
  * **Requires:** WABA (WhatsApp Business Account) linked to Plivo, WhatsApp-enabled phone number
  * **Outbound restriction:** Not available from business numbers in US, Canada, Turkey, Egypt, Nigeria, or Vietnam. Users must grant permission first (by calling you or responding to a permission template)
  * **Limitation:** Max 1,000 simultaneous calls per WhatsApp Business number. Cannot forward WhatsApp calls to PSTN
</Info>

Enable voice calling on your WhatsApp Business numbers to connect with customers directly through WhatsApp. Once configured, WhatsApp calls work like any other Plivo voice call — use the same [Call API](/voice/api/calls/) and [XML elements](/voice/xml/overview/) you already know.

**Time to complete:** \~15 minutes

***

## Overview

WhatsApp Calling lets you:

* **Receive inbound calls** from users through your WhatsApp Business number
* **Make outbound calls** (Business Initiated Calling) to users who have granted permission

***

## Prerequisites

* A Plivo account — [sign up](https://cx.plivo.com/signup)
* A WhatsApp Business Account (WABA) linked to Plivo — see [WABA Onboarding](/messaging/concepts/whatsapp/waba-onboarding)
* A WhatsApp-enabled phone number
* A server endpoint to handle webhooks (for testing, use [ngrok](https://ngrok.com/) or similar)

***

## Setup

<Note>
  **New console flow.** In the current Plivo console, you no longer need to create an XML Application for WhatsApp Calling. Configure your Webhook URL (for inbound messages) and Answer URL (for voice calls) directly on the WhatsApp number.
</Note>

### Step 1: Open the Configure Number modal

1. Go to [WhatsApp → Numbers](https://cx.plivo.com/whatsapp/numbers) in the Plivo console.
2. Click the WhatsApp number you want to enable calling on.
3. The **Configure Number** side panel opens.

### Step 2: Set the Webhook URL

The Webhook URL receives inbound message events (text, media, replies) from your WhatsApp number.

1. Under **Configuration Type**, select **Webhook URL**.
2. In the **Webhook URL** field, enter your endpoint — for example, `https://yourdomain.com/whatsapp/webhook`.

<Note>
  If you're building with Plivo AI Agents instead of a custom backend, select **AI Agents** under Configuration Type. See [Voice Agents](/voice-agents/audio-streaming/overview) for the agent setup flow.
</Note>

### Step 3: Enable WhatsApp Calling and set the Answer URL

1. Toggle **Enable WhatsApp Calling** on.
2. In the **Answer URL** field, enter the endpoint that returns Plivo XML to handle inbound calls — for example, `https://yourdomain.com/whatsapp/answer`.

The Answer URL must return a valid [Plivo XML](/voice/xml/overview/) response. Use standard XML elements — [Speak](/voice/xml/audio-output#speak), [Play](/voice/xml/audio-output#play), [GetInput](/voice/xml/input), [Dial](/voice/xml/routing#dial) — just like any other Plivo voice call.

### Step 4: Choose the Account Mapping

Under **Account Mapping**, choose the Plivo account that should own the WhatsApp traffic:

* **Main Account** — applies to the whole WABA
* **Subaccount** — route WhatsApp traffic to a specific subaccount

<Warning>
  **Account Mapping applies to the entire WhatsApp Business Account.** It affects every number linked to this WABA, not just the number you're configuring. Changing it for one number changes it for all.
</Warning>

### Step 5: Save the configuration

Click **Save changes**. Once enabled, users see a call button next to your WhatsApp number in the WhatsApp app.

### Step 6: Configure calling hours (optional)

Set when users can call your business number from Meta Business Manager:

1. Open **Meta Business Manager → WhatsApp Manager → Phone Numbers**.
2. Select your number → **More → Calls → Available call hours**.
3. Configure your availability.

### Step 7: Test inbound calls

1. Call your WhatsApp Business number from any WhatsApp account.
2. Verify:
   * The call connects
   * Audio routes to your Answer URL endpoint
   * Two-way audio works

**Troubleshooting:** Check [Voice → Logs](https://cx.plivo.com/voice/logs) in the Plivo console if issues occur.

***

## Making Outbound Calls (Business Initiated Calling)

### Get permission first

Per Meta's guidelines, you must obtain explicit permission before calling a WhatsApp user.

**Method 1 — Request permission via message.** Send a permission request using a WhatsApp template message or free-form message. To create a callback permission template:

1. Open **Meta Business Manager → WhatsApp Manager → Manage Templates → Create Template**.
2. Select **Calling permissions request** under Marketing or Utility.
3. Configure the template and submit for approval.

**Method 2 — Automatic callback permission.** When a user calls your business first, they automatically grant temporary callback permission (if enabled on your number in Meta Business Manager).

### Place the call

Use the [Dial XML element](/voice/xml/routing#dial) to initiate WhatsApp calls. Required parameters:

| Parameter  | Description                                              | Example                     |
| ---------- | -------------------------------------------------------- | --------------------------- |
| `callerId` | Your WhatsApp Business number (must be WhatsApp-enabled) | `918035737458`              |
| `callType` | Must be `whatsapp` for WhatsApp calls                    | `whatsapp`                  |
| `<User>`   | Recipient's WhatsApp phone number (E.164 format)         | `<User>919412341234</User>` |

See the [Call API](/voice/api/calls/) reference for the full set of options.

***

## Limitations and Restrictions

### Geographic restrictions

Outbound calls are **not available** from business numbers in:

* United States
* Canada
* Turkey
* Egypt
* Nigeria
* Vietnam

This restriction applies to your business phone number's country code only. Users can call from any country where the WhatsApp Cloud API is available.

### Call routing

* Calls **cannot** be forwarded to PSTN (traditional phone) numbers
* Calls **must** be answered via a Cloud platform
* WhatsApp-to-WhatsApp call forwarding is not supported

### Capacity limits

* **Maximum concurrent calls:** 1,000 simultaneous calls per WhatsApp Business number
* Your Plivo account's [CPS (Calls Per Second)](https://support.plivo.com/hc/en-us/articles/22640156915609-Calls-per-Second-CPS) limits apply to all calls combined (including WhatsApp calls). Check your CPS limits in the [Plivo Console](https://cx.plivo.com/home).

### Permission rules

| Rule                    | Limit                | Details                      |
| ----------------------- | -------------------- | ---------------------------- |
| **Request frequency**   | Once per 24 hours    | Maximum 2 requests in 7 days |
| **Calls allowed**       | 5 calls per 24 hours | After permission granted     |
| **Permission duration** | 7 days               | From approval date           |
| **Auto-revocation**     | After 4 missed calls | Consecutive missed calls     |

**Permission expires in these scenarios:**

1. **Time-based expiration** — 7 days after approval, rejection, or no response.
2. **New permission granted** — when a new call permission request is approved.
3. **Missed call warnings** — after 2 consecutive missed calls, the user is prompted to reconsider permission. After 4 consecutive missed calls, permission is automatically revoked.

***

## Related

* [Configure Number Modal](/whatsapp/console/configure-number) — UI reference for the full Configure Number panel
* [WhatsApp Numbers Page](/whatsapp/console/numbers-page) — UI reference for the Numbers tab
* [WABA Onboarding](/messaging/concepts/whatsapp/waba-onboarding) — Link your WhatsApp Business Account to Plivo
* [Call API Reference](/voice/api/calls/)
* [Plivo XML Reference](/voice/xml/overview/)
