← Blog

Como criar um chatbot de WhatsApp com n8n em 2026

Automatizar atendimento no WhatsApp deixou de ser luxo de grandes empresas. Com ferramentas de automação visual como o n8n e uma API de WhatsApp confiável, qualquer equipe consegue montar um chatbot funcional em poucas horas — sem depender de desenvolvedores para cada ajuste de fluxo.

Neste guia, você vai entender como conectar o n8n a uma instância de WhatsApp, receber mensagens via webhook, responder automaticamente e escalar o atendimento com regras simples. Usaremos a Zapixo como exemplo de API, por ser uma solução brasileira pensada para quem precisa de estabilidade, suporte em português e preço acessível.

Por que usar n8n para chatbots de WhatsApp?

O n8n é uma plataforma de automação open source que permite criar fluxos conectando serviços via nós visuais. Diferente de scripts isolados, você ganha:

  • Manutenção visual: alterar respostas ou adicionar etapas sem redeploy de código.
  • Integrações nativas: CRM, planilhas, banco de dados, e-mail, Slack e dezenas de outros serviços.
  • Self-hosted ou cloud: controle total dos dados ou operação gerenciada.
  • Webhooks nativos: ideal para receber eventos de APIs de WhatsApp em tempo real.

Para chatbots, o padrão é simples: a API de WhatsApp envia um POST para o webhook do n8n sempre que chega uma mensagem; o fluxo processa o conteúdo, decide a resposta e chama o endpoint de envio da API.

Pré-requisitos

Antes de abrir o n8n, garanta que você tem:

  1. Conta na Zapixo — crie uma instância em zapixo.com.br, conecte o número via QR Code e gere uma chave de API no painel (ela começa com zpx_).
  2. n8n rodando — localmente com Docker, no n8n Cloud ou em um VPS.
  3. URL pública para webhooks — use ngrok, Cloudflare Tunnel ou um domínio com HTTPS em produção.
  4. Número de WhatsApp dedicado — evite usar o pessoal; números comerciais reduzem risco de bloqueio.

Passo 1: Configurar o webhook na Zapixo

No painel da Zapixo, abra a instância conectada e cole em Webhook de mensagens a URL que o n8n vai expor. Ela precisa começar com https:// — algo como:

https://seu-n8n.exemplo.com/webhook/whatsapp-inbound

O webhook de mensagens recebe dois eventos:

  • messages.upsert — mensagem nova, inclusive as enviadas pela própria instância (com fromMe: true)
  • messages.update — mudança de status de uma mensagem, como entregue ou lida (opcional para fluxos avançados)

Salve. Para enviar as respostas, o n8n vai usar a chave de API (zpx_...) gerada no painel — não existe token por instância.

Passo 2: Criar o workflow no n8n

Abra o n8n e crie um workflow novo com estes nós:

Nó 1 — Webhook (Trigger)

Configure um webhook POST com path whatsapp-inbound e deixe Respond em Immediately. A Zapixo espera até 10 segundos por uma resposta 2xx e, se não vier, tenta de novo — até 3 vezes. Fluxo que só responde no final vira mensagem duplicada.

A mensagem chega no formato da Evolution API, e o nó Webhook coloca o corpo da requisição dentro de body. O essencial fica assim:

{
  "event": "messages.upsert",
  "data": {
    "key": {
      "remoteJid": "5511999999999@s.whatsapp.net",
      "fromMe": false
    },
    "message": {
      "conversation": "Olá, quero saber o preço"
    }
  }
}

Nó 2 — Code (normalizar dados)

Use um nó Code para extrair telefone e texto — e descartar o que não deve ser respondido:

const msg = $input.first().json.body.data;

// Ignora o que a própria instância enviou e mensagens de grupo
if (msg.key.fromMe || msg.key.remoteJid.endsWith('@g.us')) return [];

const from = msg.key.remoteJid.split('@')[0];
const text = (msg.message?.conversation || msg.message?.extendedTextMessage?.text || '').toLowerCase().trim();

return [{ json: { from, text, raw: msg } }];

Sem o filtro de fromMe, a resposta do bot volta pelo webhook e dispara outra resposta.

Nó 3 — Switch (roteamento por intenção)

Crie regras simples:

  • Se text contém "preço" ou "valor" → ramo comercial
  • Se text contém "horário" → ramo informações
  • Caso contrário → mensagem padrão ou handoff humano

Para chatbots mais inteligentes, substitua o Switch por uma chamada a um LLM (OpenAI, Anthropic) dentro de um nó HTTP — mas comece com regras; elas são previsíveis e baratas.

Nó 4 — HTTP Request (enviar resposta)

Configure um POST para o endpoint de envio de texto da Zapixo:

POST https://zapixo.com.br/api/v1/messages/text

Headers:

Authorization: Bearer zpx_SUA_CHAVE
Content-Type: application/json

Body:

{
  "instance": "minha-loja",
  "number": "5511999999999",
  "text": "Olá! Nossos planos começam em R$ 49/mês. Quer falar com um consultor? Responda *sim*."
}

No n8n, use expressões para preencher number e text a partir dos nós anteriores — por exemplo, {{ $json.from }} vindo do nó Code. Guarde a chave numa credencial do tipo Header Auth em vez de colar no nó.

Passo 3: Ativar e testar

  1. Ative o workflow no n8n.
  2. Copie a URL de produção do webhook (não a de teste).
  3. Atualize o webhook na Zapixo se necessário.
  4. Envie uma mensagem de teste do seu celular para o número conectado.
  5. Verifique a execução no painel Executions do n8n.

Erros comuns:

  • Webhook não dispara — URL sem HTTPS, firewall bloqueando ou workflow inativo.
  • 401 Unauthorized — chave errada, revogada ou sem Bearer na frente, no header Authorization.
  • 404 — o valor de instance não bate com o nome da instância no painel.
  • Mensagem respondida duas vezes — o Webhook não está em Respond: Immediately, ou o fluxo não descarta fromMe.
  • Número mal formatado — use DDI + DDD + número, apenas dígitos (ex.: 5511999999999).

Melhorias que valem a pena

Depois do fluxo básico funcionando, evolua gradualmente:

Menu numerado

A API da Zapixo envia texto e mídia — não há botões nem listas interativas. O menu que funciona é o numerado: "Responda 1 para preços, 2 para horários", com o Switch lendo o número que o cliente mandou.

Integração com CRM

Adicione um nó que consulta ou cria contatos no HubSpot, Pipedrive ou planilha Google Sheets antes de responder. Assim, cada conversa enriquece sua base.

Fila de atendimento humano

Quando o usuário digitar "atendente", pause o bot por X minutos usando Redis ou uma tabela no Postgres, e notifique sua equipe no Slack ou Telegram.

Horário comercial

Use um nó Schedule ou verifique new Date().getHours() no nó Code para responder fora do expediente com mensagem automática.

Boas práticas para não ser bloqueado

APIs não oficiais de WhatsApp exigem cuidado operacional:

  • Opt-in claro: só inicie conversas com quem autorizou.
  • Evite spam: limite disparos em massa; prefira respostas reativas ou campanhas segmentadas.
  • Conteúdo útil: mensagens genéricas repetidas aumentam denúncias.
  • Aqueça o número: números novos devem começar com volume baixo e interações reais.
  • Monitore o que você envia: registre no próprio fluxo o volume por dia, as respostas e os bloqueios — é o sinal mais cedo de que o número está em risco.

Quando migrar para fluxos mais complexos

O n8n atende muito bem até dezenas de ramificações e integrações. Se você precisar de NLP avançado, memória de conversa longa ou milhares de requisições por segundo, considere um microsserviço em Node.js ou Python que o n8n chama via webhook — mantendo a orquestração visual e delegando a inteligência para código.

A Zapixo expõe endpoints REST documentados que funcionam igual em qualquer linguagem, o que facilita essa arquitetura híbrida.

Conclusão

Criar um chatbot de WhatsApp com n8n é um caminho rápido e sustentável para automatizar o primeiro contato, qualificar leads e responder perguntas frequentes. Com a Zapixo fornecendo a camada de conexão com o WhatsApp e o n8n cuidando da lógica e integrações, você monta um MVP em um dia e itera sem fricção.

Comece simples: webhook, switch por palavras-chave, resposta automática. Meça resultados, ajuste copy e só então adicione complexidade. Se ainda não tem instância, crie a sua na Zapixo e siga este guia passo a passo.