Saltar al contenido principal
5 min de lectura

Trigger de webhook de n8n

Reenvíe eventos de Zenovay a n8n, la herramienta de flujos de trabajo de código abierto, y enrútelos a donde n8n integre: Postgres, Redis, GitHub, Notion, su propia API HTTP o JavaScript personalizado.

El nodo Webhook de n8n es el que capta los eventos de Zenovay. Funciona de la misma manera en n8n autoalojado y en n8n Cloud.

Los webhooks de salida son una función Pro+ de Zenovay. Actualice su plan para habilitarlos.


1. Construir el flujo de trabajo en n8n

  1. En n8n, cree un nuevo flujo de trabajo.
  2. Añada el nodo Webhook como trigger:
    • HTTP Method: POST
    • Path: elija algo descriptivo, por ejemplo, zenovay-events
    • Authentication: déjelo en None por ahora (añadiremos la verificación HMAC en el Paso 4)
    • Respond: Immediately (el cuerpo de la respuesta no importa a Zenovay; solo necesitamos un 2xx)
  3. Haga clic en Listen for test event en la parte superior del panel.
  4. Copie la URL de prueba que muestra n8n (por ejemplo, https://your-n8n-host.com/webhook-test/zenovay-events). Manténgala abierta: la necesitará en el Paso 2.

2. Añadir el webhook en Zenovay

  1. En app.zenovay.com, vaya a Settings → Webhooks.
  2. Seleccione el sitio web que debe disparar los eventos.
  3. Haga clic en Add webhook.
  4. Complete los campos:
    • Name: n8n — <qué hace el flujo> (por ejemplo, n8n — Save to Postgres)
    • URL: pegue la URL de prueba de n8n del Paso 1
    • Events: seleccione a qué debe reaccionar el flujo
  5. Haga clic en Create webhook.
  6. Haga clic en Send test event (el icono de avión de papel).

n8n debería mostrar ahora el evento capturado en el nodo Webhook. Haga clic en Use captured event para usarlo como payload de muestra para el resto del flujo de trabajo.


3. Cambiar de la URL de prueba a la URL de producción

n8n distingue las URLs de prueba (solo se activan cuando hace clic en "Listen") de las URLs de producción (siempre activas).

  1. Una vez que su flujo de trabajo esté construido y probado, haga clic en Activate (arriba a la derecha).
  2. n8n muestra una URL de producción: generalmente idéntica a la URL de prueba pero sin -test (por ejemplo, https://your-n8n-host.com/webhook/zenovay-events).
  3. En la configuración del webhook de Zenovay, edite el webhook y reemplace la URL de prueba por la URL de producción.
  4. Envíe otro evento de prueba para confirmar que llega.

4. Verificar la firma de Zenovay en n8n

Para mayor confiabilidad en producción, verifique la firma HMAC-SHA256 para que solo los eventos genuinos de Zenovay disparen su flujo.

Añada un nodo Function justo después del nodo 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;

Configure ZENOVAY_WEBHOOK_SECRET como una variable de entorno de n8n (Settings → Variables) usando el secreto de Settings → Webhooks → haga clic en el icono del ojo en la tarjeta del webhook en Zenovay.

La firma se calcula sobre el cuerpo de la solicitud sin procesar, no sobre el JSON analizado. n8n serializa el body para usted en $input.item.json.body, pero si su versión de n8n reordena las claves puede obtener verificaciones negativas falsas. En ese caso, configure el modo "Response" del nodo Webhook en "Use response code from previous node" y lea el body sin procesar mediante $input.item.binary.body.data.


5. Recetas comunes de flujos de trabajo

TriggerFlujo en n8n
goal_completedPostgres → INSERT en revenue_events
traffic_spikeNodo Slack → DM a la persona de guardia
website_downGitHub Issues → Crear incidencia urgente + asignar etiquetas
error_spikeNodo Sentry → Etiquetar release + avisar a #engineering en Discord

Resolución de problemas

  • n8n muestra el evento de prueba pero la URL de producción no se activa: el flujo de trabajo no está activado. Haga clic en el interruptor Active (arriba a la derecha): debe estar en verde.
  • La verificación HMAC falla: confirme que copió el secreto de webhook correcto. El secreto es por webhook, no por cuenta.
  • n8n agota el tiempo de espera: el modo de respuesta predeterminado Immediately del nodo Webhook devuelve 200 instantáneamente: Zenovay lo considera un éxito. Si configura When Last Node Finishes, el flujo largo puede superar el tiempo de espera de entrega de 5 segundos de Zenovay (los reintentos posteriores se activan mediante el cron de 6 horas).

Relacionado

¿Fue útil esta página?