WhatsApp no n8n pela API oficial, com o ZapClaw
Em resumo: o ZapClaw entrega as suas mensagens do WhatsApp a um nó Webhook do n8n, e o seu fluxo responde com um HTTP Request. As mensagens passam pela API Cloud oficial da Meta, e o número continua funcionando no app WhatsApp Business do celular. Sem nó da comunidade para instalar e sem app próprio na Meta: basta colar o fluxo abaixo no n8n.
Conecte o seu número em minutos e ligue ao n8n que você já usa, na nuvem ou self-hosted.
Plano Business: R$ 99 por mês, com números ilimitados
Comece grátis Ver o fluxoO que você precisa para conectar
- O app WhatsApp Business no número, na versão 2.24.17 ou mais recente, em uso normal.
- Autenticação em dois fatores ativa na conta pessoal do Facebook que autoriza a conexão.
- O número fora de outro provedor. Se ele estiver conectado a outra plataforma, desconecte lá primeiro.
- Um computador para fazer a conexão, com o celular em mãos para confirmá-la no app.
Não precisa de CNPJ nem de empresa verificada para conectar. A lista completa.
Por que a API oficial no n8n
- Nenhuma biblioteca não oficial por trás do fluxo. Integrações que imitam o WhatsApp Web contrariam os termos do WhatsApp e põem o número em risco. O ZapClaw usa a API Cloud da Meta, e as políticas da Meta valem como para qualquer empresa nela.
- O app continua no celular. Pela Coexistência, a sua equipe continua respondendo no app WhatsApp Business enquanto o n8n trabalha no mesmo número.
- HTTP simples dos dois lados. Um nó Webhook para receber e um nó HTTP Request para enviar, autenticado pelo cabeçalho
X-API-Key. Migrar um fluxo de outra API de WhatsApp é trocar a URL, a chave e alguns nomes de campo. - Entregas que você confere. Cada evento é assinado com HMAC-SHA256 e tem até 3 tentativas de entrega se o n8n não responder, e um evento que falhou pode ser reenviado pelo painel.
- Make e Zapier também. Qualquer ferramenta com gatilho de webhook e módulo HTTP funciona do mesmo jeito: o ZapClaw envia para a URL dela, e ela chama a API de envio.
Configure em quatro passos
- No n8n, comece um workflow com um nó Webhook em POST e copie a URL de produção dele. O ZapClaw só entrega em endereço HTTPS público: o n8n Cloud já dá um, e um n8n self-hosted tem um atrás do seu próprio domínio.
- No ZapClaw, conecte o seu número, cole essa URL em Webhook e crie uma chave de API.
- No n8n, salve a chave como uma credencial Header Auth, com
X-API-Keycomo nome, e use-a num nó HTTP Request que chamaPOST https://api.zapclaw.app/api/v1/send/text. - Ative o workflow e clique em Enviar evento de teste no ZapClaw. Depois mande uma mensagem de WhatsApp para o seu número de outro celular: o fluxo recebe e responde.
O fluxo, pronto para importar
Copie o JSON abaixo, abra um workflow vazio no n8n e cole com Ctrl+V (Cmd+V no Mac). Ele traz três nós: o Webhook, um Filter que só deixa passar mensagens de texto recebidas e o HTTP Request que responde. Escolha a sua credencial Header Auth no último nó e ative o workflow.
{
"name": "ZapClaw: answer WhatsApp messages",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "zapclaw-whatsapp",
"options": {}
},
"id": "5f0c7e2a-1b3d-4c8e-9a61-2d4b8f0e7a11",
"name": "ZapClaw webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [0, 0],
"webhookId": "9d3b6f1e-2c4a-4e7b-8a05-6f1c2d9e4b77"
},
{
"parameters": {
"conditions": {
"options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict" },
"conditions": [
{
"id": "8a2f4c61-7d1e-4b39-a5c2-0e6f9b3d1c22",
"leftValue": "={{ $json.body.event }}",
"rightValue": "message.received",
"operator": { "type": "string", "operation": "equals" }
},
{
"id": "3c9e1b74-6a2d-4f08-b7e5-9d1a4c2f6b33",
"leftValue": "={{ $json.body.data.type }}",
"rightValue": "text",
"operator": { "type": "string", "operation": "equals" }
}
],
"combinator": "and"
},
"options": {}
},
"id": "b7d2e9f1-4c6a-4e3b-8f05-1a7c3e9d2b44",
"name": "Incoming text only",
"type": "n8n-nodes-base.filter",
"typeVersion": 2,
"position": [240, 0]
},
{
"parameters": {
"method": "POST",
"url": "https://api.zapclaw.app/api/v1/send/text",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"bodyParameters": {
"parameters": [
{ "name": "from", "value": "={{ $json.body.account.display_phone_number || $json.body.account.phone_number_id }}" },
{ "name": "to", "value": "={{ $json.body.data.from || $json.body.data.user_id }}" },
{ "name": "text", "value": "={{ $json.body.data.text.body }}" }
]
},
"options": {}
},
"id": "e4a1c8d3-2f7b-4a9e-b6d0-5c3e8f1a7d55",
"name": "Reply through ZapClaw",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [480, 0]
}
],
"connections": {
"ZapClaw webhook": {
"main": [[{ "node": "Incoming text only", "type": "main", "index": 0 }]]
},
"Incoming text only": {
"main": [[{ "node": "Reply through ZapClaw", "type": "main", "index": 0 }]]
}
}
}
O exemplo responde com o mesmo texto que recebeu, só para provar a ida e a volta. Troque o campo text pela sua lógica: um nó AI Agent, uma consulta ao seu CRM ou uma resposta fixa.
Texto livre funciona dentro de 24 horas desde a última mensagem do cliente. Fora dessa janela, a Meta só aceita um template aprovado: chame POST /api/v1/send/template.
A chamada do HTTP Request
A mesma chamada como comando curl. Cole em Import cURL num nó HTTP Request e o n8n preenche os campos; depois passe a chave para a sua credencial Header Auth.
curl -X POST https://api.zapclaw.app/api/v1/send/text \
-H "X-API-Key: zc_live_..." \
-H "Content-Type: application/json" \
-d '{ "from": "15551617409", "to": "15555550100", "text": "Hello from n8n" }'
from é o seu número conectado, que o webhook traz em account.display_phone_number. to é o cliente, em data.from, ou data.user_id para um contato que só mostra o nome de usuário. Uma mensagem enviada responde 201.
O que chega no nó Webhook
Cada mensagem chega como um evento message.received. No n8n, o payload fica em body: o texto em body.data.text.body, o remetente em body.data.from, o nome do contato em body.data.contact_name e o seu número em body.account.display_phone_number. Uma mensagem de mídia traz uma media_url que você baixa com a sua chave de API.
Para conferir que uma requisição veio do ZapClaw, compare o cabeçalho X-ZapClaw-Signature com um HMAC-SHA256 do corpo bruto, feito com a sua chave de assinatura: como verificar (em inglês).
Quanto custa
- Grátis: 500 mensagens por mês e 1 número, sem cartão e sem prazo para acabar. No limite, o envio pausa e as mensagens novas ficam retidas até você assinar.
- Business: R$ 99 por mês, com 20.000 mensagens incluídas e números ilimitados.
- Agency: R$ 149 por mês para agências, com 3 clientes e 60.000 mensagens incluídos e números ilimitados.
A Meta cobra as tarifas de mensagem do WhatsApp direto de você, sem margem do ZapClaw. Todos os planos e preços.
Para quem é
Quem usa n8n para automatizar o WhatsApp da própria empresa ou de clientes: agentes de IA, captação de leads, avisos de pedido, triagem de atendimento. Agências conectam os números dos clientes no plano Agency, cada cliente isolado dos outros. Não serve para disparo em massa.
Para ir além
- A API oficial do WhatsApp com o ZapClaw: o que você recebe, o preço e os requisitos.
- A referência do webhook (em inglês), com cada evento e campo.
- Webhook para a sua própria IA, quando as pessoas continuam respondendo pelo app.
- Saindo de uma API não oficial do WhatsApp: o que muda.
- Typebot no WhatsApp, para colocar no mesmo número um bot feito no Typebot.
- A mesma montagem no Make, com um Custom webhook e um módulo HTTP.
- WhatsApp no Dify, quando a resposta vem de um app de IA.
- Flowise no WhatsApp, quando o seu agente é um chatflow ou agentflow do Flowise.
- O servidor MCP de WhatsApp (beta): o n8n funciona com ele hoje, usando uma chave de agente autônoma.
Coloque os seus fluxos do n8n na API oficial hoje
Comece no plano grátis: um número, sem cartão. Passe para o plano Business quando precisar de mais números ou de mais mensagens.
Comece grátis Ver a documentação do webhook (em inglês)