Integrations

Connect WhatsApp to n8n

Connect WhatsApp to n8n with the built in HTTP Request and Webhook nodes. No custom node to install, no Meta business verification, and your first number is free.

Last updated 2026-08-02

n8n can already talk to wasender.dev. Sending a WhatsApp message is an HTTP Request node, and receiving one is a Webhook node, so there is no community node to install and nothing to wait on a marketplace to approve.

This guide builds a complete two way flow: a customer messages your WhatsApp number, n8n picks it up, and your workflow replies. It takes about ten minutes.

What you need

Step 1: connect your WhatsApp number

Create a channel in the dashboard and you get a channel token that looks like wsk_sg_xxxxxxxxxxxx. It is scoped to exactly one WhatsApp number, and it is a password: anyone holding it can send as you.

Fetch the QR code and scan it from WhatsApp under Settings, Linked devices, Link a device:

bash
curl https://api.wasender.dev/users/login/image \
  -H "Authorization: Bearer $WASENDER_TOKEN" \
  --output qr.png

QR codes rotate every 20 seconds or so, so request a new one if it expires. Once scanned, the credentials persist and reconnects never ask again. Confirm the number is live:

bash
curl https://api.wasender.dev/health \
  -H "Authorization: Bearer $WASENDER_TOKEN"

Step 2: send a message from n8n

Add an HTTP Request node and configure it:

The body is two fields:

json
{
  "to": "61371989950",
  "body": "Your order has shipped."
}

Recipients are phone numbers in international format without a leading +. You can also pass a full chat id such as 61371989950@s.whatsapp.net, or a group id ending in @g.us.

Execute the node and the message arrives. A 2xx means WhatsApp accepted it, which is not the same as delivered, so confirm real delivery with webhooks or GET /statuses/{MessageID} if it matters to your flow.

Step 3: receive messages into n8n

Add a Webhook node, set the method to POST, and copy its production URL. Register that URL against your channel with PATCH /settings:

bash
curl -X PATCH https://api.wasender.dev/settings \
  -H "Authorization: Bearer $WASENDER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "webhooks": [
      {
        "url": "https://your-n8n-host/webhook/whatsapp",
        "events": [{ "type": "messages", "method": "post" }],
        "mode": "body"
      }
    ]
  }'

You can also set this from the dashboard if you would rather not call the API.

The event types you can subscribe to are messages, statuses, chats, contacts, groups, calls and users. Subscribing to messages is enough for a reply flow. Add statuses if you want delivery and read receipts as well.

Deliveries are signed and retried with backoff, so a workflow that is briefly down does not silently lose messages.

Now trigger it: send a WhatsApp message to your connected number and watch it arrive in n8n. Rather than guessing at field names, run this once and read the payload n8n captures. That is the shape your workflow should branch on, and reading it from a real delivery beats copying it out of any guide, including this one.

Add an IF node after the webhook so you act only on genuinely new inbound messages and ignore your own outgoing echoes and receipt events.

Step 4: close the loop

Wire the IF node's true branch into another HTTP Request node pointed back at /messages/text, using the incoming sender as the recipient. The finished workflow is four nodes:

text
Webhook  ->  IF (inbound message?)  ->  your logic  ->  HTTP Request (reply)

"Your logic" is wherever the value is. An AI node answering support questions, a lookup against your order database, a calendar check for appointment scheduling, or a routing rule that pages a human when the customer sounds unhappy.

Sending more than text

The same HTTP Request node covers every message type by changing the URL:

Group administration, contacts, chat management and typing indicators are all available the same way. The full list is in the API reference.

Costs

There are no per message fees. Your first connected number is free permanently with unlimited messages, and each additional number is a flat $4 a month. A workflow sending ten messages a month and one sending ten million cost the same.

Common problems

The QR code expired before I scanned it. They rotate roughly every 20 seconds. Request a new one and scan promptly.

I get a 401. The token is wrong, revoked, or belongs to a different region. Check you copied the whole wsk_ string.

I get a 503. The session is reconnecting or waking. Retry with backoff rather than immediately.

Messages send but never arrive. A 2xx means accepted, not delivered. Check GET /statuses/{MessageID} or subscribe to the statuses webhook events. Also confirm the recipient number has no leading +.

Rate limited with a 429. The limits protect your number from WhatsApp's anti abuse systems rather than upsell you. Respect Retry-After and slow the workflow down.

A note on which number to use

This service drives WhatsApp through an unofficial client, the same mechanism WhatsApp Web uses. Meta does not sanction it, so use a number you can afford to lose rather than your main business line, and do not send first contact messages to people who never opted in. For regulated workloads, use Meta's official Cloud API instead.

Back to all articles

Your first WhatsApp number is free

No credit card. Free forever, not a trial.

Start free