Docs
Get started

Wire WhatsApp into n8n

Wazzap exposes inbound messages as webhooks and accepts outbound messages over HTTP. That means n8n becomes the brain between your WhatsApp number and the rest of your stack, routing to any database, any AI, any API, no glue code required.

Overview

n8n is an open-source automation platform with hundreds of pre-built nodes. Pair it with Wazzap and you get a low-code router between WhatsApp and anything that speaks HTTP. Inbound messages fire a webhook into n8n; outbound replies are plain POST requests to Wazzap's API.

n8n is the right choice when you need automation that goes beyond what HighLevel Workflows give you, custom branching, third-party APIs, multi-step logic, or your own database lookups.

Why route through n8n

  • Any AI model. Plug Claude, Gemini, local LLMs via Ollama, or compose multiple models in a single flow.
  • Any data source. Look up a contact in PostgreSQL, Airtable, Notion or a private API before replying.
  • Self-hosted privacy. Run n8n on your own server if you can't ship conversations through a third-party SaaS.
  • Versioned flows. Export your automations as JSON, commit them, review changes.

Setup

1. Point Wazzap webhooks at n8n

  1. In n8n, create a new workflow and drop a Webhook trigger node.
  2. Pick POST as the method. Copy the production URL n8n gives you.
  3. In Wazzap, open Settings, Webhooks for the sub-account.
  4. Paste the n8n URL into Inbound message webhook and click Save.

From now on every inbound WhatsApp message hits your n8n flow as a JSON payload.

2. Build the n8n flow

Inside the workflow you can do anything: classify the message with an AI node, look up the contact in a CRM, branch based on intent, generate a reply, attach a file. n8n's catalog of nodes covers every major SaaS.

{
  "from": "+5215512345678",
  "name": "Diego",
  "type": "text",
  "body": "Hi, do you have availability on Friday?",
  "wazzap_sub_account": "acme-co",
  "received_at": "2026-05-14T10:21:33Z"
}

3. Send replies back via HTTP

Once you have a reply ready, add an HTTP Request node pointed at the Wazzap send endpoint. Authenticate with your Wazzap API key and POST the message.

POST https://api.wazzap.mx/v4/messages
Authorization: Bearer ${WAZZAP_KEY}
Content-Type: application/json

{
  "to": "+5215512345678",
  "body": "Yes, I have 3pm and 5pm open on Friday."
}

Common patterns

  • AI auto-reply with memory. Store the last 10 messages in Postgres or Supabase keyed by phone number; rehydrate them as context for every LLM call.
  • Booking flow. Detect "agendar" or "book" with a regex, query your calendar API for free slots, reply with options, confirm with a follow-up webhook.
  • Lead enrichment. When a new number messages in, look up the phone in Clearbit or your CRM, tag the conversation and assign to the right rep.
  • Multi-language router. Detect language with an AI node, route to a different prompt template per locale.

Your n8n flow can also fire on outbound events, message delivered, message read, number disconnected, by listening to Wazzap's webhooks reference.

Troubleshooting

n8n receives the webhook but my reply never arrives

Check the HTTP Request node's response. A 401 means the Wazzap API key is wrong or expired; a 422 means the payload is missing to or body. The response body includes the exact validation error.

Inbound webhooks stop firing after a while

n8n free cloud puts inactive workflows to sleep. Either run n8n self-hosted, or make sure your workflow is set to Active and the webhook URL points to the production endpoint, not the test one.

Duplicate replies

Your flow probably has two paths producing a send. Add an If node early to filter out non-text messages or system events, and use n8n's execution data view to trace where the duplicate sneaks in.

Was this page helpful?