Webhooks salientes: Notificaciones y disparadores
Los webhooks salientes en n8n permiten que un workflow notifique o active acciones en sistemas externos. Esta lección cubre cómo configurar nodos de webhook para enviar datos de forma programática, integrando n8n con otras plataformas y servicios.

Propósito de los webhooks salientes
Un webhook saliente es una solicitud HTTP POST, PUT o GET que n8n envía a una URL específica cuando un nodo se ejecuta. A diferencia de un webhook entrante que espera una solicitud, el saliente inicia la comunicación. Su función principal es extender la automatización de n8n más allá de sus propios workflows, permitiendo la interacción con APIs de terceros, sistemas de mensajería, bases de datos o cualquier servicio que exponga un endpoint HTTP.
Los usos operativos incluyen:
- Notificaciones: Enviar alertas a canales de Slack, Microsoft Teams, correos electrónicos o SMS al completar una tarea, detectar un error o alcanzar un umbral.
- Disparadores de acciones: Iniciar procesos en otros sistemas, como actualizar un CRM, crear una tarea en un gestor de proyectos, o activar una función serverless.
- Sincronización de datos: Replicar información entre sistemas cuando un evento ocurre en n8n.
Configuración del nodo HTTP Request
El nodo principal para enviar webhooks salientes es el nodo HTTP Request. Este nodo es versátil y permite configurar casi cualquier tipo de solicitud HTTP. Los parámetros clave a configurar son:
- Method: Define el tipo de solicitud HTTP (POST, GET, PUT, DELETE, etc.). La elección depende de la acción esperada por el endpoint receptor. Para enviar datos nuevos o disparar acciones, POST es lo más común.
- URL: La dirección completa del endpoint al que se enviará la solicitud. Esta URL es proporcionada por el sistema externo que se desea integrar.
- Headers: Encabezados HTTP. Aquí se configuran elementos como el tipo de contenido (Content-Type: application/json) y, crucialmente, los tokens de autenticación (Authorization: Bearer
o API keys). - Body: El cuerpo de la solicitud, que contiene los datos a enviar. Para POST y PUT, este suele ser un objeto JSON que n8n puede construir dinámicamente usando expresiones de los datos de nodos anteriores (por ejemplo,
{{ JSON.stringify($json) }}para enviar el payload completo del nodo anterior). - Query Parameters: Parámetros que se añaden a la URL (por ejemplo,
?param1=valor1). Útiles para filtros o identificadores en solicitudes GET.
Siempre consulta la documentación de la API del servicio externo para entender el método HTTP, la estructura de la URL, los headers requeridos (especialmente para autenticación) y el formato del body esperado. Un error en cualquiera de estos elementos resultará en una falla de la integración.
Autenticación en webhooks salientes
La seguridad es crítica al interactuar con sistemas externos. El nodo HTTP Request soporta varias formas de autenticación:
- API Key: Comúnmente enviada en un header (por ejemplo,
X-API-KeyoAuthorization: Bearer) o como un parámetro de consulta. n8n permite definir credenciales de tipo API Key que se pueden reutilizar en múltiples nodos. - OAuth2: Para servicios que requieren un flujo de autorización más robusto. n8n tiene soporte nativo para OAuth2, manejando la obtención y refresco de tokens automáticamente una vez configuradas las credenciales. Esto es ideal para servicios como Google, Salesforce o Microsoft.
- Basic Auth: Autenticación simple con usuario y contraseña, enviada en el header
Authorization. n8n también soporta credenciales de tipo Basic Auth. - No Auth: Para endpoints públicos que no requieren autenticación, aunque esto es menos común en integraciones de backend.
La mejor práctica es utilizar las Credenciales de n8n para almacenar y gestionar los datos de autenticación de forma segura, evitando hardcodear secretos en los nodos del workflow. Esto también facilita la rotación de credenciales y la aplicación de políticas de seguridad.
Manejo de respuestas y errores
Después de enviar un webhook saliente, el nodo HTTP Request recibe una respuesta del sistema externo. Esta respuesta es crucial para verificar el éxito de la operación o para diagnosticar problemas. Las respuestas HTTP incluyen:
- Códigos de estado HTTP:
2xxindican éxito (ej. 200 OK, 201 Created),4xxindican errores del cliente (ej. 400 Bad Request, 401 Unauthorized, 404 Not Found) y5xxindican errores del servidor (ej. 500 Internal Server Error). - Cuerpo de la respuesta: A menudo contiene un objeto JSON con detalles adicionales sobre el resultado de la operación, mensajes de error específicos o los datos creados/actualizados.
Es fundamental configurar el manejo de errores en el nodo HTTP Request. n8n permite definir qué hacer si el webhook falla (por ejemplo, reintentar, enviar una notificación de error a otro canal, o marcar el workflow como fallido). El uso de un Error Workflow (cubierto en una lección anterior) es la forma más robusta de gestionar fallas en webhooks salientes, permitiendo lógica de recuperación o notificación centralizada.
Ejemplo de webhook saliente: Notificación a Slack
Consideremos un workflow que procesa nuevas órdenes de compra. Al finalizar el procesamiento de una orden, queremos enviar una notificación a un canal de Slack para que el equipo de logística sea alertado.
- Obtener Webhook URL de Slack: En Slack, se configura una aplicación de Webhook Entrante (Incoming Webhook) para obtener una URL única que recibirá las notificaciones.
- Nodo HTTP Request: Se añade un nodo HTTP Request al final del workflow de procesamiento de órdenes.
- Configuración del nodo:
- {'t': 'code', 'lang': 'json', 'x': '{\n "method": "POST",\n "url": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",\n "headers": {\n "Content-Type": "application/json"\n },\n "body": {\n "text": "Nueva orden procesada: *{{ $json.orderId }}* - Cliente: {{ $json.customerName }}"\n }\n}'}
- Manejo de errores: Si la notificación a Slack falla, se puede configurar un nodo de correo electrónico para alertar al administrador del sistema, o un reintento automático si es un error transitorio.
Aplicación práctica: Integración post-procesamiento
El lunes, identifica un proceso interno en tu área que actualmente termina en un "y ahora qué". Por ejemplo, un workflow que genera un reporte, pero el reporte no se distribuye automáticamente. O un proceso de aprobación que termina, pero no notifica al siguiente equipo.
Diseña un nodo HTTP Request para añadir un webhook saliente al final de ese workflow. Podría ser:
- Enviar el reporte generado a un canal de Teams o a un correo electrónico específico.
- Actualizar el estado de una tarea en Jira o Asana una vez completada.
- Registrar un evento en un sistema de monitoreo o log centralizado.
- Disparar una función en un servicio serverless para un procesamiento adicional.
Asegúrate de configurar la autenticación correctamente y de probar el webhook con datos de ejemplo para verificar que el sistema externo recibe la información esperada y responde adecuadamente.
No hay comentarios por ahora.