Channels
WhatsApp Business Setup
Connect your Meta WhatsApp Business account to CallMissed and deploy a bot in five steps.
Connect a Meta (Facebook) WhatsApp Business number to CallMissed so an AI bot answers inbound messages automatically. CallMissed stores your Meta credentials per tenant, verifies the connection, and handles the inbound webhook → AI turn → reply loop.
Prerequisites
- A Meta Business account with a verified business.
- A WhatsApp Business Account (WABA) and a phone number registered in the Meta WhatsApp Manager — the number must not be tied to a personal WhatsApp app.
- An app created at Meta for Developers with the WhatsApp product added.
- A CallMissed account with the owner or admin role (only those roles can save integration settings).
Get your Meta credentials
From your app in the Meta dashboard (WhatsApp → API Setup), collect:
- Phone Number ID — the ID of the sending number (not the phone number itself).
- Access token — generate a permanent token from a System User (Business Settings → System Users → Generate token) with the
whatsapp_business_messagingandwhatsapp_business_managementpermissions. Temporary tokens expire in 24h and will break delivery. - Verify token — any string you choose (for example a random 32-char value). You will paste the same value into both CallMissed and the Meta webhook config.
- App secret (optional but recommended) — from App Settings → Basic. CallMissed uses it to validate the
X-Hub-Signature-256on inbound webhooks.
Save credentials in CallMissed
Open Integration Settings
In the Dashboard, go to Settings → Integrations → WhatsApp. (Programmatically this is PUT /api/v1/settings/whatsapp.)
Enter your credentials
Provide the values you collected from Meta:
curl -X PUT https://api.callmissed.com/api/v1/settings/whatsapp \
-H "Authorization: Bearer cm_your_key" \
-H "Content-Type: application/json" \
-d '{
"phone_number_id": "1234567890",
"access_token": "EAAG...permanent-system-user-token",
"verify_token": "my_chosen_verify_token",
"app_secret": "your_meta_app_secret"
}'Stored secrets are write-only — reading the settings back returns masked values.
Verify the connection
Run a live connectivity check against the Meta Graph API before you rely on the integration:
curl -X POST https://api.callmissed.com/api/v1/settings/whatsapp/verify \
-H "Authorization: Bearer cm_your_key"A success response confirms the access token and Phone Number ID are valid.
Configure the Meta webhook
In the Meta dashboard (WhatsApp → Configuration → Webhook), set:
- Callback URL:
https://api.callmissed.com/api/v1/webhooks/whatsapp- Verify token: the exact same
verify_tokenyou saved in CallMissed. - Webhook fields: subscribe to messages.
Meta sends a one-time GET handshake to the callback URL with your verify token. CallMissed echoes the challenge back when the tokens match:
Meta
Sends GET /webhooks/whatsapp?hub.verify_token=…&hub.challenge=…
CallMissed
Compares the token to your saved verify_token and echoes hub.challenge
Meta
Marks the webhook Verified — inbound messages now POST to the same URL
Create a WhatsApp bot
Create a bot with type: "whatsapp", a system prompt for its persona, and any knowledge-base entries for FAQ/product context:
curl -X POST https://api.callmissed.com/api/v1/bots \
-H "Authorization: Bearer cm_your_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Support Bot",
"type": "whatsapp",
"system_prompt": "You are a helpful support agent for Acme Corp.",
"config": { "phone_number_id": "1234567890", "language": "en" }
}'See the WhatsApp Bot guide for the full message flow and bot config reference.
Test & go live
Send a WhatsApp message to your business number. The end-to-end path is:
Customer
Sends a WhatsApp message to your business number
CallMissed
Verifies the signature, finds or creates the conversation, saves the message
LLM
Generates a reply from the system prompt + conversation history + knowledge base
Customer
Receives the AI reply via the WhatsApp Cloud API