WhatsApp Integration
Connect WhatsApp Business to Reaktly for AI-powered customer conversations on WhatsApp.
Overview
The Reaktly WhatsApp integration connects your WhatsApp Business number to your AI-powered operator. Incoming WhatsApp messages are routed to Reaktly, where your AI responds instantly — and can hand off to a human agent when needed.
Key capabilities include text messaging, interactive button replies, AI-powered responses drawn from your knowledge base, automatic conversation routing, and seamless human handoff. This integration uses the WhatsApp Business API (via Meta's Cloud API) — it does not work with personal WhatsApp or the WhatsApp Business mobile app.
You need access to the WhatsApp Business API through a Meta App. A regular WhatsApp account is not sufficient.
Prerequisites
Before you begin, make sure you have:
- A Meta Business Account (verified, or with verification in progress)
- A Facebook Developer Account at developers.facebook.com
- A phone number for WhatsApp Business — you can use Meta's test number during development
- An active Reaktly account with at least one operator configured
- An HTTPS-accessible API endpoint for webhook delivery (your Reaktly instance)
Step 1: Create a Meta App
- Go to developers.facebook.com → My Apps → Create App.
- Select the app type Business.
- Fill in your app name, contact email, and select your Business Account.
- On the app dashboard, click Add Product → find WhatsApp → click Set Up.
- You now have a WhatsApp-enabled Meta App.
Meta may require Business Verification before granting production API access. You can still use test numbers during development without verification.
Step 2: Get Your WhatsApp API Credentials
You need four credentials. Here's where to find each one:
Phone Number ID
Go to your Meta App Dashboard → WhatsApp → Getting Started. Select your phone number from the dropdown — the Phone Number ID is displayed below it.
WhatsApp Business Account ID
On the same Getting Started page, find the WhatsApp Business Account ID near the top. You can also find it under Settings → WhatsApp Accounts.
Permanent Access Token
Temporary tokens from the Getting Started page expire in 24 hours. For a permanent token:
- Go to business.facebook.com → Settings → System Users.
- Click Add to create a new System User with the Admin role.
- Click Generate Token on the System User.
- Select your WhatsApp Meta App.
- Grant the following permissions:
whatsapp_business_messagingwhatsapp_business_management
- Click Generate Token and copy it immediately.
The token is only shown once. Store it securely — you cannot retrieve it later.
App Secret
Go to your Meta App Dashboard → Settings → Basic → App Secret. Click Show to reveal it. This is used for webhook signature verification.
Step 3: Configure in Reaktly
- Navigate to your Operator Dashboard → Integrations → Add WhatsApp.
- Enter the credentials from Step 2:
- Access Token
- Phone Number ID
- WhatsApp Business Account ID
- Phone Number (in E.164 format, e.g.
+1234567890)
- Reaktly auto-generates a Webhook URL and a Verify Token.
- Copy both — you need them for the next step.
If no frontend UI is available yet, you can configure the integration via API:
POST /api/integrations/credentials
Content-Type: application/json
{
"accessToken": "EAAGn...",
"phoneNumberId": "10620...",
"businessAccountId": "17841...",
"phoneNumber": "+1234567890"
}Step 4: Configure Webhook in Meta
- In your Meta App Dashboard, go to WhatsApp → Configuration.
- Under Webhook, click Edit.
- Paste the values from Reaktly:
- Callback URL: Your Reaktly webhook URL (format:
https://your-api.com/webhooks/whatsapp_cloud/{webhookPath}) - Verify Token: The verify token generated by Reaktly
- Callback URL: Your Reaktly webhook URL (format:
- Click Verify and Save. Meta sends a verification request to your endpoint — if it responds correctly, the webhook is confirmed.
- Under Webhook Fields, subscribe to:
| Field | Required | Purpose |
|---|---|---|
messages | ✅ Yes | Incoming messages from customers |
messaging_postbacks | Recommended | Button click responses |
message_deliveries | Optional | Delivery status tracking |
message_reads | Optional | Read receipt tracking |
The Callback URL must use HTTPS and be publicly accessible. Localhost URLs will not work — use a tunnel like ngrok for local development.
Step 5: Test the Integration
- In your Meta App Dashboard → WhatsApp → Getting Started, add a test phone number.
- Send a message from your test number to your WhatsApp Business number.
- Open the Reaktly inbox — a new conversation should appear with a WhatsApp channel badge.
- Verify that the AI responds and the reply appears back in WhatsApp.
If everything is working, you'll see the full conversation thread in both WhatsApp and the Reaktly dashboard.
Supported Message Types
| Type | Inbound | Outbound | Notes |
|---|---|---|---|
| Text | ✅ | ✅ | Plain text with URL previews |
| Interactive Buttons | ✅ | ✅ | Up to 3 buttons, 20 char max per button |
| Images | ✅ (as text placeholder) | ❌ Coming soon | |
| Documents | ✅ (as text placeholder) | ❌ Coming soon | |
| Audio | ✅ (as text placeholder) | ❌ Coming soon | |
| Video | ✅ (as text placeholder) | ❌ Coming soon | |
| Location | ✅ (as coordinates) | ❌ | |
| Stickers | ✅ (as placeholder) | ❌ |
AI Behavior on WhatsApp
The AI automatically adapts its responses for the WhatsApp medium:
- Concise responses — messages are kept short and mobile-friendly.
- No markdown tables or headers — WhatsApp doesn't render them, so the AI avoids these constructs.
- Supported formatting — bold (
*text*) and italic (_text_) work on WhatsApp and are used when appropriate. - Link sharing — the AI suggests visiting your website for detailed information and shares knowledge base articles as text summaries with links.
- Conversational tone — responses feel natural for a messaging context rather than a formal support channel.
Phone Number Requirements
- Must be in E.164 format (e.g.,
+1234567890,+4915112345678). - The number must be registered for the WhatsApp Business API through Meta.
- It cannot be currently registered on regular WhatsApp or the WhatsApp Business mobile app.
- For production use, the number must have an approved display name via Meta.
Going to Production
Once you've tested with development credentials, follow these steps for production:
- Complete Meta Business Verification — go to Business Settings → Business Verification and submit the required documents.
- Request production access for your WhatsApp Business API in the Meta App Dashboard.
- Register your production phone number through the WhatsApp setup flow.
- Generate a permanent System User access token (see Step 2 above).
- Update credentials in Reaktly with your production values.
- Verify your API endpoint uses a valid SSL certificate from a trusted CA.
Business Verification typically takes 2–5 business days. You can continue developing with test numbers in the meantime.
Rate Limits & Messaging Tiers
WhatsApp enforces messaging limits based on your account tier:
- New accounts start at Tier 1 — 1,000 business-initiated conversations per day.
- Customer-initiated conversations (where the user messages you first) have no limit.
- Tiers increase automatically as your message volume and quality rating improve.
- The quality rating is based on user feedback — if recipients block or report your number, your rating drops.
For full details on tier limits and quality ratings, see Meta's messaging limits documentation.
Troubleshooting
Webhook verification fails
- Confirm the Verify Token matches exactly between Reaktly and Meta (no trailing spaces).
- Ensure the Callback URL is HTTPS and publicly accessible.
- Check that your server responds to
GETrequests with thehub.challengevalue.
Messages not arriving in Reaktly
- Verify you've subscribed to the
messageswebhook field in Meta's Configuration panel. - Check that the webhook status shows a green checkmark (not an error).
- Review your server logs for incoming webhook
POSTrequests.
"Access denied" errors when sending replies
- Ensure the System User token has the
whatsapp_business_messagingpermission. - Verify the token has not been revoked or rotated in Business Settings.
Phone number format errors
- Use E.164 format with the country code — e.g.,
+49for Germany,+1for US/Canada. - Do not include spaces, dashes, or parentheses.
Responses not sent back to WhatsApp
- Check that the access token is valid and has not expired (use a permanent System User token, not a temporary one).
- Confirm the Phone Number ID is correct and matches the number receiving messages.
- Review the Reaktly logs for outbound API errors.
Security Notes
- Encryption at rest — access tokens and credentials are encrypted using AES-256.
- Obfuscated webhook paths — webhook URLs use randomized paths, not phone numbers or account IDs.
- Webhook signature verification — for production, enable signature verification using your App Secret. Meta signs every webhook payload with a SHA-256 HMAC, allowing your server to verify that requests genuinely come from Meta.
Never share your access token or App Secret publicly. Rotate tokens immediately if you suspect they have been compromised.