Files
nanoclaw/.claude/skills/add-whatsapp-cloud/SKILL.md
glifocat 9633788a1b fix(skills): bump @chat-adapter/* cohort to 4.27.0
@chat-adapter/discord@4.27.0 includes vercel/chat#256, which fixes the
Discord adapter unconditionally setting payload.content alongside
payload.embeds when posting a card. In 4.26.0 every Discord card
appeared twice (text content above the embed, identical content inside
the embed) — every new install reproduced this on the welcome tour and
on every approval card.

The other 7 skills bump in lockstep because @chat-adapter/discord@4.27.0
depends on chat@4.27.0 while @chat-adapter/<other>@4.26.0 depend on
chat@4.26.0. Mixing the cohort produces a TypeScript dual-version
conflict between the bridge and adapter ChatInstance types.

Files updated (one line per file in each pnpm install command):
- add-discord (the user-visible bug fix)
- add-gchat, add-github, add-linear, add-slack, add-teams, add-telegram,
  add-whatsapp-cloud (cohort consistency)

Out of scope: add-imessage, add-matrix, add-webex, add-resend use
third-party packages with independent versioning.

Closes #2264
2026-05-05 00:28:25 +02:00

2.9 KiB

name, description
name description
add-whatsapp-cloud Add WhatsApp Business Cloud API channel via Chat SDK. Official Meta API.

Add WhatsApp Cloud API Channel

Connect NanoClaw to WhatsApp via the official Meta WhatsApp Business Cloud API.

Install

NanoClaw doesn't ship channels in trunk. This skill copies the WhatsApp Cloud adapter in from the channels branch.

Pre-flight (idempotent)

Skip to Credentials if all of these are already in place:

  • src/channels/whatsapp-cloud.ts exists
  • src/channels/index.ts contains import './whatsapp-cloud.js';
  • @chat-adapter/whatsapp is listed in package.json dependencies

Otherwise continue. Every step below is safe to re-run.

1. Fetch the channels branch

git fetch origin channels

2. Copy the adapter

git show origin/channels:src/channels/whatsapp-cloud.ts > src/channels/whatsapp-cloud.ts

3. Append the self-registration import

Append to src/channels/index.ts (skip if the line is already present):

import './whatsapp-cloud.js';

4. Install the adapter package (pinned)

pnpm install @chat-adapter/whatsapp@4.27.0

5. Build

pnpm run build

Credentials

  1. Go to Meta for Developers and create an app (type: Business).
  2. Add the WhatsApp product.
  3. Go to WhatsApp > API Setup:
    • Note the Phone Number ID (not the phone number itself).
    • Generate a permanent System User access token with whatsapp_business_messaging permission.
  4. Go to WhatsApp > Configuration:
    • Set webhook URL: https://your-domain/webhook/whatsapp.
    • Set a Verify Token (any random string you choose).
    • Subscribe to webhook fields: messages.
  5. Copy the App Secret from Settings > Basic.

Configure environment

Add to .env:

WHATSAPP_ACCESS_TOKEN=your-system-user-access-token
WHATSAPP_PHONE_NUMBER_ID=your-phone-number-id
WHATSAPP_APP_SECRET=your-app-secret
WHATSAPP_VERIFY_TOKEN=your-verify-token

Sync to container: mkdir -p data/env && cp .env data/env/env

Next Steps

If you're in the middle of /setup, return to the setup flow now.

Otherwise, run /manage-channels to wire this channel to an agent group.

Channel Info

  • type: whatsapp-cloud
  • terminology: WhatsApp Cloud API supports 1:1 conversations only (no group chats). Each conversation is with a phone number.
  • how-to-find-id: The platform ID is the Phone Number ID from the Meta Business dashboard (not the phone number itself). Find it under WhatsApp > API Setup.
  • supports-threads: no
  • typical-use: Interactive 1:1 chat -- direct messages only
  • default-isolation: Same agent group if you're the only person messaging the bot. Each additional person who messages gets their own conversation automatically, but they share the agent's workspace and memory -- use a separate agent group if you need information isolation between different contacts.