Connect a Botpress bot to WhatsApp with Coexistence
Use Botpress's WhatsApp integration in Manual Configuration. Paste the connected number's access token and phone number id, choose a verify token, and leave App ID and Client Secret empty. Then set Botpress's webhook URL and that verify token as the number's webhook destination, and Meta delivers every message to the bot.
Botpress's Client Secret field: if left empty, webhook signature verification is skipped.
Webhook fields Botpress's guide subscribes, including messages and template status updates.
The customer service window a customer message opens, inside which any service message can be sent.
Which Botpress configuration works with a Coexistence number?
Manual Configuration. The other options connect a number through Botpress's own Meta app, which is a separate onboarding of the number rather than a way to use one already connected.
In the WhatsApp integration, open the Configuration drop-down and choose Manual Configuration. It asks for a Verify Token, an Access Token, a Default Bot Phone Number ID, and optionally an App ID, a Client Secret and a WABA ID.
The access token, phone number id and WABA id come from the connection: the dashboard shows them, and get_api_credentials returns them to an assistant. The verify token is any string you choose. App ID and Client Secret stay empty. Botpress's guide presents the secret as a field to fill, but its integration definition marks it optional and says that without it signature verification is skipped. That matters, because Meta signs each delivery with the Tech Provider's app secret, which no customer holds.
How does the Botpress webhook get Meta's messages?
Through the number's webhook destination. Botpress's guide has you paste its webhook URL and your verify token into a Meta app's WhatsApp configuration. Here there is no Meta app of yours: Meta routes the number's events to whatever destination the connection names. So copy the webhook URL Botpress shows for the integration and set it, with the same verify token, as the destination in the dashboard or with set_webhook_destination.
Meta sends a verification GET, Botpress answers it, and delivery starts. When Botpress saves a manual configuration it also checks the token by asking Graph which app issued it, so an invalid or revoked token fails at save time rather than on the first message.
Botpress's handler also processes smb_message_echoes, the event Meta sends when someone replies from the WhatsApp Business app. So a reply from the phone is visible to the bot rather than invisible to it.
| Required? | What to enter | |
|---|---|---|
| Access Token | Required | The connected number's token |
| Default Bot Phone Number ID | Required | The connected number's phone number id |
| Verify Token | Required | Any string, reused in the webhook destination |
| WABA ID | Optional | The connected number's WABA id |
| App ID and Client Secret | Optional | Leave both empty |
What should the bot know about Coexistence?
That a human may already be talking. The WhatsApp Business app keeps working on the number, so a customer can get a reply from the phone and from the bot within the same minute. Decide in the flow what happens when an echo arrives: most teams pause the bot for that contact for a while, so the person who stepped in is not talked over.
The second thing is timing. A bot that answers incoming messages works inside the 24 hour customer service window, where free text is allowed. A flow that sends something a day later, a follow up or a reminder, needs an approved template, and free text there returns error 131047. Botpress's guide subscribes the template status fields for exactly this kind of proactive message.
And throughput is fixed at 20 messages per second for a Coexistence number, which is far above what a conversational bot sends.
Common mistakes
- Filling Client Secret with your own Meta app's secret. The signature never matches and Botpress answers every delivery with 401.
- Choosing the OAuth or sandbox option instead of Manual Configuration. Those connect a number through Botpress's own app, not the one already connected.
- Ignoring echoes. Without a rule for replies sent from the phone, the bot answers over a person who already stepped in.
Connect the number at easycoexistence.com, paste its token and phone number id into Botpress's Manual Configuration, and set the Botpress webhook URL as the destination. From US$ 9 per number per month, falling to US$ 1 as you add numbers, with the first 3 days free.
Frequently asked questions
Is skipping the signature check safe?
It moves the protection to the URL. Botpress generates the webhook URL per integration, so keep it private. Media still has to be fetched from Meta with the token, which a forged event cannot fake.
Can the same number also feed n8n?
A number has one webhook destination. Point it at one system and forward from there if a second one needs the events.
Does Botpress need my WABA id?
Its definition marks it optional for now and says it will be required in a future major version, so fill it in from the connection.
Do messages pass through EasyCoexistence?
No. Meta delivers straight to the Botpress webhook URL, and the content is never stored on our side.
Keep reading
Ready to get started?
Set up WhatsApp Coexistence in minutes, not months. The app keeps working on the phone.
Start Free TrialVerified on