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

# Make and take WhatsApp calls

> Take WhatsApp voice calls in the Inbox and follow up on them automatically.

DMLY takes WhatsApp voice calls directly in the Inbox, so a contact who is already
messaging you can reach you without leaving the conversation. Turn voice calling on for one
of your WhatsApp numbers and the Call button appears on WhatsApp conversations. Outbound
calling is [not currently usable](#place-a-call).

## Turn voice calling on for a number

Open your WhatsApp channel's setup and go to the **Calling** tab. If you see
**Connect your WhatsApp number on the Configuration tab to manage voice calling**, connect
the number first — see [Connect WhatsApp](/channels/whatsapp).

Under **Voice calling** — *Let customers call this number on WhatsApp, and place calls to
them from the inbox* — you have:

| Setting                             | What it does                                                                                                                                         |
| ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Enable voice calling**            | Turns WhatsApp Business calling on for this number. Without it, no Call button appears in the Inbox.                                                 |
| **Auto-grant call-back permission** | Sent to Meta as part of the number's calling settings. It has no effect on DMLY's own outbound permission check — see [Place a call](#place-a-call). |
| **Call button in WhatsApp**         | **Show call button** or **Hide call button** — whether the call icon appears in the customer's WhatsApp chat with you.                               |

Saving confirms with **Voice calling settings updated**.

The page states the commercial reality plainly: *Inbound calls are free and global.
Outbound calls are billed per minute, need the contact's permission, and are unavailable to
recipients in some countries (incl. US, Canada, Nigeria).*

## Place a call

<Warning>
  **Outbound calling is not currently usable.** DMLY only permits an outbound call to a
  contact with a recorded permission grant, and nothing in the app records one — not
  **Auto-grant call-back permission**, and not a contact who answers a **Call Permission**
  request with **ACCEPTED**. Every outbound call is refused with *This contact has not
  granted call permission. Send a call-permission request first.*

  Receiving calls is unaffected. Until this changes, ask contacts to call you.
</Warning>

## Receive a call

Inbound calls ring the team members who have marked themselves available for calls. Only
available users ring, so nobody is interrupted because a teammate left a tab open.

When you answer, the call bar shows **Connecting…** and then the live call, ending at
**Call ended**. The bar lives outside the conversation, so you can move around DMLY
mid-call without dropping it.

Several people can ring for the same call. The first to accept gets it; everyone else's
ringer simply stops with no message, and anyone who had already clicked Answer sees
**Answered elsewhere**. If you have DMLY open in more than one tab, only one tab rings.

Answering a call does not assign the conversation — do that separately if you want the
contact routed back to you. See [Assign a chat](/inbox/assigning-chats).

## Ask a contact for calling permission

Add the **Call Permission** node to a flow to ask a contact to allow voice calls, with a
message like *Can our support team call you about your order?*. The node has **ACCEPTED**
and **DECLINED** exits, so you can branch on the answer.

<Warning>
  An **ACCEPTED** reply lets you branch the flow, but it does not record calling
  permission, so it will not let you place an outbound call — see
  [Place a call](#place-a-call).
</Warning>

<Warning>
  Meta limits permission requests to **1 per 24 hours and 2 per 7 days per contact**. Do
  not loop this node or fire it from a high-volume trigger.
</Warning>

See [Flow builder](/automation/flow-builder).

## Follow up automatically after a call

Calls behave like any other event in DMLY. Four call events can start a flow and are sent
as [webhooks](/api-reference/webhooks):

* **Incoming call** — a customer has started a call, before it is answered.
* **Call completed** — the call connected and finished.
* **Missed call** — nobody answered.
* **Call declined** — the call was declined.

A missed call and a no-answer both arrive as **Missed call** — they are not distinguished.
Call-triggered flows are skipped for contacts whose bot is paused, the same as inbound
messages.

## See how calling is going

The Overview page shows two call tiles, **Calls** and **Call answer rate**. Both appear
only while the active channel is a WhatsApp one — switch to any other channel and neither
renders.

**Call answer rate** is the share of *all* calls that were completed. The total counts
outbound calls alongside missed, declined and no-answer ones, so it is not a measure of how
many inbound calls your team picked up.

## Troubleshooting

<Accordion title="The Call button is missing">
  Check, in order: the conversation is a WhatsApp conversation; the number is connected;
  **Enable voice calling** is on for at least one WhatsApp number in the workspace, in the
  **Calling** tab. The button is driven by a setting cached when the number connects, so if
  you just turned voice calling on, re-save the number or reconnect it.
</Accordion>

<Accordion title="Outbound calls fail">
  Outbound calls are currently refused for every contact, whatever the number or country —
  see [Place a call](#place-a-call). Inbound calls still work and are free, so ask the
  contact to call you.
</Accordion>

<Accordion title="Nothing rings for a teammate">
  Only users who have marked themselves available for calls will ring. Check their
  availability before assuming a fault.
</Accordion>

<Columns cols={2}>
  <Card title="Connect WhatsApp" icon="whatsapp" href="/channels/whatsapp">
    Connect the number calling runs on.
  </Card>

  <Card title="Inbox overview" icon="inbox" href="/inbox/overview">
    Everything else you can do in a conversation.
  </Card>

  <Card title="Flow builder" icon="diagram-project" href="/automation/flow-builder">
    Ask for call permission and follow up after calls.
  </Card>

  <Card title="Notifications" icon="bell" href="/inbox/notifications">
    Stay on top of new conversations and mentions.
  </Card>
</Columns>
