# How to connect WhatsApp Business to OpenClaw (no access tokens)

> Connect WhatsApp Business to OpenClaw with ClawLink: no permanent access token, no app secret, no phone-number-ID plumbing. 17 WhatsApp tools your agent can call from chat. Requires a WhatsApp Business Account with Cloud API access.

Web version: https://claw-link.dev/openclaw/whatsapp

The usual route to WhatsApp Business access for OpenClaw is an MCP server you configure and keep running, plus your own OAuth app or API keys. ClawLink gives OpenClaw a more practical WhatsApp Business setup: install one ClawHub skill, connect WhatsApp Business in the browser, and OpenClaw can call real WhatsApp Business actions from any chat surface with no auth, token refresh, or tool wiring to build yourself.

**Start here:** install the ClawLink plugin (`openclaw plugins install clawhub:clawlink-plugin`), pair it in the browser, then connect the app in the ClawLink dashboard. The interactive install prompt is on the web version of this page: https://claw-link.dev/openclaw/whatsapp

## Setup

It takes three steps to connect OpenClaw to WhatsApp Business.

1. **Install ClawLink** — add the plugin to OpenClaw once.
2. **Connect WhatsApp Business** — one-click OAuth in the ClawLink dashboard.
3. **Use it from chat** — ask OpenClaw in plain English.

**Alternative for any agent (no plugin needed):** if the OpenClaw plugin route isn't available or doesn't work, any AI agent with shell access can use the ClawLink CLI instead:

```bash
npx -y @useclawlink/cli login          # sign in via browser — no API key to paste
npx -y @useclawlink/cli connect whatsapp  # connect WhatsApp Business (browser OAuth)
npx -y @useclawlink/cli actions whatsapp  # list available actions
npx -y @useclawlink/cli run whatsapp <action> --input '<json>'  # execute (add --confirm for writes)
```

### Install by command

The setup prompt above does all of this in one paste. By hand, it is one install command plus a browser approval:

```bash
openclaw plugins install clawhub:clawlink-plugin
```

Then ask OpenClaw to set up ClawLink. It starts browser pairing and prints an approval link — open it, approve the device, return to the chat, and say `done`. Finally, connect WhatsApp Business in the [ClawLink dashboard](https://claw-link.dev/dashboard) — a one-click OAuth approval, no API keys.

Verify the connection by asking OpenClaw:

> Use whatsapp_get_phone_numbers to pick the right sending number, then reply to \<customer number> with whatsapp_send_message answering their last question. Show me the text before sending.

### Using a different agent?

The OpenClaw plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

```bash
npx -y @useclawlink/cli login
```

`login` opens the same browser approval and stores a credential locally. Once WhatsApp Business is connected in the dashboard, that agent calls the same 17 WhatsApp Business tools over MCP. Full setup for MCP clients and shell agents: [connect apps to any AI agent](https://claw-link.dev/learn/connect-apps-to-any-ai-agent).

## WhatsApp Business MCP for OpenClaw

Looking for a WhatsApp Business MCP server for OpenClaw? ClawLink connects WhatsApp Business to OpenClaw and exposes 17 WhatsApp Business tools your agent can call over [MCP](https://claw-link.dev/learn/what-is-an-mcp-server), with [hosted auth](https://claw-link.dev/learn/oauth-for-ai-agents) and nothing to run or maintain yourself. Using Hermes instead? The [Hermes WhatsApp Business integration](https://claw-link.dev/hermes/whatsapp) works the same way.

One thing to get straight before you start, because most guides blur it: this integration needs a WhatsApp Business Account with Cloud API access already set up on Meta's side. That part is Meta's onboarding and nobody can remove it for you. What ClawLink removes is everything after it — the permanent access token, the app secret, and the business-account and phone-number ids you would otherwise be copying between Meta's dashboard and a config file. You connect once in the browser and OpenClaw can call the 17 WhatsApp tools below. This is also not the consumer WhatsApp app: there is no QR-code pairing here, and anything you read about `openclaw channels add` with a phone scan is describing a different setup that drives your personal account rather than the Business API.

## What the OpenClaw WhatsApp Business integration can do

17 WhatsApp Business tools are ready for OpenClaw once the account is connected. The 16 below are the ones people reach for most; your agent can call all 17.

### 16 of 17 WhatsApp Business tools for OpenClaw

| Tool | What it does |
|---|---|
| **Create message template** `whatsapp_create_message_template` | Create a new message template for the WhatsApp Business Account. Templates must be approved by WhatsApp before they can be used. |
| **Get business profile** `whatsapp_get_business_profile` | Get the business profile information for a WhatsApp Business phone number. This includes business details like description, address, website, and contact info. |
| **Get media info** `whatsapp_get_media_info` | Get metadata and download URL for uploaded WhatsApp media. Returns media ID, download URL (valid for 5 minutes), MIME type, SHA256 hash, and file size. |
| **Get message templates** `whatsapp_get_message_templates` | Get all message templates for the WhatsApp Business Account. Templates are required for sending messages outside the 24-hour window and for marketing/utility messages. |
| **Get phone number** `whatsapp_get_phone_number` | Retrieve detailed information about a specific WhatsApp Business phone number. |
| **Get phone numbers** `whatsapp_get_phone_numbers` | Retrieve all phone numbers registered to your WhatsApp Business Account. Returns phone number IDs, display numbers, verification status, quality ratings, and messaging throughput limits. |
| **Get template status** `whatsapp_get_template_status` | Get the status and details of a specific message template. This is useful for checking if a template has been approved, rejected, or is still pending review. |
| **Send contacts** `whatsapp_send_contacts` | Send contacts WhatsApp number. Note: The message will be delivered to the recipient only if they have initiated a conversation first. |
| **Send interactive buttons** `whatsapp_send_interactive_buttons` | Send an interactive button message with up to 3 reply buttons to a WhatsApp user. Interactive button messages allow recipients to quickly respond by tapping predefined buttons. |
| **Send interactive list** `whatsapp_send_interactive_list` | Send an interactive list message to a WhatsApp number. List messages display a menu of options organized into sections. Users tap a button to view the list and select one option. |
| **Send location** `whatsapp_send_location` | Send a location message with coordinates, name, and address to a WhatsApp user. This action allows you to share location information through WhatsApp Business API. |
| **Send media** `whatsapp_send_media` | Send a media message to a WhatsApp number |
| **Send media by ID** `whatsapp_send_media_by_id` | Send media using a media ID from previously uploaded media |
| **Send message** `whatsapp_send_message` | Send a text message to a WhatsApp user |
| **Send template message** `whatsapp_send_template_message` | Send a template message to a WhatsApp number |
| **Upload media** `whatsapp_upload_media` | Upload media files (images, videos, audio, documents, stickers) to WhatsApp servers |

## Example prompts

**Reply within the 24-hour window**

> Use whatsapp_get_phone_numbers to pick the right sending number, then reply to \<customer number> with whatsapp_send_message answering their last question. Show me the text before sending.

**Send an approved template**

> List approved templates with whatsapp_get_message_templates, pick the one named \<template>, and send it to \<number> with whatsapp_send_template_message filling the variables from the details above. Confirm which template you used.

**Offer quick-reply buttons**

> Send \<number> an interactive message with whatsapp_send_interactive_buttons offering "Confirm", "Reschedule", and "Cancel". Only do this if they messaged us in the last 24 hours — check first and tell me if they did not.

**Check a template's approval status**

> Use whatsapp_get_template_status for the template named \<template> and tell me whether it is approved, pending, or rejected, and the reason if it was rejected.

## How the WhatsApp tools behave

Rules that come from Meta rather than from ClawLink, and that decide whether a message actually leaves.

- **The 24-hour customer service window governs everything.** Free-form sends work only within 24 hours of the contact's last message. Outside it, only approved templates go out, and the tools return 131047 to tell you so.
- **Sending is addressed by phone number id, not the display number.** `whatsapp_get_phone_numbers` returns the ids, along with verification status, quality rating, and throughput limits, which is also the quickest health check on a connection.
- **Templates need approval before use.** `whatsapp_create_message_template` submits, `whatsapp_get_template_status` reports, `whatsapp_get_message_templates` lists what is usable now. Draft them before you need them.
- **Template deletion is irreversible and wider than it looks.** Deleting by name removes every language version, and the name is unusable for 30 days afterwards.
- **Media is upload-then-send, and download URLs expire in 5 minutes.** Use `whatsapp_upload_media` followed by `whatsapp_send_media_by_id`, and treat the URL from `whatsapp_get_media_info` as immediately-use-only.
- **Interactive messages have hard limits.** Buttons cap at three per message with 20-character titles; lists allow up to 10 sections of 10 items. Both still require the recipient to have messaged first.

## ClawLink vs. building it yourself

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want WhatsApp Business working from chat.

| | Manual | ClawLink |
|---|---|---|
| **Connection flow** | Register a WhatsApp Business app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect WhatsApp Business through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code. |
| **Ongoing maintenance** | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for WhatsApp Business. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| **Agent usability** | You still need to expose the right WhatsApp Business actions to the runtime in a format your agent can reliably use. | 17 tools for WhatsApp Business are already exposed through ClawLink, so the agent can read and act from chat immediately. |

## ClawLink vs. Composio

Composio also exposes WhatsApp Business to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for OpenClaw users instead. You install the plugin once, connect WhatsApp Business in the browser, and the 17 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full [Composio alternatives](https://claw-link.dev/hub/composio-alternatives) comparison.

### OpenClaw installed the WhatsApp Business skill but can't call the tools
The ClawHub skill teaches OpenClaw about WhatsApp Business, but the calls run through the ClawLink plugin and your connected account. Make sure WhatsApp Business is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.

### Connection succeeds but no tools appear
Reconnect WhatsApp Business from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

### "Tool schema not loaded yet" error when calling WhatsApp Business tools
WhatsApp Business tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every WhatsApp Business call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

### WhatsApp Business returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

### WhatsApp returns error 131047 "Re-engagement message"
This is the 24-hour window, and it is the most common WhatsApp failure by a wide margin. The recipient has not messaged your business in the last 24 hours, so Meta refuses free-form content and requires an approved template instead. Nothing about the connection is wrong and reconnecting will not help. Have the agent list what is available with whatsapp_get_message_templates and send with whatsapp_send_template_message, or, if no suitable template exists, submit one with whatsapp_create_message_template and wait for approval before retrying. The same rule is why interactive buttons and list messages also fail on cold contacts.

Ask the agent to diagnose it:

```text
Call whatsapp_get_message_templates and show me every approved template with its name and language. Do not try to send anything else until I pick one.
```

### WhatsApp returns error 133010 or 131026 on a number that looks correct
These are two different rejections and they need different responses. 133010 means the number does not have a WhatsApp account at all, so no amount of retrying or reformatting will deliver it — verify the number with the customer. 131026 means the message is undeliverable, and the usual cause is that the recipient blocked your business number or the number is unable to receive at that moment. Before assuming either, confirm the sending side is right: WhatsApp tools address a specific business number by its phone number id, not by the display number, so run whatsapp_get_phone_numbers first and use the id from that result.

Ask the agent to diagnose it:

```text
Run whatsapp_get_phone_numbers and tell me which phone number ids this connection can send from, along with each one's verification status and quality rating.
```

### WhatsApp media fails to send or the download link has stopped working
Media has its own two-step shape and a short expiry that catches people out. To send a file you upload it first with whatsapp_upload_media and then send it by id with whatsapp_send_media_by_id, or send by URL with whatsapp_send_media. Going the other way, whatsapp_get_media_info returns a download URL that is valid for five minutes only, so an agent that fetches metadata, does something else, and then tries to download will find a dead link. Ask it to fetch and download in the same step rather than storing the URL for later.

### OAuth finished in the browser but the account is still missing
Try reconnecting WhatsApp Business and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

### Is there a OpenClaw WhatsApp Business integration?
Yes. ClawLink is the fastest way to connect OpenClaw to WhatsApp Business: link your WhatsApp Business account once in the browser and OpenClaw can call the WhatsApp Business API through 17 ready-made tools — no custom code or token handling.

### How do I add WhatsApp Business to OpenClaw with ClawLink?
Paste the setup prompt from this page into OpenClaw. It installs the ClawLink WhatsApp Business skill from ClawHub, then you click Connect in the dashboard to authorize WhatsApp Business. OpenClaw calls the tools from the next message — no config files or API keys to manage.

### How long does it take to connect WhatsApp Business to OpenClaw?
About two minutes. Sign in, click Connect next to WhatsApp Business in the dashboard, authenticate, and OpenClaw can use it from the next chat message.

### Why use ClawLink instead of wiring WhatsApp Business up myself?
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want WhatsApp Business working from chat.

### Do I need a WhatsApp Business Account and Meta setup?
Yes. A WhatsApp Business Account with Cloud API access is a prerequisite, and the dashboard flags this integration as needing Meta setup for exactly that reason. What you do not need is the part that usually goes wrong: generating a permanent access token, storing an app secret, and keeping the business-account id and phone-number id in sync in a config file. If you do not have Cloud API access yet, set that up with Meta first — connecting here before that exists will not work, and it is the most common reason a first attempt fails.

### Is this the WhatsApp app on my phone or the Business API?
The Business API. That distinction matters because most OpenClaw WhatsApp content describes the other thing — pairing your personal WhatsApp by scanning a QR code so the agent reads and sends from your own account. That approach drives the consumer app, is not what Meta supports for automation, and can get a number blocked. This integration talks to WhatsApp Business Cloud API through your business phone number, with templates, approvals, and the 24-hour messaging window that Meta requires of business senders.

### Why can the agent only reply to people who messaged first?
That is Meta's customer service window and it applies to everyone using the Business API, not something ClawLink imposes. You can send free-form messages only within 24 hours of the customer's last message. Outside that window you must send an approved message template instead, which is why the toolset includes template creation, listing, and status checks alongside the send tools. An agent that tries a normal message to a cold contact gets error 131047, which means exactly this: use a template.

### Can the agent create its own message templates?
It can submit them, but WhatsApp has to approve them before they can be used, and approval is not instant. whatsapp_create_message_template submits a template and whatsapp_get_template_status tells you where it stands, so a sensible workflow is to have the agent draft and submit templates ahead of time rather than at the moment you want to send. One irreversible detail worth knowing: deleting a template removes every language version under that name, and the name cannot be reused for 30 days.

### OpenClaw installed the WhatsApp Business skill but can't call the tools
The ClawHub skill teaches OpenClaw about WhatsApp Business, but the calls run through the ClawLink plugin and your connected account. Make sure WhatsApp Business is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.

## Related

- [OpenClaw SendGrid integration](https://claw-link.dev/openclaw/sendgrid) — Deliver transactional and marketing emails
- [OpenClaw Dialpad integration](https://claw-link.dev/openclaw/dialpad) — Business phone, messaging, and video conferencing
- [OpenClaw Discord Bot integration](https://claw-link.dev/openclaw/discord-bot) — Automate Discord server actions with bot-specific permissions
