Integrate WhatsApp with Activepieces

To integrate WhatsApp with Activepieces, calls go out through its HTTP piece > Send HTTP request and events come back through its Webhook piece > Catch Webhook; authentication is Bearer authentication configured on the HTTP piece, stored as a connection, and the setup below takes about 10 minutes. No official connector is involved: groups, Channels, status posts and template-free sends all go through one plain HTTPS call.

Automation

What you can do with Activepieces

Setup in Activepieces

Events arrive through
Webhook piece > Catch Webhook
Authentication
Bearer authentication configured on the HTTP piece, stored as a connection
Time to first call
About 10 minutes
  1. Add the HTTP piece with the Send HTTP request action, set the method and the Wapito URL, and choose Bearer authentication so the token is stored as a connection rather than typed into the step.

  2. Set the body to JSON and map fields from the trigger with the data selector instead of pasting literals.

  3. Add a Code piece after the send if you need to branch on the response, since the raw body is available there without another HTTP call.

  4. For inbound events, start a second flow with the Webhook piece, publish it, and register the resulting URL in Wapito.

  5. Verify the signature in a Code piece before acting on the payload, then keep the rest of the flow short so the response goes back quickly.

Example flows

Send a confirmation after a form submission

A form piece triggers the flow, a Code piece normalises the number, and the HTTP piece sends the confirmation. Self-hosting means the form data never leaves your infrastructure on the way to WhatsApp.

POST /messages/text Send a text message

curl --request POST \
  --url https://api.wapito.com/v1/messages/text \
  --header 'Authorization: Bearer wpt_YOUR_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{"to":"+15551234567","body":"Your order #4182 has shipped. Track it here: https://acme.example/t/4182","typing_time":3}'

Create a group when a ticket is escalated

A helpdesk trigger fires on escalation and the HTTP piece creates a group with the on-call numbers from your directory. The group id is written back to the ticket by a following step.

POST /groups Create a group

curl --request POST \
  --url https://api.wapito.com/v1/groups \
  --header 'Authorization: Bearer wpt_YOUR_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{"subject":"Acme Launch Team","participants":["+15551234567","+15559876543"],"description":"Coordination for the Q3 launch. Keep it on topic."}'

Route inbound messages to the right team

The Webhook piece receives message events, a branch inspects the text for keywords, and the HTTP piece replies with the right team's acknowledgement while a parallel step opens the internal task.

POST /messages/text Send a text message

curl --request POST \
  --url https://api.wapito.com/v1/messages/text \
  --header 'Authorization: Bearer wpt_YOUR_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{"to":"+15551234567","body":"Your order #4182 has shipped. Track it here: https://acme.example/t/4182","typing_time":3}'

Post an invite link on a schedule

A schedule trigger reads the current invite code and a following step publishes it to your site, so a rotated link is always the one your visitors see without anyone editing a page.

GET /groups/{id}/invite Get the group invite link

curl --request GET \
  --url https://api.wapito.com/v1/groups/120363041234567890@g.us/invite \
  --header 'Authorization: Bearer wpt_YOUR_TOKEN'

Receiving events

In Activepieces the inbound side is the Webhook piece > Catch Webhook: it gives you the URL to register in Wapito.Every event Wapito delivers — an inbound message, a delivery receipt, a member joining a group, a number disconnecting — is one HTTPS POST to a URL you register, signed with the webhook's secret in the X-Wapito-Signature header. Verify that header against the raw request body before you act on anything, answer with a 2xx within the retry window, and do slow work afterwards.

Webhooks guide: events, envelope and signature Webhook piece > Catch Webhook documentation

Step-by-step recipes for Activepieces

What the official connector does instead

Activepieces has a WhatsApp piece built on Meta's official API, with the same template and window constraints and no group, Channel or status actions. The generic HTTP piece against Wapito is how you reach those, and because Activepieces can be self-hosted, the whole flow can stay on your own infrastructure.

Wapito is an independent product. It is not affiliated with, endorsed by, sponsored by or certified by WhatsApp or Meta Platforms, Inc. WhatsApp is a trademark of Meta Platforms, Inc.

Frequently asked questions

Cloud or self-hosted?

Either works, since both can make outbound HTTPS calls and expose a webhook URL. Self-hosting is worth it if your data cannot leave your infrastructure or if you want the inbound webhook to reach services on a private network; otherwise the cloud version is quicker to start with.

How do I store the token?

As a connection on the HTTP piece using Bearer authentication. Connections are stored separately from the flow definition, so exporting a flow does not leak the credential, and one rotation updates every step that uses it rather than each one individually.

Can I verify the webhook signature?

Yes, in a Code piece, which gives you both the headers and the raw body. Compute the HMAC over the raw bytes exactly as they arrived - a body that has been parsed and re-serialised will produce a different hash and the check will fail even when the request was genuine.

Related

Try it on your own number

Create a channel, link a WhatsApp number by QR or pairing code, and call the API in a couple of minutes. The Sandbox plan is free and needs no card.