1 / 14
← Inicio

🧠 Lógica Algorítmica en n8n

Tomando decisiones inteligentes en tus flujos

Los condicionales son como semáforos en tus flujos: deciden qué camino toman tus datos.

En n8n: "Si el email contiene 'urgente', envíalo a Slack. Si no, envíalo por email normal."

📧 Email llega
❓ ¿Es urgente?
✅ Slack
📬 Email

💡 Regla de Oro: Sin condicionales, todos los datos van por el mismo camino. Con condicionales, cada dato toma su ruta perfecta.

IF Node - El Condicional Literal

El nodo que decide: ¿Sí o No?

🔍 ¿Cómo funciona?
El nodo IF evalúa una condición y envía los datos por dos rutas:
📊 Datos
IF: ¿Condición?
✅ TRUE
❌ FALSE
📝 Comparaciones disponibles en n8n
Igual (==)
Mayor que (>)
Menor que (<)
Contiene
Existe
No existe
💼 Ejemplo práctico
Condición en n8n IF Node
Si: {{ $json.amount }} es Mayor que 100
Entonces: TRUE → Enviar a clientes VIP
Sino: FALSE → Enviar a clientes normales

Switch Node - Múltiples Rutas

Cuando tienes más de 2 opciones

IF Node: 2 rutas (TRUE/FALSE)
Switch Node: Múltiples rutas según el valor

📨 Ejemplo: Routing de mensajes
📧 Mensaje
Switch: Tipo?
📧 email
💬 sms
🔔 push

✅ Usa IF cuando:

  • Solo 2 opciones
  • Condición simple
  • True/False claro

✅ Usa Switch cuando:

  • 3+ opciones
  • Comparar por valor
  • Routing complejo

Expresiones que Deciden

True o False con código

💻 Expresiones en n8n
Puedes usar expresiones que devuelven true o false
Ejemplo 1: Comparación numérica
{{ $json.amount > 100 }}
→ Devuelve: true o false
Ejemplo 2: Contiene texto
{{ $json.email.includes('@gmail.com') }}
→ Devuelve: true o false
Ejemplo 3: Igualdad estricta
{{ $json.status === 'active' }}
→ Devuelve: true o false

💡 Pro Tip: Estas expresiones se pueden usar directamente en el nodo IF o combinarlas con && (AND) y || (OR)

🤖 IA como Tomador de Decisiones

La forma PRO de decidir

En lugar de escribir reglas complejas, puedes usar IA para tomar decisiones inteligentes.

📊
1. Datos
Información llega al flujo
🤖
2. IA
IA analiza y responde
3. IF
Lee true/false
4. Acción
Ejecuta según decisión

🎯 Ventajas:

• Decisiones más inteligentes que reglas fijas
• Se adapta a casos nuevos automáticamente
• Menos código, más potencia

Ejemplo 1: Detección de Spam con IA

Clasificación inteligente de emails

📧 Flujo completo
📧 Email llega
🤖 IA: "¿Es spam? Responde solo 'true' o 'false'"
IA responde: "true" o "false"
❓ IF: ¿Respuesta == "true"?
✅ TRUE → 📁 Mover a Spam
❌ FALSE → 📬 Enviar a Inbox
Prompt para IA (OpenAI/Claude)
Analiza este email y determina si es spam.
Responde SOLO con "true" o "false", nada más.

Email: {{ $json.email_content }}
Asunto: {{ $json.subject }}
Condición en IF Node
{{ $json.response.trim().toLowerCase() === 'true' }}

💡 Pro Tip: El .trim().toLowerCase() limpia la respuesta de la IA por si acaso agrega espacios o mayúsculas.

Ejemplo 2: Validación Inteligente

IA decide si un dato es válido

✅ Flujo de validación
📝 Datos llegan
🤖 IA: "¿Este dato es válido? Responde solo 'true' o 'false'"
IA responde
❓ IF: ¿Válido?
✅ TRUE → ⚡ Procesar
❌ FALSE → 🗑️ Rechazar
Prompt para IA
Valida este dato según las reglas de negocio.
Reglas:
- Email debe tener formato válido
- Nombre no puede estar vacío
- Edad debe ser mayor a 18

Dato: {{ $json }}

Responde SOLO "true" o "false".
🎯
Casos de uso reales:
• Validar emails antes de enviar
• Verificar datos de formularios
• Filtrar contenido inapropiado
• Detectar fraudes o anomalías

Mejores Prácticas: IA + IF

Hazlo como un PRO

✅ 1. Prompts claros y específicos
❌ MAL
¿Es esto bueno?
✅ BIEN
¿Este email es spam? Responde SOLO con "true" o "false", 
nada más. No agregues explicaciones.
✅ 2. Limpiar la respuesta
Expresión en IF Node
{{ $json.response.trim().toLowerCase() === 'true' }}
Esto maneja casos como: "True", " true ", "TRUE", etc.
✅ 3. Manejo de errores
Agregar ruta de error
IF: ¿IA respondió?
  TRUE → Continuar
  FALSE → Enviar a revisión manual

🎯 Regla de Oro:

La IA es poderosa, pero siempre valida su respuesta. Nunca confíes ciegamente en una decisión automática.

Estados de Datos en n8n

Un dato puede tener diferentes estados

Un estado es la condición actual de un dato. Por ejemplo, un cliente puede estar en diferentes estados según su comportamiento.

🆕 Nuevo
✅ Activo
💤 Inactivo
💡 Ejemplo de estados
Cliente:
Nuevo: Se registró pero no ha comprado
Activo: Compró en el último mes
Inactivo: No compra hace más de 3 meses

💡 En n8n: Los estados se manejan con condicionales. Según las condiciones, actualizas el estado del dato.

Implementando Estados con IF

Actualizar estado según condiciones

🔄 Flujo: Actualizar estado de cliente
👤 Datos del cliente
IF: ¿Primera compra?
✅ TRUE → Estado = "nuevo"
❌ FALSE → Siguiente IF
IF: ¿Compró en último mes?
✅ TRUE → Estado = "activo"
❌ FALSE → Estado = "inactivo"
💾 Actualizar en base de datos
Expresiones en n8n
IF 1: {{ $json.first_purchase === true }}
  → Estado: "nuevo"

IF 2: {{ $json.last_purchase_date > '2024-01-01' }}
  → Estado: "activo"
  
ELSE:
  → Estado: "inactivo"

Estados con Switch Node

Más limpio para múltiples estados

IF Anidados

IF: ¿Estado == "nuevo"?
  → Acción A
ELSE IF: ¿Estado == "activo"?
  → Acción B
ELSE:
  → Acción C

Funciona, pero puede ser confuso con muchos estados

Switch Node

Switch: {{ $json.status }}
  Case "nuevo" → Acción A
  Case "activo" → Acción B
  Case "inactivo" → Acción C
  Default → Acción D

Más limpio, más fácil de leer y mantener

💼 Ejemplo práctico
👤 Cliente
Switch: Estado
"nuevo" → Email bienvenida
"activo" → Descuento VIP
"inactivo" → Campaña reactivación

💡 Pro Tip: Usa Switch cuando tengas 3+ estados diferentes. Es más mantenible y fácil de entender.

💼 Caso Práctico 1

Sistema de Notificaciones Inteligente

📋 Requerimientos
• Si es urgente → Slack inmediato
• Si es importante → Email
• Si no → Guardar en log
📨 Notificación llega
IF: ¿Es urgente?
✅ TRUE → 💬 Slack inmediato
❌ FALSE → Siguiente IF
IF: ¿Es importante?
✅ TRUE → 📧 Enviar email
❌ FALSE → 📝 Guardar en log
Expresiones en n8n
IF 1: {{ $json.priority === 'urgent' }}
  → Enviar a Slack

IF 2: {{ $json.priority === 'important' }}
  → Enviar email
  
ELSE:
  → Guardar en log

💡 Resultado: Cada notificación toma la ruta correcta según su prioridad, sin intervención manual.

💼 Caso Práctico 2

Procesamiento Condicional de Órdenes

📋 Requerimientos
• Si monto > $1000 → Procesar con prioridad alta
• Si monto > $500 → Procesar con prioridad media
• Si no → Procesar normal
🛒 Orden llega
IF: ¿Monto > $1000?
✅ TRUE → ⚡ Prioridad Alta
❌ FALSE → Siguiente IF
IF: ¿Monto > $500?
✅ TRUE → 📊 Prioridad Media
❌ FALSE → 📝 Prioridad Normal
💾 Procesar orden
Expresiones en n8n
IF 1: {{ $json.amount > 1000 }}
  → Prioridad: "alta"

IF 2: {{ $json.amount > 500 }}
  → Prioridad: "media"
  
ELSE:
  → Prioridad: "normal"

🎯 Beneficio:

Las órdenes grandes se procesan primero, mejorando la experiencia de los clientes más valiosos.

🧠 Quiz Final

¡Demuestra que eres PRO en lógica!

Tienes un flujo que recibe emails y necesitas clasificarlos como spam o no spam usando IA. ¿Cómo estructurarías el flujo?
A) Email → IF directamente sin IA
B) Email → IA (prompt: "¿Es spam? true/false") → IF → Acción
C) Email → Switch con todas las palabras clave
D) Email → Guardar todos en spam
Un cliente puede estar en 3 estados: "nuevo", "activo", "inactivo". Necesitas enviar diferentes emails según el estado. ¿Qué nodo usarías?
A) IF anidados (IF dentro de IF)
B) Switch Node con 3 casos
C) Solo un IF con todas las condiciones
D) No usar condicionales
Tienes que validar si un email contiene '@gmail.com'. ¿Qué expresión usarías en n8n?
A) {{ $json.email == '@gmail.com' }}
B) {{ $json.email.includes('@gmail.com') }}
C) {{ $json.email > '@gmail.com' }}
D) {{ '@gmail.com' in $json.email }}
La IA responde "True" (con mayúscula) pero tu IF necesita comparar con "true" (minúscula). ¿Cómo limpiarías la respuesta?
A) Usar la respuesta tal cual
B) {{ $json.response.trim().toLowerCase() === 'true' }}
C) Cambiar el prompt para que siempre use minúsculas
D) No limpiar, usar dos IF separados
Tienes órdenes que deben procesarse según el monto: >$1000 (alta), >$500 (media), otras (normal). ¿Cómo implementarías esto?
A) Un solo IF con todas las condiciones en AND
B) IF anidados: primero >$1000, luego >$500, else normal
C) Switch con los montos exactos
D) Procesar todas igual