Guia de integração

WhatsApp + n8n, prontos para conversar

Instale o programa, conecte o WhatsApp pelo QR code e mantenha seus workflows trabalhando com uma fila confiável.

01

Comece pelo painel n8zap

Crie sua conta, confirme o e-mail e abra o painel. Em seguida:

  1. Crie uma conexão de WhatsApp e informe um nome para identificá-la.
  2. Clique em Começar a conexão no card da conexão e baixe o programa.
  3. Abra o programa, cole o código de pareamento e leia o QR code com o celular.
  4. Aguarde o card mostrar Tudo funcionando.
  5. No card da conexão, informe o nome da sua conta do n8n (só o nome, ex: minhaempresa).
  6. Copie o workflow pronto do mesmo card e importe no n8n.
Importante: cada conexão possui seu próprio endpoint e sua própria chave. Não compartilhe a chave de API publicamente.
02

Instale o programa e conecte o WhatsApp

  1. Entre em Conexões e clique em Começar a conexão.
  2. Baixe o programa para o seu sistema (Windows, macOS ou Linux) e instale.
  3. Na mesma tela do painel, gere o código de pareamento e copie.
  4. Abra o programa, cole o código e confirme. Ele liga o programa à sua conta.
  5. O QR code aparece dentro do programa. No celular: WhatsApp → Configurações → Aparelhos conectados → Conectar um aparelho.
  6. Aponte a câmera para o código. Pronto — pode minimizar ou fechar a janela.
Sua senha do WhatsApp nunca é pedida: a conexão usa o mesmo mecanismo de aparelho conectado que o WhatsApp Web. Você pode encerrar quando quiser, pelo próprio celular, em Aparelhos conectados.

Instale no computador que fica ligado. Enquanto o programa estiver aberto, ele impede o computador de dormir e a tela de apagar, para que as mensagens continuem entrando e saindo. Fechar a janela não desconecta: o programa segue na bandeja do sistema.

Em Dispositivos, confira o último sinal, a versão, as últimas mensagens, a fila e as falhas. Se o computador desligar, a fila permanece pendente e volta a ser processada quando o programa reconectar.

03

Configure o n8n

No card da conexão, clique em Copiar workflow n8n. No n8n, importe o JSON copiado em Import from Clipboard.

O workflow sai pronto, com:

  • Webhook no caminho fixo whatsapp-mensagem-recebida.
  • Filtro que ignora mensagens de grupo.
  • Transcrição automática de áudio pelo Gemini.
  • Agente de IA com memória por remetente (12 mensagens de contexto).
  • Endpoint de envio e header x-api-key já preenchidos com os dados da sua conexão.
  • Prompt do agente já escrito com o nome da empresa, o nome do assistente e o catálogo que você preencheu no painel.
Webhook de produção (montado pelo n8zap) https://SUA-CONTA.app.n8n.cloud/webhook/whatsapp-mensagem-recebida

Depois de importar sobra uma única coisa manual: selecionar sua credencial do Google Gemini nos nós Transcrever áudio e Google Gemini Chat Model. Aí é só ativar o workflow.

Mudou o catálogo ou o prompt no painel? Copie o workflow de novo e reimporte — o JSON é gerado no momento da cópia.
04

Receba mensagens

No card da conexão existe um campo só: Conta do n8n. Informe apenas o nome da sua conta — o mesmo que aparece no começo do endereço do seu n8n.

Se o seu n8n é https://minhaempresa.app.n8n.cloud minhaempresa

O n8zap monta a URL final sozinho, sempre no mesmo formato, e ela bate exatamente com o caminho do Webhook do workflow que você importou:

https://minhaempresa.app.n8n.cloud/webhook/whatsapp-mensagem-recebida
Por que não dá pra colar a URL inteira: quase todo caso de "não funciona" era URL colada errada — a do editor, a de /webhook-test/ (que só responde enquanto a aba do n8n está aberta ouvindo um teste), ou a de um workflow que nunca foi ativado. Com só o nome da conta, esse erro deixa de ser possível.

Dois WhatsApp na mesma conta do n8n

O n8n só deixa um fluxo ativo por caminho dentro da mesma conta. Então a segunda conexão precisa de um caminho diferente — senão o segundo workflow importado não ativa.

O n8zap resolve isso sozinho: a segunda conexão já nasce com whatsapp-mensagem-recebida-2, a terceira com -3, e assim por diante. O workflow copiado de cada card já vem com o caminho daquela conexão.

Você não precisa digitar nada disso. O caminho aparece pronto no card e é exclusivo daquela conexão — é só copiar. Ele também não muda sozinho depois de reservado, para o fluxo que já está rodando no n8n nunca ficar apontando para um caminho antigo.

Mas dá para trocar. Se o seu fluxo no n8n já usa outro caminho, edite o campo direto no card: aceita letras minúsculas, números e hífen. Se o caminho já estiver em uso em outra conexão sua, o site avisa — o n8n não deixa dois fluxos ativos no mesmo caminho. Depois de trocar, copie o workflow de novo.
Erro comum: importar o mesmo JSON duas vezes. Os dois fluxos ficam com o mesmo caminho e o segundo não ativa. Copie o workflow do card da conexão certa.

O n8zap envia um POST com este formato:

{
  "conexaoId": "id-da-conexao",
  "conexaoNome": "Minha conexão",
  "de": "5511999999999@s.whatsapp.net",
  "numero": "5511999999999",
  "numeroRemetente": "5511999999999",
  "sessionId": "5511999999999",
  "sessionKey": "5511999999999",
  "isGrupo": false,
  "nome": "Nome do contato",
  "mensagem": "Olá!",
  "tipo": "conversation",
  "timestamp": 1700000000
}

No nó Webhook, os campos ficam dentro de $json.body. Por isso, o texto do Agente de IA deve usar:

{{ $json.body.mensagem }}

Quando a mensagem for um áudio, o n8zap também envia audioBase64, audioDataUrl, audioMimeType e temAudio. Use audioDataUrl em um nó de transcrição compatível ou envie audioBase64 para o serviço de áudio que escolher.

05

Responda no WhatsApp

O nó HTTP Request precisa fazer um POST para o endpoint exibido no painel:

https://n8zap.site/api/conexoes/ID_DA_CONEXAO/enviar?id=ID_DA_CONEXAO

Configure o header e o corpo assim:

Header
x-api-key: CHAVE_DA_CONEXAO

JSON body
{
  "numero": "{{ $('Webhook').item.json.body.numeroRemetente }}",
  "mensagem": "{{ $json.output }}"
}

A chave deve estar no header x-api-key, não no corpo da requisição. Uma resposta 202 Accepted significa que a mensagem foi validada e entrou na fila — não que já chegou ao WhatsApp. O programa busca, envia e confirma a mensagem sem duplicá-la.

06

Campanhas (disparo para uma lista)

Em Campanhas você cola uma lista de números, escreve a mensagem e o n8zap envia um por um, com pausa entre cada envio.

  1. Escolha a conexão de WhatsApp que vai disparar (precisa estar conectada).
  2. Escreva a mensagem. Use {{nome}} e {{primeiro_nome}} para personalizar.
  3. Cole os contatos, um por linha — aceita numero, nome na mesma linha.
  4. Confira o resumo: quantos números foram aceitos, quantos foram recusados e quantos duplicados sumiram.
  5. Clique em Criar e disparar e acompanhe o log ao vivo.
Intervalo entre envios: o padrão é 5 segundos e o mínimo é 3. Disparo sem pausa, com mensagem idêntica para todo mundo, é exatamente o comportamento que faz o WhatsApp banir um número. A pausa e a personalização não são enfeite — são o que mantém o número vivo.

A campanha é persistida no servidor e cada envio fica na fila. Você pode fechar o painel, mas o computador com o programa aberto precisa estar ligado para entregar. Se ficar offline, nada é perdido: os itens continuam pendentes e retomam após a reconexão.

5511912345678, João da Silva
11 91234-5678
(11) 99999-9999, Maria
07

Se não funcionar

O workflow não recebe mensagens

Confirme que o workflow está ativo no n8n e que o nome da conta preenchido no painel é o mesmo do endereço do seu n8n. O card mostra embaixo do campo qual URL está sendo usada.

O programa aparece fechado

Abra o N8ZAP no computador e aguarde alguns segundos — ele reconecta sozinho. Se continuar, use Atualizar status no card da conexão. Último sinal antigo significa que o programa parou de responder ou o computador foi desligado.

Mensagens ficaram na fila

Não recrie nem reenvie manualmente. Abra o programa e aguarde a reconexão; a recuperação automática busca os itens pendentes e faz o envio uma única vez.

“Path already in use” ao importar

Já existe outro workflow com o caminho whatsapp-mensagem-recebida. Apague o antigo ou copie o workflow do card da outra conexão, que já vem com o caminho numerado.

A campanha não sai do lugar

Veja o log da campanha: conexão desconectada e assinatura vencida pausam o disparo automaticamente, com o motivo escrito no evento.

Erro na Memória Simples

Use {{ $json.body.sessionId }} no campo Session Key. A chave é enviada automaticamente pelo n8zap.

Erro “ID da conexão ausente”

Copie novamente o endpoint do card atual da conexão. O ID precisa estar no caminho da URL.

Erro 401 ao responder

Atualize a credencial do n8n com a chave atual no header x-api-key. Renovar a chave invalida a anterior.

Erro 404, timeout ou conexão recusada

Verifique se a URL é a de produção, se o workflow está publicado e se o n8n está acessível pela internet.

Diagnóstico: os logs da Netlify mostram se o n8zap entregou a mensagem ao n8n ou qual resposta o n8n devolveu.