Introducción
La mayoría de los flujos de trabajo del mundo real no procesan cada elemento de la misma manera. Un cliente que acaba de registrarse necesita un correo de bienvenida. Un cliente que acaba de cancelar necesita un flujo de abandono. Un pedido marcado como "urgente" se enruta de forma distinta a uno estándar. Aquí es donde entra en juego la lógica condicional.
n8n te ofrece dos nodos para esto: el nodo IF para decisiones binarias (verdadero/falso, sí/no), y el nodo Switch para enrutamiento multirruta basado en un valor que puede coincidir con varios casos. Saber cuándo usar cada uno — y cómo conectarlos correctamente — marca la diferencia entre un flujo de trabajo limpio y un lío enredado.
El nodo IF: divisiones binarias
El nodo IF evalúa una sola condición y envía cada elemento por una de dos rutas de salida: verdadero o falso. Conectas diferentes nodos downstream a cada salida, y n8n enruta los elementos automáticamente según el resultado.
Para configurarlo, eliges un valor (normalmente un campo del elemento entrante), seleccionas una operación y estableces un valor de comparación. Las operaciones disponibles incluyen: igual, no igual, contiene, empieza por, termina en, está vacío, mayor que, menor que, y algunas otras según el tipo de dato.
Por ejemplo, imagina que estás procesando datos de pedidos y quieres marcar los pedidos de alto valor. Tus elementos se ven así:
En el nodo IF configurarías: Valor 1 = {{ $json.total }}, Operación = Mayor que, Valor 2 = 200. Los elementos donde total supere 200 van a la rama verdadero; el resto va a la rama falso. Luego conectas un nodo de notificación de Slack a la salida verdadero y un nodo simple de "no operación" o de registro a la salida falso.
Algo a tener en cuenta: si dejas la salida falso sin conectar, n8n descartará silenciosamente esos elementos. A veces es intencional, pero asegúrate de que sea una decisión deliberada.
El nodo Switch: enrutamiento multirruta
Cuando hay más de dos resultados posibles, encadenar varios nodos IF se vuelve un lío rápidamente. El nodo Switch resuelve esto permitiéndote definir múltiples reglas, cada una con su propia salida. Cada elemento se evalúa contra las reglas en orden y sale por la primera salida que coincida.
Un caso de uso típico es enrutar tickets de soporte por prioridad:
En el nodo Switch defines tres reglas:
Regla 1 — Valor: {{ $json.priority }}, Operación: Igual, Comparación: "high" → Salida 0 Regla 2 — Valor: {{ $json.priority }}, Operación: Igual, Comparación: "medium" → Salida 1 Regla 3 — Valor: {{ $json.priority }}, Operación: Igual, Comparación: "low" → Salida 2
Luego conectas la Salida 0 a un nodo PagerDuty, la Salida 1 a un nodo Jira, y la Salida 2 a un registrador en hoja de cálculo. Cada ticket llega automáticamente al lugar correcto sin clasificación manual.
El nodo Switch también tiene una opción de Salida de respaldo (Fallback Output). Actívala para capturar cualquier elemento que no coincida con ninguna regla — el equivalente a la cláusula default de una sentencia switch. Configúrala siempre cuando los valores entrantes puedan ser distintos a los que has listado explícitamente.
Expresiones en las condiciones
Ambos nodos admiten expresiones de n8n, lo que significa que tus condiciones pueden ser dinámicas en lugar de estar hardcodeadas. Haces referencia a los datos entrantes con {{ $json.fieldName }} y puedes aplicar JavaScript dentro de las dobles llaves.
Por ejemplo, para comprobar si un pedido se realizó hace más de 7 días:
Establece esto como Valor 1, usa la operación "Is True" y deja Valor 2 vacío. Este patrón te permite construir enrutamiento basado en tiempo, comprobaciones de manipulación de cadenas o cualquier lógica booleana que una simple comparación de campos no pueda manejar.
También puedes combinar campos. Para enrutar solo los elementos donde el estado es "active" Y el plan es "pro", encadena dos nodos IF — uno comprobando el estado, el otro (en la rama verdadero) comprobando el plan. El nodo Switch no admite de forma nativa lógica AND/OR dentro de una sola regla, así que el encadenamiento es el enfoque correcto ahí.
Errores comunes
Los problemas de tipo son el error más frecuente. Si {{ $json.total }} llega como la cadena "340" en lugar del número 340, una comparación Mayor que fallará de forma inesperada. Usa el nodo Set aguas arriba para forzar tipos cuando no estés seguro de lo que va a llegar.
Otro error común es olvidar que Switch evalúa las reglas de arriba hacia abajo y se detiene en la primera coincidencia. Si pones una regla amplia antes que una específica, la regla específica nunca se disparará. Ordena tus reglas de la más específica a la menos específica.
Por último, ten cuidado con los elementos que no llevan ningún valor en el campo que estás comprobando. Un campo undefined o null no será igual a "high" — caerá en la salida de respaldo. Es el comportamiento correcto, pero solo si tienes un respaldo configurado.
Resumen
Usa el nodo IF cuando necesites una división limpio verdadero/falso — es rápido de configurar y fácil de leer. Usa el nodo Switch cuando tengas tres o más rutas distintas basadas en el valor de un campo. En ambos casos, ten siempre en cuenta los elementos que no coinciden con las condiciones esperadas, ya sea conectando la salida falso/de respaldo o tomando una decisión deliberada de descartarlos. Las expresiones dan a ambos nodos un poder real cuando las simples comparaciones de valor no son suficientes.
Punto de control de la lección
Repasa lo aprendido y recibe comentarios sobre tu trabajo.