Módulo 4: Merge Avanzado y Fan-Out / Fan-In

Fan-Out: Dividir en Ramas Paralelas

Descripción de la cápsula

Fan-out es el patrón de abrir el workflow en múltiples ramas que ejecutan en paralelo. Visualmente: un input, varios outputs simultáneos. Cada rama hace su trabajo independientemente, sin esperar a las otras. Es la base para todo lo que sigue en el módulo: sin fan-out no hay paralelismo, sin paralelismo no hay performance gains de procesar múltiples fuentes/operaciones.

En esta cápsula vas a aprender cómo se implementa fan-out en n8n (es más simple de lo que parece), cuándo aplicarlo, los 3 casos típicos (multi-API, procesamiento de categorías independientes, notificaciones múltiples), y las consideraciones de paralelismo real vs aparente (n8n cloud vs self-hosted).


Lo que vas a aprender

  • Implementar fan-out conectando 1 nodo a N nodos siguientes
  • Aplicar a 3 casos típicos
  • Entender el paralelismo real de n8n
  • Decidir cuándo fan-out vale la pena

Cómo se implementa

Simplísimo: desde la salida de un nodo, conectas a múltiples nodos siguientes.

                ┌─→ [Nodo A]
   [Input] ────►┤
                ├─→ [Nodo B]
                │
                └─→ [Nodo C]

En el canvas: arrastra del output del nodo 1 a 3 nodos diferentes. n8n los ejecuta en paralelo.


Paralelismo real en n8n

Importante: en muchas configuraciones de n8n, las ramas se ejecutan secuencialmente bajo el capó aunque visualmente parezcan paralelas. n8n procesa una rama, luego otra, luego otra.

Cuándo es realmente paralelo

  • n8n Cloud Pro/Enterprise: mejor concurrencia
  • Self-hosted con configuración avanzada: queues + workers separados
  • Cuando llamas APIs externas: las APIs procesan en paralelo aunque n8n inicia secuencialmente, así que el tiempo total se acerca al paralelo

Cuándo es secuencial

  • n8n Cloud Starter: ramas se procesan en orden
  • Self-hosted single-worker: mismo
  • Operaciones intensivas locales: Code node pesado, etc.

Implicación

  • Para APIs externas: fan-out da speedup real (las APIs son concurrentes)
  • Para lógica local: fan-out estructura el código pero no acelera mucho

Caso 1: Multi-API parallel

Caso: reporte que consulta 3 APIs.

[Schedule diario]
   │
   ├─→ [HTTP: Stripe pagos del día]
   ├─→ [HTTP: Shopify pedidos del día]
   └─→ [HTTP: HubSpot leads del día]
        │
        ▼
[Merge: Wait — espera a las 3]
        │
[Reporte combinado]
        │
[Slack]

Beneficio: las 3 APIs responden en paralelo. Si cada una tarda 3s, total ~3s (no 9s).


Caso 2: Procesamiento independiente

Caso: un webhook trae datos. Quieres hacer 3 cosas con esos datos, ninguna depende de otra.

[Webhook]
   │
   ├─→ [Slack: notificar equipo]
   ├─→ [Sheet: guardar log]
   └─→ [CRM: crear contacto]

Las 3 ramas no comparten estado. Paralelizar es seguro.


Caso 3: Notificaciones múltiples canales

Caso: alerta importante debe ir a 3 canales.

[Trigger]
   │
   ├─→ [Slack: canal-alerts]
   ├─→ [Email: admin@empresa.com]
   └─→ [SMS via Twilio: oncall]

Cuándo fan-out NO vale la pena

1 rama es trivial

[Trigger]
   │
   ├─→ [Set: agregar campo X] ← rama trivial
   └─→ [API call lenta]

Mejor secuencial: Set → API.

Las ramas dependen entre sí

[Trigger]
   │
   ├─→ [Hacer X] ← depende del resultado de Y
   └─→ [Hacer Y]

Si X depende de Y, no son paralelos — son secuenciales mal estructurados.

Tu plan no soporta concurrencia

Si n8n cloud Starter, paralelismo visual no acelera. Estructurar como fan-out solo aporta legibilidad, no performance.


Diseño: fan-out con sincronización

Si las ramas paralelas deben converger (fan-in) al final, usar Merge en modo Wait:

[Trigger]
   ├─→ [rama A]──┐
   ├─→ [rama B]──┼─→ [Merge: Wait] → [acción final con resultados de las 3]
   └─→ [rama C]──┘

Wait mode espera a que las 3 lleguen antes de continuar. Cubierto en cápsula 05.


Trampas comunes

Trampa 1: Asumir paralelismo y rate limits compartidos

Qué pasa: 3 ramas paralelas llaman al mismo API. Cada rama 100 requests. Total: 300 requests "simultáneos" → rate limit.

Cómo evitar: Si las ramas comparten API, el rate limit es global. Considera cómo dividir respetando el límite total.


Trampa 2: Rama que escribe al mismo lugar — race condition

Qué pasa: 3 ramas paralelas que appenden al mismo Sheet. n8n hace requests rápidos → algunos se pierden o se duplican por race.

Cómo evitar: Centralizar la escritura: convergir con Merge antes de escribir.


Trampa 3: Fan-out sin fan-in cuando lo necesitas

Qué pasa: Fan-out de 3 ramas que terminan en destinos distintos. Workflow continúa pero "termina antes" — los nodos del flow principal no esperan a las 3 ramas.

Cómo evitar: Si necesitas que algo pase después de todas, usar Merge Wait.


Resumen y siguiente paso

  • Fan-out: conectar 1 nodo a N nodos siguientes (paralelo)
  • Implementación: drag from output a múltiples nodos
  • Paralelismo real depende de n8n versión y configuración
  • 3 casos: multi-API, procesamiento independiente, notificaciones múltiples
  • No usar cuando ramas son triviales, dependen, o plan no soporta
  • 3 trampas: rate limits compartidos, race conditions, sin fan-in necesario

Lo que sigue: Merge profundizado — los 4 modos con casos y ejemplos detallados.


Creado: Mayo 11, 2026 Versión: 1.0