Trigger de webhook n8n
Redirecione eventos do Zenovay para o n8n — a ferramenta de workflow open-source — e encaminhe-os para onde o n8n integra: Postgres, Redis, GitHub, Notion, sua própria API HTTP, JavaScript personalizado.
O nó Webhook do n8n é o que captura os eventos do Zenovay. Funciona da mesma forma no n8n self-hosted e no n8n Cloud.
Webhooks de saída são um recurso Pro+ do Zenovay. Faça upgrade do seu plano para habilitá-los.
1. Criar o workflow n8n
- No n8n, crie um novo workflow.
- Adicione o nó Webhook como trigger:
- HTTP Method:
POST - Path: escolha algo descritivo, ex:
zenovay-events - Authentication: deixe como None por enquanto (adicionaremos verificação HMAC no Passo 4)
- Respond:
Immediately(o body da resposta não importa para o Zenovay; precisamos apenas de um 2xx)
- HTTP Method:
- Clique em Listen for test event no topo do painel.
- Copie a Test URL que o n8n exibe (ex:
https://your-n8n-host.com/webhook-test/zenovay-events). Mantenha esta aba aberta — você precisará dela no Passo 2.
2. Adicionar o webhook no Zenovay
- Em
app.zenovay.com, acesse Settings → Webhooks. - Escolha o site que deve disparar os eventos.
- Clique em Add webhook.
- Preencha:
- Name:
n8n — <o que o flow faz>(ex:n8n — Salvar no Postgres) - URL: cole a Test URL do n8n do Passo 1
- Events: escolha os eventos que o flow deve processar
- Name:
- Clique em Create webhook.
- Clique em Send test event (ícone de avião de papel).
O n8n deverá mostrar agora o evento capturado no nó Webhook. Clique em Use captured event para usá-lo como payload de exemplo para o restante do workflow.
3. Trocar a Test URL pela Production URL
O n8n distingue as Test URLs (só disparam quando você clica em "Listen") das Production URLs (sempre ativas).
- Após o workflow estar criado e testado, clique em Activate (canto superior direito).
- O n8n exibe uma Production URL — geralmente idêntica à Test URL, mas sem
-test(ex:https://your-n8n-host.com/webhook/zenovay-events). - Nas configurações do webhook do Zenovay, edite o webhook e substitua a Test URL pela Production URL.
- Envie outro evento de teste para confirmar que ele chega.
4. Verificar a assinatura do Zenovay no n8n
Para confiabilidade em produção, verifique a assinatura HMAC-SHA256 para garantir que apenas eventos genuínos do Zenovay acionem seu flow.
Adicione um nó Function logo após o nó Webhook:
const crypto = require('crypto');
const signature = $input.item.json.headers['x-zenovay-signature'] || '';
const provided = signature.replace(/^sha256=/, '');
const rawBody = JSON.stringify($input.item.json.body);
const expected = crypto.createHmac('sha256', $env.ZENOVAY_WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
if (provided !== expected) {
throw new Error('Invalid Zenovay signature');
}
return $input.item;
Defina ZENOVAY_WEBHOOK_SECRET como uma variável de ambiente do n8n (Settings → Variables) usando o segredo de Settings → Webhooks → clique no ícone de olho no cartão do webhook no Zenovay.
A assinatura é calculada sobre o body bruto da requisição, não sobre o JSON interpretado. O n8n serializa o body para você em $input.item.json.body, mas se a sua versão do n8n reordenar as chaves, você pode ter verificações negativas falsas. Se isso acontecer, configure o modo "Response" do nó Webhook para "Use response code from previous node" e leia o body bruto via $input.item.binary.body.data.
5. Receitas comuns de workflow
| Trigger | Flow n8n |
|---|---|
goal_completed | Postgres → INSERT na tabela revenue_events |
traffic_spike | Nó Slack → DM para a pessoa de plantão |
website_down | GitHub Issues → Criar issue urgente + atribuir labels |
error_spike | Nó Sentry → Marcar release + mencionar #engineering no Discord |
Solução de problemas
- O n8n mostra o evento de teste, mas a Production URL não dispara: o workflow não está ativado. Clique no toggle Active (canto superior direito) — ele deve estar verde.
- Verificação HMAC falha: confirme que você copiou o segredo correto do webhook. O segredo é por webhook, não por conta.
- n8n atinge timeout: o modo de resposta padrão
Immediatelydo nó Webhook retorna 200 instantaneamente — o Zenovay considera isso sucesso. Se você definirWhen Last Node Finishes, o flow longo pode exceder o timeout de entrega de 5 segundos do Zenovay (as novas tentativas subsequentes são acionadas via cron de 6 horas).