Pular para o conteúdo principal
4 min de leitura

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

  1. No n8n, crie um novo workflow.
  2. 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)
  3. Clique em Listen for test event no topo do painel.
  4. 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

  1. Em app.zenovay.com, acesse Settings → Webhooks.
  2. Escolha o site que deve disparar os eventos.
  3. Clique em Add webhook.
  4. 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
  5. Clique em Create webhook.
  6. 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).

  1. Após o workflow estar criado e testado, clique em Activate (canto superior direito).
  2. O n8n exibe uma Production URL — geralmente idêntica à Test URL, mas sem -test (ex: https://your-n8n-host.com/webhook/zenovay-events).
  3. Nas configurações do webhook do Zenovay, edite o webhook e substitua a Test URL pela Production URL.
  4. 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

TriggerFlow n8n
goal_completedPostgres → INSERT na tabela revenue_events
traffic_spikeNó Slack → DM para a pessoa de plantão
website_downGitHub Issues → Criar issue urgente + atribuir labels
error_spikeNó 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 Immediately do nó Webhook retorna 200 instantaneamente — o Zenovay considera isso sucesso. Se você definir When 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).

Relacionados

Esta página foi útil?