received do Wabox, um filtro que ignora o que não interessa e um nó HTTP Request que responde pelo send-text. A verificação de assinatura e a deduplicação por event_id ficam no final, como etapas opcionais.
Os exemplos usam
https://api.wabox.me/instances/{instance_id}/token/{token} como base. Troque {instance_id} e {token} pelos valores da instância (dashboard › instância › Credenciais). Envie o header Client-Token só se ele estiver ativado no seu workspace — veja Client-Token.Receber mensagens
1
Crie o nó Webhook
Adicione um nó Webhook ao workflow e configure:
- HTTP Method:
POST - Path: um caminho seu, por exemplo
wabox-received - Respond: Immediately — o n8n devolve
200antes de executar o resto do workflow. O Wabox espera a resposta em até 10 s e reenvia se não receber2xx; responder na hora evita reentregas duplicadas quando o workflow demora.
2
Aponte o webhook received para o n8n
No dashboard, abra a instância e cole a URL no campo do webhook de mensagens recebidas. Ou faça pela API:A instância precisa estar conectada (QR lido) para receber mensagens — veja Primeiros passos.
3
Mande uma mensagem de teste e inspecione o item
Clique em “Listen for test event”, envie uma mensagem de texto para o número conectado e olhe a saída do nó. O n8n coloca o payload em
body e os headers em headers. Os campos que você vai usar:O payload completo está em Webhook received.
4
Filtre o que não deve gerar resposta
Adicione um nó IF entre o Webhook e a resposta com estas condições (todas verdadeiras):
{{ $json.body.type }}é igual areceived{{ $json.body.from_me }}é falso{{ $json.body.text }}existe (imagens, áudios e documentos vêm semtext)
Responder pelo WhatsApp
1
Adicione o nó HTTP Request
Conecte um nó HTTP Request à saída “true” do IF:Para responder citando a mensagem original, inclua
- Method:
POST - URL:
https://api.wabox.me/instances/{instance_id}/token/{token}/send-text - Send Body: ligado, Body Content Type:
JSON, Specify Body: Using JSON - Corpo (com expressão ativada):
"reply_to_message_id": "{{ $json.body.message_id }}". Todos os campos aceitos estão em POST /send-text.Se o Client-Token estiver ativado, adicione o header Client-Token na seção de headers do nó.2
Leia a resposta
O envio é enfileirado e a API responde na hora:
status: "queued" não significa entregue. O resultado chega no webhook delivery, com o mesmo message_id. Se quiser tratar falhas de envio no n8n, aponte delivery_url para outro nó Webhook (ou para o mesmo, separando pelo body.type).Verificar a assinatura (opcional)
Toda entrega traz o headerX-Wabox-Signature: t=<unix>,v1=<hex>, onde v1 é o HMAC-SHA256 do texto t + "." + corpo cru, usando o secret da instância (whsec_…, visível em GET /webhooks e no painel). Detalhes em Assinatura de webhooks.
Com Raw Body ligado, adicione um nó Code (modo “Run Once for Each Item”) logo depois do Webhook:
require('crypto') for bloqueado, libere o módulo com a variável de ambiente NODE_FUNCTION_ALLOW_BUILTIN=crypto.
Deduplicar por event_id
Se o n8n demorar ou responder erro, o Wabox reenvia a mesma entrega (10 s, 1 min, 10 min, 1 h, 6 h) com o mesmo event_id — também disponível no header X-Wabox-Event-Id. Com “Respond immediately” isso é raro, mas um workflow idempotente não responde duas vezes ao cliente:
- Use o nó de remoção de duplicados do n8n configurado para lembrar valores entre execuções, com a chave
{{ $json.body.event_id }}; ou - Guarde os
event_idjá processados em um banco/Redis seu e descarte repetidos com um nó IF.