Ir al contenido

Error Trigger

El Error Trigger es un trigger especial que activa un workflow cuando uno o varios workflows sufren un error fatal durante la ejecución. Funciona como mecanismo global de gestion de errores, similar al Error Trigger de n8n.

Coloca este nodo en un workflow dedicado al manejo de errores. Cuando cualquier workflow monitoreado falla, Floogos invoca automáticamente ese workflow handler con el contexto completo del fallo: mensaje de error, stack trace, el nodo que fallo y el último payload de datos en circulación antes del crash.


  1. Un workflow se ejecuta y falla (un nodo lanza una excepción o se cuelga)
  2. El motor de Floogos detecta el fallo y busca todos los workflows Error Trigger activos registrados para ese cliente
  3. Filtra por watched_workflow_ids — si esta vacío, el handler se dispara para cualquier workflow que falle
  4. El workflow handler se invoca de forma asincrona con el contexto del error como datos de entrada
  5. Tu lógica de manejo de errores se ejecuta: enviar alerta, registrar en base de datos, reintentar via Sub-Workflow, etc.

ParámetroTipoRequeridoDescripción
watched_workflow_idsworkflow_multi_selectorNoWorkflows a vigilar. Deja vacío para capturar errores de todos los workflows del cliente.

Un único workflow handler puede vigilar varios workflows especificos, o actuar como catch-all dejando el campo vacío.


Cuando se dispara, el nodo pasa el siguiente payload al siguiente nodo:

{
"error_message": "Cannot read properties of undefined (reading 'price')",
"error_type": "module_error",
"error_stack": "TypeError: Cannot read...\n at Object.<anonymous> (/modules/http/index.js:42:18)",
"failed_workflow_id": 87,
"failed_workflow_name": "Procesar Pedidos",
"failed_node": "HTTP_Request",
"workflow_instance_id": "exec_1714823901234",
"is_production": true,
"is_dev": false,
"timestamp": "2026-04-22T10:34:01.234Z",
"last_data": {
"order_id": "ORD-4821",
"customer_email": "usuario@ejemplo.com",
"total": 129.99
},
"execution_logs": [
{ "node": "Webhook", "status": "ok", "duration_ms": 3 },
{ "node": "HTTP_Request", "status": "error", "error": "Cannot read..." }
]
}
CampoTipoDescripción
error_messagestringMensaje de error legible
error_typestringmodule_error (excepción en nodo) o code_error (error en script)
error_stackstringStack trace completo (null si no disponible)
failed_workflow_idnumberID del workflow que fallo
failed_workflow_namestringNombre visible del workflow fallido
failed_nodestringEtiqueta del nodo que causo el error
workflow_instance_idstringID único de ejecución para correlación con trazas
is_productionbooleanSi el workflow corria en modo producción
is_devbooleanSi era una ejecución de prueba/dev
timestampstringTimestamp ISO 8601 del fallo
last_dataobjectPayload de datos en el momento del fallo
execution_logsarrayResumen de ejecución por nodo hasta el punto del fallo

Ejemplo 1 — Alerta en Slack cuando falla cualquier workflow

Sección titulada «Ejemplo 1 — Alerta en Slack cuando falla cualquier workflow»

Un handler catch-all que envia un mensaje de Slack cada vez que cualquier workflow falla.

Configuración del Error Trigger:

{
"label": "Error Trigger",
"watched_workflow_ids": []
}

Nodo Slack (usando variables dinámicas):

❌ Workflow fallido: {{@ErrorTrigger.failed_workflow_name}}
Nodo: {{@ErrorTrigger.failed_node}}
Error: {{@ErrorTrigger.error_message}}
Hora: {{@ErrorTrigger.timestamp}}

Flujo completo:

ErrorTrigger (todos los workflows)
→ Slack (publicar en canal #alertas)
→ End

Captura fallos en un workflow critico especifico y envia un email al equipo con el contexto completo.

Configuración del Error Trigger:

{
"label": "Error Trigger",
"watched_workflow_ids": [42]
}

Nodo SendMail:

Para: ops@empresa.com
Asunto: [ERROR] {{@ErrorTrigger.failed_workflow_name}} ha fallado
Cuerpo:
Nodo que fallo: {{@ErrorTrigger.failed_node}}
Error: {{@ErrorTrigger.error_message}}
Ultimo payload: {{@ErrorTrigger.last_data}}
Instancia: {{@ErrorTrigger.workflow_instance_id}}

Flujo completo:

ErrorTrigger (workflow ID 42)
→ SendMail (notificar al equipo ops)
→ End

Ejemplo 3 — Registrar en DataStore y reintentar via Sub-Workflow

Sección titulada «Ejemplo 3 — Registrar en DataStore y reintentar via Sub-Workflow»

Almacena cada error en una tabla DataStore e intenta volver a ejecutar el workflow fallido.

ErrorTrigger (todos los workflows)
→ DataStore (insertar en tabla error_log)
→ Decision (is_production == true?)
→ true: Sub-Workflow (re-disparar workflow fallido con last_data)
→ false: End

Configuración del nodo DataStore:

{
"action": "insert",
"table": "error_log",
"data": {
"workflow_id": "{{@ErrorTrigger.failed_workflow_id}}",
"workflow_name": "{{@ErrorTrigger.failed_workflow_name}}",
"failed_node": "{{@ErrorTrigger.failed_node}}",
"error_message": "{{@ErrorTrigger.error_message}}",
"timestamp": "{{@ErrorTrigger.timestamp}}"
}
}

Ejemplo 4 — Vigilar varios workflows con alerta por Telegram

Sección titulada «Ejemplo 4 — Vigilar varios workflows con alerta por Telegram»

Vigila dos workflows de procesamiento de pedidos y envia un aviso por Telegram al ingeniero de guardia.

Configuración del Error Trigger:

{
"label": "Error Trigger",
"watched_workflow_ids": [12, 35]
}
ErrorTrigger (workflows 12 y 35)
→ Telegram (enviar a @bot_guardia)
→ End

Mensaje de Telegram:

🚨 *Error en {{@ErrorTrigger.failed_workflow_name}}*
Nodo: `{{@ErrorTrigger.failed_node}}`
Mensaje: {{@ErrorTrigger.error_message}}
Pedido en vuelo: {{@ErrorTrigger.last_data.order_id}}

Ejemplo 5 — Pipeline completo de gestión de errores

Sección titulada «Ejemplo 5 — Pipeline completo de gestión de errores»

Flujo de respuesta ante errores en producción con alerta, registro y reintento condicional.

ErrorTrigger (todos los workflows)
→ SetVariable (guardar contexto del error)
→ DataStore (insertar en error_log)
→ Decision (error_type == "module_error" Y is_production == true?)
→ true:
→ SendMail (alertar al equipo tecnico)
→ Slack (notificar a #incidencias)
→ Decision (last_data tiene order_id?)
→ true: Sub-Workflow (reintentar procesamiento del pedido)
→ false: End
→ false: End

  • Un catch-all + handlers especificos: crea un handler genérico (sin watched_workflow_ids) para alertas, y handlers separados para workflows que necesiten lógica de reintento o procesamiento especial.
  • Usa last_data para contexto: el payload en el momento del fallo suele contener suficiente información (ID de pedido, email del cliente, etc.) para tomar medidas correctivas sin volver a consultar sistemas externos.
  • Usa workflow_instance_id para correlación: enlaza los registros de error con la traza completa en la vista Trazas de Floogos para depurar la causa raiz.
  • Evita bucles infinitos: no vigiles el propio workflow handler. Floogos previene bucles directos, pero es buena práctica mantener los handlers simples y robustos.
  • Prueba en modo dev: usa el tester de workflows para simular un error y verificar que el handler se dispara correctamente antes de ir a producción.

  • El Error Trigger se dispara de forma asincrona — no afecta al tiempo de respuesta del caller del workflow fallido.
  • Si varios workflows Error Trigger vigilan el mismo workflow origen, todos se disparan simultaneamente.
  • El workflow handler se ejecuta como un workflow de producción (sin flag dev especial a menos que el fallo original fuera en modo dev).
  • Solo los errores fatales (excepciones no controladas) disparan este nodo. Los errores manejados (capturados dentro de nodos Script, por ejemplo) no activan el Error Trigger.

  • Webhook — trigger HTTP genérico
  • Sub-Workflow — llamar a otro workflow para reintentar la operación fallida
  • DataStore — persistir registros de errores
  • SendMail — alertas por correo
  • Slack — alertas en Slack