Skip to content

WhatsApp

Connect your Aerostack bot to WhatsApp using the WhatsApp Cloud API. Messages sent to your WhatsApp Business number are forwarded to Aerostack, processed through the bot engine, and responses are sent back automatically.


  • An Aerostack account with an existing bot (or create one during setup)
  • A Meta Developer account
  • A Meta Business account (required for WhatsApp Cloud API)

  1. Go to the Meta Developer Portal
  2. Click Create App and select Business type
  3. Fill in the app name and select your Business account
  4. On the app dashboard, find WhatsApp and click Set Up
  5. Follow the prompts to add a test phone number

From the WhatsApp section of your app, collect:

  • Phone Number ID — found under WhatsApp > API Setup
  • Permanent Access Token — generate a System User token with whatsapp_business_messaging permission (temporary tokens expire in 24 hours)
  • App Secret — found under App Settings > Basic

  1. Navigate to Bots in the sidebar
  2. Click on your bot (or create a new one with platform set to WhatsApp)
  3. In the Platform Configuration section, enter:
    • Phone Number ID — your WhatsApp phone number ID
    • Access Token — your permanent access token
    • Verify Token — any random string you choose (used for webhook verification)
    • App Secret — your Meta app secret (for signature verification)
Terminal window
curl -X POST https://api.aerostack.dev/api/bots \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "WhatsApp Support Bot",
"platform": "whatsapp",
"workspace_id": "YOUR_WORKSPACE_ID",
"system_prompt": "You are a helpful WhatsApp assistant for Acme Corp.",
"platform_config": {
"phone_number_id": "123456789012345",
"access_token": "EAABsbCS...",
"verify_token": "my-verify-token-xyz",
"app_secret": "abc123def456..."
}
}'

Terminal window
curl -X POST https://api.aerostack.dev/api/bots/YOUR_BOT_ID/activate \
-H "Authorization: Bearer YOUR_JWT_TOKEN"

Response:

{
"status": "active",
"webhook_url": "https://api.aerostack.dev/api/bots/webhook/whatsapp/bt_a1b2c3d4e5f6g7h8i9j0",
"manual_setup_required": true,
"warnings": []
}

Step 4: Set the Webhook URL in Meta Portal

Section titled “Step 4: Set the Webhook URL in Meta Portal”
  1. Go to your app in the Meta Developer Portal
  2. Navigate to WhatsApp > Configuration
  3. Under Webhook, click Edit
  4. Enter the webhook URL from the activate response:
    https://api.aerostack.dev/api/bots/webhook/whatsapp/bt_YOUR_BOT_ID
  5. Enter the Verify Token you configured in Step 2
  6. Click Verify and Save
  7. Under Webhook fields, subscribe to the messages field

The verification works via a GET request to your webhook URL with hub.mode=subscribe, hub.verify_token, and hub.challenge parameters. Aerostack handles this automatically.


Send a WhatsApp message to your business phone number. The bot should respond within a few seconds.


FieldRequiredDescription
phone_number_idYesWhatsApp phone number ID
access_tokenYesSystem User access token with whatsapp_business_messaging permission
verify_tokenYesYour chosen verify token (must match what you enter in Meta portal)
app_secretRecommendedMeta app secret for HMAC-SHA256 webhook signature verification
business_account_idNoWhatsApp Business Account ID

When app_secret is set, Aerostack verifies the authenticity of every incoming WhatsApp webhook automatically.


Incoming TypeHow It’s Processed
TextFull text passed to bot engine
ImageCaption text (if any) + [Image] placeholder. Attachment metadata included.
DocumentCaption text (if any) + [Document: filename] placeholder
Audio[Voice message] placeholder
VideoCaption text (if any) + [Video] placeholder
Location[Location: lat, lng] placeholder
Interactive (button/list reply)Button title or list row title used as text

WhatsApp enforces a 24-hour messaging window. Your bot can send free-form messages only within 24 hours of the user’s last message. Outside this window, you must use pre-approved message templates.


Aerostack automatically sends read receipts (blue ticks) when processing WhatsApp messages. This is non-blocking and happens in the background.


WhatsApp enforces a 4096 character limit per message. Longer responses are automatically split at whitespace boundaries.


IssueSolution
Webhook verification fails in Meta PortalCheck that your verify_token matches exactly. The verify token is case-sensitive.
Bot not responding to messagesVerify you subscribed to the messages webhook field in Meta Portal. Check that the access token is valid (not expired).
”Message failed to send”Your access token may have expired (24h for test tokens). Generate a permanent System User token.
Bot responds once then stopsThis may be the 24-hour window. The user must send another message to re-open the window.