El nodo Webhook es el disparador más potente y versátil en n8n. Transforma n8n en un punto final de API en tiempo real al que cualquier sistema externo puede llamar: Stripe, GitHub, Typeform, tu propia aplicación o cualquier servicio que pueda realizar solicitudes HTTP.
En este tutorial completo, aprenderás todo sobre los webhooks en n8n: qué son, cómo crearlos y configurarlos, la diferencia entre los modos de prueba y producción, las opciones de autenticación, cómo procesar los datos entrantes con expresiones y cómo enviar datos a servicios externos con el nodo HTTP Request.
Cómo crear un disparador Webhook · Modo de prueba vs producción · Autenticación de webhooks · Procesamiento de datos de webhook · Respuesta a webhooks · Integración de webhook de Stripe · Integración de webhook de GitHub · Envío de solicitudes HTTP desde n8n · Consejos comunes para la resolución de problemas
¿Qué Son los Webhooks? Una Introducción Rápida
Los webhooks son un mecanismo para que una aplicación notifique a otra cuando sucede algo, utilizando HTTP. En lugar de que tu aplicación pregunte continuamente "¿cambió algo?" (polling), el servicio externo te envía datos en el momento en que ocurre un evento.
Piensa en los webhooks como "APIs inversas":
- Llamada API tradicional: Tu aplicación → pregunta → Servicio externo → responde
- Webhook: Servicio externo → envía datos → Tu punto final (n8n)
Ejemplos comunes del mundo real:
- Stripe: Envía un webhook cuando un pago tiene éxito, la suscripción se renueva o se emite un reembolso
- GitHub: Envía un webhook en push, pull request, creación de issue o despliegue
- Typeform / JotForm: Envía datos de respuesta del formulario cuando alguien envía un formulario
- Shopify: Envía datos de pedido cuando se completa una nueva compra
- Tu propia aplicación: Puede enviar webhooks para activar flujos de trabajo de n8n desde cualquier acción del usuario
Creación de Tu Primer Disparador Webhook en n8n
Configurar un disparador Webhook en n8n lleva menos de 2 minutos. Aquí está el proceso paso a paso:
Crear un Nuevo Flujo de Trabajo
Abre n8n, haz clic en Nuevo Flujo de Trabajo en la parte superior derecha. El lienzo del flujo de trabajo se abrirá con un estado vacío.
Añadir el Nodo Webhook
Haz clic en el botón + (o presiona Tab) para abrir el menú del nodo. Busca "Webhook" y selecciona el nodo disparador Webhook. Aparecerá como el primer nodo en tu flujo de trabajo.
Configurar el Webhook
Haz clic en el nodo Webhook para abrir su panel de configuración. Configura:
- Método HTTP: POST (para recibir datos), GET (para disparadores simples) o cualquier otro método
- Ruta: Una ruta URL única (por ejemplo,
mi-flujo-de-trabajooeventos-stripe) - Autenticación: Ninguna por ahora (cubriremos la autenticación más adelante)
- Responder: Inmediatamente (devuelve 200 OK de inmediato) o Cuando el Último Nodo Termina
Copiar Tu URL de Webhook
n8n genera dos URLs después de la configuración. Las verás en el panel del nodo:
Probar el Webhook
Haz clic en "Escuchar Evento de Prueba" en el nodo. Luego envía una solicitud de prueba a la URL de prueba. n8n capturará los datos entrantes y los mostrará en el panel de salida del nodo.
Modo de Prueba vs Modo de Producción
Comprender los dos modos de webhook es fundamental: mezclarlos es uno de los errores más comunes de n8n.
| Característica | URL de Prueba (/webhook-test/) | URL de Producción (/webhook/) |
|---|---|---|
| Cuándo Activo | Solo cuando haces clic en "Escuchar Evento de Prueba" en el editor | Siempre activo cuando el flujo de trabajo está habilitado |
| Ejecución Guardada | No: muestra los datos en el editor pero no los guarda | Sí: registro de ejecución completo en el Historial |
| Tiempo de Espera | 120 segundos (espera la solicitud y luego se cierra automáticamente) | Sin tiempo de espera: siempre escuchando |
| Solicitudes Simultáneas | Solo una a la vez | Se admiten múltiples solicitudes concurrentes |
| Usar Para | Solo desarrollo y pruebas | Tráfico de producción real |
La URL de prueba solo funciona cuando tienes el flujo de trabajo abierto en el editor y has hecho clic en "Escuchar Evento de Prueba". Si utilizas la URL de prueba como un punto final de webhook en Stripe, GitHub o cualquier servicio externo, sus webhooks fallarán el 99% de las veces (cuando no estés probando activamente). Siempre utiliza la URL de producción para integraciones reales.
Autenticación de Webhook
Sin autenticación, cualquiera que descubra tu URL de webhook puede enviar solicitudes y activar tu flujo de trabajo. n8n ofrece varios métodos de autenticación:
Opción 1: Autenticación de Cabecera
El enfoque más común. El servicio externo envía una clave secreta en una cabecera HTTP específica. n8n valida el valor de la cabecera antes de ejecutar el flujo de trabajo.
Opción 2: Autenticación Básica
Utiliza la autenticación básica HTTP estándar con nombre de usuario y contraseña. Las credenciales se envían en la cabecera de Autorización como "nombre de usuario:contraseña" codificado en base64.
Opción 3: Verificación de Firma (Patrón Stripe, GitHub)
Muchos servicios como Stripe y GitHub firman sus cargas útiles de webhook con HMAC-SHA256. Verificas la firma para confirmar que la solicitud es genuina. Esto requiere el nodo Code:
Procesamiento de Datos de Webhook con Expresiones
Cuando llega una solicitud de webhook, n8n estructura los datos entrantes con estos campos de nivel superior:
Accede a estos datos en nodos posteriores utilizando expresiones n8n:
Respondiendo a Webhooks
Muchos servicios esperan una respuesta específica a sus webhooks. n8n ofrece tres modos de respuesta:
Modo 1: Responder Inmediatamente
n8n devuelve HTTP 200 tan pronto como se recibe el webhook, sin esperar a que termine el flujo de trabajo. Utiliza esto para escenarios de "disparar y olvidar" donde el servicio de envío no necesita una respuesta.
Modo 2: Cuando el Último Nodo Termina
n8n espera a que se complete todo el flujo de trabajo, luego devuelve la salida del último nodo como el cuerpo de la respuesta. Utiliza esto cuando la persona que llama espera que se devuelvan datos (por ejemplo, un patrón de llamada API síncrona).
Modo 3: Responder al Nodo Webhook
El modo más flexible. Coloca el nodo Responder a Webhook en cualquier lugar de tu flujo de trabajo para enviar una respuesta personalizada en cualquier momento, luego continúa el flujo de trabajo de forma asíncrona.
Stripe marca los webhooks como fallidos si no reciben una respuesta 2xx dentro de los 30 segundos. Utiliza Responder Inmediatamente o el nodo Responder a Webhook al principio de tu flujo de trabajo, luego continúa procesando de forma asíncrona. Esto evita que Stripe reintente e inunde tu flujo de trabajo.
Ejemplo Real: Procesamiento de Webhooks de Stripe
Construyamos un flujo de trabajo completo de webhook de pago de Stripe que:
- Recibe un evento
payment_intent.succeededde Stripe - Responde inmediatamente con 200 (para evitar reintentos de Stripe)
- Extrae los detalles del pago
- Guarda el registro en Google Sheets
- Envía un correo electrónico de confirmación al cliente
- Notifica al equipo en Slack
Nodo Webhook (POST, ruta: stripe-events)
Método HTTP: POST | Autenticación: Ninguna (verificamos la firma en el código) | Responder: Usando el Nodo 'Responder a Webhook'
Nodo Code: Verificar la Firma de Stripe
Valida la firma del webhook de Stripe usando crypto (ver el código arriba). Lanza un error para firmas inválidas, lo que detiene el flujo de trabajo.
Nodo IF: Filtrar Tipos de Evento
Condición: {{ $json.type }} es igual a payment_intent.succeeded
La rama True continúa; la rama False termina silenciosamente.
Nodo Responder a Webhook
Devuelve inmediatamente {"received": true} con HTTP 200. Stripe recibe la confirmación. El flujo de trabajo continúa de forma asíncrona.
Nodo Set Fields: Extraer Datos de Pago
Paralelo: Google Sheets + Gmail + Slack
Tres nodos se ejecutan en paralelo desde la salida de Set Fields:
- Google Sheets: Añadir fila a la hoja "Pagos"
- Gmail: Enviar recibo HTML a {{ $json.email }}
- Slack: Publicar en el canal #revenue: "💰 Nuevo pago: ${{ $json.amount }} de {{ $json.name }}"
Ejemplo Real: Webhook de GitHub para Notificaciones de CI/CD
Este flujo de trabajo recibe eventos push de GitHub y envía notificaciones al equipo:
Configura GitHub para enviar webhooks a tu URL de n8n:
- Ve a tu repositorio de GitHub → Configuración → Webhooks → Añadir webhook
- Establece la URL de Payload a tu URL de webhook de producción de n8n
- Tipo de contenido:
application/json - Secreto: genera un secreto aleatorio y añádelo a la credencial de Autenticación de Cabecera de n8n
- Selecciona eventos: Push, Pull Request o eventos específicos
Expresiones n8n para Datos de GitHub
Envío de Datos: Nodo HTTP Request
La otra cara de la recepción de webhooks es enviarlos: llamar a APIs y webhooks externos desde tu flujo de trabajo de n8n. El nodo HTTP Request maneja todas las llamadas HTTP salientes.
Solicitud POST Básica
Solicitud GET con Parámetros de Consulta
Manejo de la Paginación de la API
Muchas APIs paginan sus respuestas. El nodo HTTP Request tiene soporte de paginación incorporado:
Caso de Uso de Webhook: Envío de Formularios
El procesamiento de envíos de formularios es uno de los casos de uso de webhook más comunes. Aquí te mostramos cómo manejar formularios de Typeform, HubSpot y formularios HTML personalizados:
Webhook de Typeform
Configurar en Typeform: Conectar → Webhooks → añadir tu URL de n8n.
Formulario HTML Personalizado → Webhook de n8n
Puedes publicar directamente desde cualquier formulario HTML a un webhook de n8n usando JavaScript:
Problemas Comunes de Webhook y Soluciones
Problema 1: Webhook No Recibe Datos
- Verificar: ¿Estás utilizando la URL de producción (no la URL de prueba) y está habilitado el flujo de trabajo?
- Verificar: ¿Es accesible n8n desde Internet? (Las instancias auto-hospedadas detrás de un firewall no recibirán web