Integrate WhatsApp with n8n

To integrate WhatsApp with n8n, calls go out through its HTTP Request node and events come back through its Webhook node; authentication is Header Auth credential carrying Authorization: Bearer wpt_..., 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 n8n

Setup in n8n

Calls go through
HTTP Request node
Events arrive through
Webhook node
Authentication
Header Auth credential carrying Authorization: Bearer wpt_...
Time to first call
About 10 minutes
  1. Create a Header Auth credential named Wapito with the name Authorization and the value Bearer followed by your channel token, so the token never appears in a node parameter.

  2. Add an HTTP Request node, set the method and the URL to the Wapito endpoint you want, and pick the Wapito credential under Generic Credential Type.

  3. Set Body Content Type to JSON and build the body with expressions from the previous node rather than with string concatenation.

  4. Add a Webhook node on a separate workflow for inbound events, copy its production URL, and register it with Wapito as a webhook endpoint.

  5. In that inbound workflow, verify the signature header against the raw body before you act on anything, then respond immediately and do slow work in a following branch.

Example flows

Create a group when a deal is won

A CRM trigger fires, an HTTP Request node posts the group subject and the participants pulled from the deal record, and a Set node stores the returned group id back on the deal so later steps can address it.

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."}'

Post the daily digest to a channel

A Schedule Trigger runs each morning, a Code node builds the digest from the previous day's rows, and an HTTP Request node sends it to the channel id. One node, one message, no template approval anywhere in the flow.

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}'

Reply to inbound messages with an AI answer

The Webhook node receives a messages event, an AI node drafts a reply from your knowledge base, and an HTTP Request node sends it back to the chat id from the payload. A typing time on the send keeps the rhythm human.

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}'

Validate numbers from a form submission

A form trigger passes the number to an HTTP Request node that checks it, and an IF node branches: valid numbers continue into the WhatsApp path, invalid ones are routed to email so nobody falls through the gap.

GET /contacts/{id}/exists Check one number for WhatsApp

curl --request GET \
  --url 'https://api.wapito.com/v1/contacts/+15551234567/exists' \
  --header 'Authorization: Bearer wpt_YOUR_TOKEN'

Receiving events

In n8n the inbound side is the Webhook node: 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 node documentation

Step-by-step recipes for n8n

What the official connector does instead

There is no official Meta node for groups, Channels or status in n8n, because the official API has no such endpoints to wrap. The built-in WhatsApp Business Cloud node covers template sends and the customer service window only; everything on this page runs through the generic HTTP Request node against Wapito.

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

Do I need the self-hosted version of n8n?

No. Both n8n Cloud and a self-hosted instance can call an external HTTPS API and expose a webhook URL, which is everything this integration needs. Self-hosting matters only if you want the inbound webhook to reach a service inside your own network.

How do I keep the token out of the workflow JSON?

Use a Header Auth credential rather than typing the header into the node. Credentials are stored separately from the workflow, so exporting or sharing the workflow does not leak the token, and rotating it later means editing one credential instead of every node.

Why is my webhook signature check failing?

Almost always because the body was parsed before it was hashed. The signature covers the exact bytes that were sent, so configure the Webhook node to give you the raw body and compute the hash on that, not on a re-serialised JSON object.

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.