Lógica Condicional: Nodos IF y Switch
La lógica condicional permite que los workflows de n8n tomen decisiones dinámicas basadas en el contenido de los datos. Esta lección cubre el uso de los nodos IF y Switch para dirigir el flujo de ejecución, adaptando la automatización a diferentes escenarios y requerimientos.

Fundamentos de la Lógica Condicional en n8n
En un workflow, la capacidad de evaluar datos y ejecutar diferentes ramas de acción es fundamental. Sin lógica condicional, todos los items seguirían la misma ruta, lo que limita la adaptabilidad de la automatización. Los nodos IF y Switch son las herramientas principales para introducir esta inteligencia en n8n. Permiten inspeccionar el contenido de los items que los atraviesan y, basándose en reglas definidas, enviarlos por una u otra ruta.
La implementación de lógica condicional es crucial para:
- Filtrar datos: Procesar solo los items que cumplen ciertos criterios, descartando el resto.
- Rutas alternativas: Ejecutar diferentes acciones según el tipo o valor de un dato.
- Validación: Verificar si los datos recibidos son válidos antes de proceder con operaciones críticas.
- Optimización: Evitar la ejecución de nodos innecesarios para ciertos items, reduciendo el consumo de recursos y el tiempo de ejecución.
El Nodo IF: Decisiones Binarias
El nodo IF es la forma más sencilla de implementar lógica condicional. Evalúa una o más condiciones y, si se cumplen (TRUE), los items salen por su rama 'True'. Si no se cumplen (FALSE), los items salen por su rama 'False'. Es ideal para decisiones binarias (sí/no, cumple/no cumple).
Configuración del nodo IF:
- Condiciones: Se definen una o más reglas. Cada regla consta de una propiedad a evaluar (usando expresiones), un operador (ej.
Equals,Contains,GreaterThan) y un valor a comparar. - Operadores lógicos: Si se definen múltiples condiciones, se puede elegir cómo combinarlas:
AND(todas deben ser verdaderas) oOR(al menos una debe ser verdadera). - Propiedad a evaluar: Generalmente se usa una expresión para acceder a un valor específico dentro del JSON del item, como
{{ $json.status }}o{{ $json.amount }}. - Valor de comparación: Puede ser un valor estático, otra expresión o una variable.
Siempre prueba el nodo IF con datos de ejemplo en el modo de prueba del workflow. Esto asegura que las condiciones se evalúen correctamente y que los items se dirijan a la rama esperada antes de activar el workflow en producción.
Ejemplo de uso: Un workflow recibe datos de ventas. Si el valor de $json.totalAmount es mayor a 1000, el item se envía a un nodo que notifica al equipo de ventas de una venta grande. De lo contrario, sigue una ruta estándar.
{
"node": "IF",
"parameters": {
"conditions": [
{
"value1": "={{ $json.totalAmount }}",
"operator": "greaterThan",
"value2": "1000"
}
],
"combine": "AND"
}
}El Nodo Switch: Múltiples Caminos
Cuando se necesita manejar más de dos posibles resultados para una decisión, el nodo Switch es la opción adecuada. Evalúa una única expresión de entrada y dirige el item a una de varias ramas de salida, según el valor que coincida con los casos definidos. Es similar a una estructura switch-case en programación.
Configuración del nodo Switch:
- Valor a comparar: Se define una expresión (ej.
{{ $json.category }}) cuyo resultado será evaluado contra los diferentes casos. - Casos (Cases): Se añaden múltiples casos. Cada caso tiene un valor específico. Si el resultado de la expresión 'Valor a comparar' coincide con el valor de un caso, el item sale por la rama de ese caso.
- Caso por defecto (Default): Opcionalmente, se puede habilitar una rama 'Default'. Si el valor de entrada no coincide con ninguno de los casos definidos, el item saldrá por esta rama. Esto es útil para manejar escenarios no previstos o valores inesperados.
Ejemplo de uso: Un workflow procesa solicitudes de soporte. El campo $json.priority puede ser 'Alta', 'Media' o 'Baja'. El nodo Switch dirige cada solicitud a un equipo diferente según su prioridad. Si la prioridad es desconocida, va a la rama 'Default' para revisión manual.
{
"node": "Switch",
"parameters": {
"value": "={{ $json.priority }}",
"cases": [
{
"value": "Alta",
"case": "Alta"
},
{
"value": "Media",
"case": "Media"
},
{
"value": "Baja",
"case": "Baja"
}
],
"defaultCase": true
}
}IF vs. Switch: ¿Cuándo usar cuál?
| Característica | Nodo IF | Nodo Switch |
|---|---|---|
| Número de salidas | Dos (True/False) | Múltiples (por caso + Default) |
| Tipo de decisión | Binaria (verdadero/falso) | Multicriterio (coincidencia de valor) |
| Condiciones | Múltiples condiciones con AND/OR | Una única expresión de entrada |
| Complejidad | Ideal para lógica simple y combinaciones de condiciones | Ideal para clasificar items según un valor discreto |
| Ejemplo | ¿Es el monto > 1000 Y el estado = 'Pagado'? | ¿Es la categoría 'A', 'B' o 'C'? |
La elección entre IF y Switch depende de la complejidad de la decisión y el número de rutas posibles. Para una decisión simple de sí/no o para evaluar múltiples condiciones lógicas, el IF es más directo. Para categorizar items en varias clases basadas en un solo valor, el Switch es más limpio y escalable.
Aplicación Práctica: Diseño de un Flujo Condicional
Para aplicar estos conceptos, diseñará un workflow que procese notificaciones de un sistema externo. El objetivo es dirigir las notificaciones a diferentes destinos (ej. correo, Slack, base de datos) según su tipo y nivel de severidad.
- Configure un nodo 'Webhook' para recibir las notificaciones. Asuma que cada notificación tiene campos como
type(ej. 'alerta', 'informe') yseverity(ej. 'critica', 'media', 'baja'). - Después del Webhook, añada un nodo 'Switch'. Use la expresión
{{ $json.type }}como valor a comparar. - Cree dos casos en el Switch: 'alerta' y 'informe'.
- Conecte la rama 'alerta' del Switch a un nodo 'IF'. En este IF, evalúe la severidad:
{{ $json.severity }}Equals'critica'. - La rama 'True' de este IF podría enviar un correo urgente (nodo 'Email Send'). La rama 'False' podría enviar un mensaje a un canal de Slack (nodo 'Slack').
- Conecte la rama 'informe' del Switch a un nodo que almacene los datos en una base de datos (ej. 'Postgres' o 'Google Sheets').
- Añada una rama 'Default' al Switch para manejar tipos de notificación no previstos. Esta rama podría enviar un mensaje a un log de errores o a un correo de administración para revisión.
Este ejercicio le permitirá ver cómo los nodos IF y Switch se combinan para crear flujos de trabajo complejos y adaptables, dirigiendo los datos de manera inteligente a través de diferentes caminos de procesamiento.
No hay comentarios por ahora.