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

# WhatsApp

> Connect a WhatsApp Business number from your own Meta app so the agent answers WhatsApp messages, and what the 24-hour window means for your team's replies.

The WhatsApp channel puts the agent on a WhatsApp Business number. Customers message the number in WhatsApp, and the agent answers with the same knowledge, instructions, actions and handover it uses in website chat. Every conversation lands in **Conversations**, marked **WhatsApp**.

It runs on Meta's WhatsApp Cloud API, through a Meta app you own. The number, the Meta business and the app stay yours: Wiredesk holds an access token to reply with, sealed, and nothing else.

## Before you start

You need:

* A **Meta business portfolio** at [business.facebook.com](https://business.facebook.com).
* A phone number for WhatsApp that isn't already registered in the WhatsApp or WhatsApp Business app. To use one that is, delete that WhatsApp account first. Meta's free test number works for trying it out, but it only messages up to five numbers you list.
* An approved display name for the number, which Meta reviews when you add it.

## Set it up in Meta

**1. Create an app**

At [developers.facebook.com/apps](https://developers.facebook.com/apps), click **Create app**. Choose the **Business** type (or the **Connect with customers through WhatsApp** use case) and attach your business portfolio.

**2. Add WhatsApp to the app**

In the app's dashboard, add the **WhatsApp** product. Meta creates a WhatsApp Business Account and a test number. To use your own number, open **WhatsApp → API Setup**, click **Add phone number**, and verify it by SMS or call.

**3. Copy the two IDs**

On **WhatsApp → API Setup**, under the number you'll send from, copy the **Phone number ID** and the **WhatsApp Business Account ID**. They are long numbers, not the phone number itself.

**4. Create a system user and a permanent token**

The token on the API Setup page expires within a day, so make a permanent one:

1. In [Business settings](https://business.facebook.com/settings) → **Users → System users**, click **Add** and create a system user with the **Admin** role.
2. Click **Assign assets**. Give it your app with full control, and your WhatsApp account with full control.
3. Click **Generate new token**, pick your app, set expiry to **Never**, and tick **whatsapp\_business\_messaging** and **whatsapp\_business\_management**.
4. Copy the token. Meta shows it once.

**5. Copy the app secret**

In the app, open **App settings → Basic** and click **Show** next to **App secret**. It is 32 letters and digits.

## Connect it in Wiredesk

**1. Paste the four values**

Open **Agents → your agent → Channels → WhatsApp**. Paste the **Phone number ID**, **WhatsApp Business Account ID**, **Access token** and **App secret**, and click **Connect**.

Wiredesk checks them with Meta before saving anything: that the token works, that the number is in that account, and that the app secret belongs to the token's app. It also subscribes your app to the account's webhooks. If something is wrong, the form shows what Meta said. Connecting switches **Answer WhatsApp messages** on.

**2. Point Meta's webhook at Wiredesk**

The **Setup** card now shows a **Callback URL** and a **Verify token**, each with a copy button. In your Meta app, open **WhatsApp → Configuration**, click **Edit** under **Webhook**, paste both, and click **Verify and save**.

**3. Subscribe to messages**

Still on **WhatsApp → Configuration**, under **Webhook fields**, click **Manage** and subscribe to **messages**. Without it, Meta sends Wiredesk nothing.

**4. Send a test**

Message the number from your own phone. The agent answers within seconds. The **Setup** card shows when Meta checked the webhook and when the last message arrived.

> [!NOTE]
>
> Every agent uses the same callback URL, so one Meta app can serve several agents, each with its own number. A number can only be connected to one agent at a time. Each agent has its own verify token; Meta needs any one of them to save the webhook.

> [!NOTE]
>
> While your Meta app is in development mode, only people with a role on the app (and the numbers you list for the test number) can reach it. Switch the app to **Live** in the app dashboard before customers write in.

## How the agent answers

* **What it reads:** text messages, and the label of a button or list option the customer taps. Photos, voice notes, videos, documents, stickers, locations and contact cards aren't read yet: the conversation records what arrived (with the caption, if any), and the agent replies "Sorry, I can only read text messages here. Could you type that out for me?". That reply isn't billed.
* **How it writes:** short, like a text message. Bold shows as WhatsApp bold, lists stay lists, and links are written out in full, which WhatsApp makes tappable.
* **Who it is:** the customer's number. Someone who messages on WhatsApp and also calls your phone line is one contact, and their WhatsApp profile name is saved as their name if you don't have one yet.
* **Conversations:** messages within 24 hours of each other are one conversation. After 24 quiet hours, the next message starts a new one.
* **Actions:** the agent uses the actions available on **Chat**. WhatsApp is a chat, so an action limited to chat applies here too.

## The 24-hour window

WhatsApp lets a business send free-form messages only within 24 hours of the customer's last message. After that, only pre-approved message templates go through, which Wiredesk doesn't send yet.

The agent is always inside the window: it answers a message that just arrived. Your team's replies can come later, so the conversation page tells you where you stand. Under **Reply as owner** it says until when WhatsApp will take a reply. Once the window has closed, it says so, and a reply you send is refused with "WhatsApp only delivers a reply within 24 hours of the customer's last message, and that has passed. Nothing was sent." The window opens again when the customer writes.

## When a person needs to step in

Handover works as it does for website chat. See [A person in chat & email](https://wiredesk.ai/docs/actions/request-a-human.md), on **Handoff**.

* The agent flags the conversation and you're notified.
* Whoever replies from the conversation page takes it over. The reply goes out on WhatsApp from the agent's number, and the agent stays quiet until the conversation is handed back, which happens after half an hour of silence from that person.
* If nobody replies within about ten minutes, the agent tells the customer on WhatsApp that nobody is free, and carries on.

## When the agent doesn't reply

* **WhatsApp is switched off.** Messages are ignored and not saved. The number stays connected.
* **A person has taken over.** The message is saved, and your reply is the next one.
* **Your spend cap is reached.** Messages are saved but not answered until the month rolls over or you raise the cap. See [spend cap](https://wiredesk.ai/docs/account/spend-cap.md).
* **One number is writing very fast.** The agent sends at most 30 replies an hour to one number. Later messages are saved but not answered until the hour has passed.
* **The conversation is past the agent's [message limit](https://wiredesk.ai/docs/persona/message-limit.md).** The customer gets one fixed reply, and later messages are saved without a reply.
* **The same message arrives twice.** Meta resends a message when it isn't sure it arrived. The repeat is ignored.

## When something goes wrong

If Meta refuses a reply, the reason appears in red on **Channels → WhatsApp**: an expired or revoked access token, a customer outside the 24-hour window, or a test number messaging someone not on its list. It clears the next time a message goes through. To fix a token, open **Replace credentials** on the same card and paste a new one; the callback URL and verify token stay the same.

**Disconnect** deletes the access token and app secret from Wiredesk. Messages to the number stop being answered, and past conversations stay. Remove the webhook in your Meta app too.

## What it costs

Each agent reply on WhatsApp counts as one reply of usage, the same as chat. Replies your team writes don't count. Meta doesn't charge for replies inside the 24-hour window; anything Meta does bill goes to your Meta account. See [plans and limits](https://wiredesk.ai/docs/reference/plans-and-limits.md).

## Related

* [Channels](https://wiredesk.ai/docs/concepts/channels.md)
* [Wording for one channel](https://wiredesk.ai/docs/persona/channel-wording.md)
* [A person in chat & email](https://wiredesk.ai/docs/actions/request-a-human.md)
* [Handover](https://wiredesk.ai/docs/concepts/handover.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.