Agente de IA no WhatsApp com n8n: passo a passo completo
Para montar um agente de IA no WhatsApp com n8n, use um nó Webhook para receber a mensagem, um nó Code para normalizar e filtrar, o nó AI Agent com memória por contato e um nó HTTP Request chamando POST /send/text para responder. O pacote da comunidade n8n-nodes-zapzap (versão 0.1.3 no npm em 27/10/2026) é uma alternativa ao HTTP Request, mas só roda em n8n self-hosted. Abaixo está o fluxo inteiro.
Publicado em · 7 min de leitura
Como o fluxo funciona de ponta a ponta
O desenho tem seis nós. Webhook (gatilho) recebe o evento messages da instância. Um nó Code extrai número, texto e id e descarta mensagens suas. Um IF ou o próprio Code corta duplicatas e conversas já com humano. O nó AI Agent recebe o texto, usa a memória daquele contato e, se precisar, chama ferramentas. Por fim, um HTTP Request (ou o nó da comunidade) envia a resposta por send/text.
Antes de montar, entenda o que o n8n entrega e o que não entrega: ele orquestra, mas o modelo de IA é do provedor que você configurar na credencial do nó, e o custo desse provedor é separado. A página da integração com n8n e o guia de integrar WhatsApp no n8n cobrem a base; aqui o foco é o agente.
O que você precisa antes de começar
Uma instância do ZapZap conectada por QR code, a chave e o segredo da API, um n8n acessível pela internet (self-hosted com HTTPS ou n8n Cloud) e uma credencial de um provedor de modelo de IA. Para testes locais, o n8n precisa de uma URL pública; túnel serve para desenvolver, mas não para produção.
Crie no n8n uma credencial Header Auth ou use campos fixos de cabeçalho para x-api-key e x-api-secret. Assim o segredo fica na credencial, não escrito em cada nó. Se preferir partir de algo pronto, há modelos em templates de n8n para WhatsApp.
Passo 1: receber a mensagem com o nó Webhook
Adicione um nó Webhook, método POST, e copie a Production URL (a de teste só funciona com o fluxo em modo de escuta). Registre essa URL na instância com POST /webhook, ativando o evento messages. Ative o fluxo antes de usar a URL de produção.
Teste com POST /instances/{id}/webhook/test: ele dispara um evento de teste e devolve o status HTTP e o tempo de resposta do seu endpoint. Se algo falhar, GET /instances/{id}/webhook/deliveries mostra as últimas entregas e GET /webhook/errors, as falhas.
cURL (registrar o webhook do n8n)
curl -X POST https://api.zapzapapi.com/api/v1/SEU_INSTANCE_ID/webhook \
-H "Content-Type: application/json" \
-H "x-api-key: SUA_API_KEY" \
-H "x-api-secret: SEU_API_SECRET" \
-d '{"url":"https://SEU-N8N.com/webhook/whatsapp-agente","enabled":true,"events":["messages"]}'Passo 2: normalizar e filtrar com um nó Code
Este é o nó que evita os três bugs mais comuns: o agente responder à própria mensagem (fromMe), responder duas vezes ao mesmo evento e responder em grupos sem querer. A estrutura exata do evento deve ser conferida na aba de execução do Webhook, com uma mensagem real; o código usa leitura defensiva e você ajusta os nomes.
O nó devolve um item com numero, texto e id. Se a mensagem não deve ser tratada, devolve uma lista vazia, o que encerra o fluxo naquele ramo. A deduplicação usa o armazenamento estático do workflow, suficiente para um n8n único; com várias instâncias do n8n, use um banco ou Redis.
n8n (nó Code, JavaScript)
const evento = $input.first().json.body ?? $input.first().json;
const msg = evento.message ?? evento.data ?? evento;
if (msg.fromMe) return [];
const id = msg.messageid ?? msg.id;
const numero = msg.sender ?? msg.from;
const texto = msg.text ?? msg.body ?? "";
const grupo = String(msg.chatid ?? msg.chatId ?? "").endsWith("@g.us");
if (!numero || !texto || grupo) return [];
const estado = $getWorkflowStaticData("global");
estado.vistos = estado.vistos ?? [];
if (id && estado.vistos.includes(id)) return [];
if (id) estado.vistos = [...estado.vistos.slice(-500), id];
return [{ json: { numero: String(numero).replace(/\D/g, ""), texto, id } }];Passo 3: configurar o nó AI Agent com memória por contato
Adicione o nó AI Agent. Configure três coisas. Modelo de chat: escolha o provedor e o modelo na credencial (o nome do modelo fica na sua configuração, não neste guia). Memória: use uma memória de janela com a chave de sessão igual ao número do contato, para cada cliente ter a sua própria conversa. Prompt de sistema: papel, tom, limites e regra de passagem para humano.
Um prompt de sistema funcional, em poucas linhas: quem é o assistente e para qual empresa; responda em mensagens curtas, no tom de WhatsApp; use apenas as informações fornecidas; se não souber ou se o cliente pedir uma pessoa, responda exatamente a frase de transferência combinada. Essa frase fixa permite que o fluxo detecte o handoff logo depois, com um nó IF.
Se o agente precisar consultar dados (agenda, pedido, estoque), adicione ferramentas: um HTTP Request como ferramenta apontando para o seu sistema, com descrição clara do que faz. Mantenha poucas ferramentas e bem descritas; modelos erram mais quando têm muitas opções.
Passo 4: enviar a resposta pela API
Depois do agente, adicione um HTTP Request. Method POST; URL https://api.zapzapapi.com/api/v1/SEU_INSTANCE_ID/send/text; cabeçalhos x-api-key e x-api-secret; corpo JSON com number e text. O campo text vem da saída do agente, e number vem do nó Code.
O campo delay do send/text e a presença digitando (message/presence) deixam a resposta mais natural, e um pequeno atraso evita parecer máquina. Use com moderação: o que mais pesa para o número é o comportamento geral, não um truque de envio.
n8n (HTTP Request, corpo JSON)
{
"number": "{{ $('Normalizar').item.json.numero }}",
"text": "{{ $json.output }}",
"delay": 2000
}cURL equivalente
curl -X POST https://api.zapzapapi.com/api/v1/SEU_INSTANCE_ID/send/text \
-H "Content-Type: application/json" \
-H "x-api-key: SUA_API_KEY" \
-H "x-api-secret: SEU_API_SECRET" \
-d '{"number":"5511999999999","text":"Resposta do agente","delay":2000}'Usar o pacote n8n-nodes-zapzap em vez do HTTP Request
Existe um pacote de nós da comunidade, n8n-nodes-zapzap, publicado no npm (versão 0.1.3 conferida em 27/10/2026), que cobre envio de mensagens, mídia, enquetes, botões e listas, reação, gestão de instâncias e recebimento de eventos em tempo real. Ele simplifica a configuração, porque o nó já conhece os campos.
Um limite importante: segundo a documentação do n8n (lida em 27/10/2026), nós da comunidade não verificados não estão disponíveis no n8n Cloud e exigem n8n self-hosted. Como este pacote é da comunidade e não temos o selo de verificado do n8n, o caminho garantido no n8n Cloud é o HTTP Request. Os dois funcionam com a mesma API e as mesmas credenciais.
Instalação (n8n self-hosted)
n8n-nodes-zapzapPasso 5: detectar a passagem para humano e pausar o agente
Depois do agente, um nó IF verifica se a resposta é a frase de transferência. Se for, o fluxo marca o contato como com humano (em uma tabela do n8n, Redis ou no seu CRM), avisa a equipe e envia ao cliente uma mensagem curta. Antes do agente, outro IF consulta essa marca e encerra o fluxo se o contato estiver com humano.
A marca precisa de um prazo de expiração ou de um botão de liberar, senão o contato nunca volta ao bot. Esse mesmo desenho aparece no guia de chatbot de WhatsApp com IA, com regras de handoff e custo.
Erros comuns e como resolver
| Sintoma | Causa provável | Solução |
|---|---|---|
| O fluxo não dispara | Webhook em modo de teste ou fluxo inativo | Ativar o fluxo e usar a Production URL |
| O agente responde duas vezes | Evento duplicado | Deduplicar por id da mensagem |
| O bot conversa sozinho em loop | Mensagens fromMe não filtradas | Descartar fromMe no nó Code |
| Todos os clientes compartilham a mesma conversa | Chave de sessão da memória fixa | Usar o número do contato como chave |
| Erro 401 ou 403 no envio | Cabeçalhos de autenticação errados | Conferir x-api-key e x-api-secret |
| Resposta chega, mas fora de contexto | Prompt genérico ou sem material | Reforçar o prompt e dar o conteúdo da empresa |
Para o dia a dia, mantenha o histórico de execuções do n8n ligado nos primeiros dias, revise amostras de conversa e ajuste o prompt. Para ver todos os recursos da API que o agente pode usar como ferramenta, abra a referência e o OpenAPI.
Resumo rápido
- O fluxo é Webhook, nó Code (filtro), AI Agent com memória por contato e HTTP Request para /send/text.
- Filtre fromMe, grupos e eventos duplicados antes do agente, ou ele responde a si mesmo.
- Use o número do contato como chave de sessão da memória para separar as conversas.
- O pacote n8n-nodes-zapzap (0.1.3 no npm em 27/10/2026) só roda em n8n self-hosted; no n8n Cloud use o HTTP Request.
- Combine uma frase fixa de transferência com um IF para pausar o agente quando um humano assumir.
Continue lendo
Perguntas frequentes
Como conectar o WhatsApp a um agente de IA no n8n?
Registre a Production URL de um nó Webhook como webhook da instância (POST /webhook, evento messages), trate a mensagem com um nó Code, passe o texto ao nó AI Agent com memória por contato e envie a resposta com um HTTP Request para /send/text.
O nó n8n-nodes-zapzap funciona no n8n Cloud?
Não, na prática. Pela documentação do n8n, nós da comunidade não verificados exigem n8n self-hosted, e este pacote é da comunidade, sem selo de verificado do n8n. No n8n Cloud, use o nó HTTP Request com os mesmos cabeçalhos de autenticação.
Como evito que o agente responda a si mesmo?
Descarte, no primeiro nó, os eventos com fromMe verdadeiro e deduplique por id da mensagem. Sem esse filtro, a resposta enviada pelo agente volta como evento e o fluxo entra em loop.
Qual modelo de IA devo usar no nó AI Agent?
Qualquer um que o n8n suporte e que você tenha credencial. A escolha depende de custo, velocidade e qualidade no seu caso. Teste com algumas dezenas de conversas reais antes de decidir e use um modelo menor para perguntas simples.
Dá para o agente consultar meu sistema?
Dá. Adicione ferramentas ao nó AI Agent, como um HTTP Request apontando para a sua API, com uma descrição clara do que a ferramenta faz. Mantenha poucas ferramentas e limite o que cada uma pode alterar.
Ligue um agente de IA ao seu WhatsApp
Crie a conta, verifique o telefone e receba o crédito de boas-vindas, sem depositar (um por telefone, sujeito à campanha vigente). Conecte por QR code, registre o webhook do n8n e teste.
