El nodo: la pieza fundamental
Un nodo es un bloque que hace una sola tarea. Puede recibir información del exterior, transformar datos que ya tiene, o pasarle datos al siguiente paso. Nada más. La clave es esa unidad mínima de responsabilidad: cada nodo hace una cosa y la hace bien.
Un workflow es, en el fondo, una cadena de nodos conectados. Cada nodo toma la salida del anterior, hace su tarea, y le pasa el resultado al siguiente.
Si un nodo "hace dos cosas", dividilo en dos nodos. Tu workflow va a ser más fácil de depurar, de entender y de modificar. Un nodo, una responsabilidad.
El trigger: quién arranca todo
El trigger (nodo disparador) es el primer nodo de cualquier workflow. Su función es doble: arrancar la ejecución y aportar los datos iniciales con los que va a trabajar el resto de la cadena. Todo workflow necesita al menos un trigger; sin él, no hay punto de entrada.
Manual Trigger
Lo activás vos, con un clic desde el editor. Es el que más vas a usar mientras desarrollás y probás. No sirve para producción.
Schedule Trigger
Se dispara según un horario: cada hora, todos los lunes a las 8 AM, el primer día del mes. Usás sintaxis cron o la interfaz visual.
Webhook
Expone una URL HTTP. Cuando un sistema externo hace un POST o GET a esa URL, el workflow arranca. Es el más poderoso y el más usado en integraciones.
Triggers de apps
Integrados en los nodos de cada servicio. Ejemplos: Gmail "cuando llega un mail nuevo", Notion "cuando se crea una página", Slack "cuando alguien manda un mensaje".
Nodos de acción y conexiones
Después del trigger vienen los nodos de acción: los que hacen el trabajo concreto. Pueden consultar una API, transformar un texto, guardar en una base de datos, mandar un mail. Las conexiones son las líneas que unen los nodos y definen el orden: definen quién le pasa datos a quién.
Un workflow sencillo, pero completo, se ve así:
El concepto que más cuesta: los ítems
Este es el concepto que más le cuesta a quien empieza con n8n, y el que más vale la pena entender bien, porque desbloquea todo lo demás.
Los datos viajan entre nodos como una lista de ítems. Cada ítem es un objeto JSON. Un nodo se ejecuta una vez por cada ítem que recibe. Si recibe 10 ítems, corre 10 veces.
La estructura técnica es un array de objetos. Cada objeto tiene una clave json con los campos del ítem, y opcionalmente una clave binary para archivos adjuntos. Mirá cómo se ve eso en la práctica:
// Salida de un nodo que devuelve 2 ítems
// (por ejemplo, 2 filas de una planilla)
[
{
"json": {
"nombre": "Ana García",
"email": "ana@ejemplo.com",
"plan": "pro",
"monto": 4900
}
},
{
"json": {
"nombre": "Bruno López",
"email": "bruno@ejemplo.com",
"plan": "free",
"monto": 0
}
}
]
El nodo siguiente —digamos, el que manda el mail— corre dos veces: una para Ana y otra para Bruno. No tenés que escribir ningún loop. n8n lo hace solo. Entender esto explica por qué los nodos de n8n no tienen "para cada uno, hacé…": ya está incorporado en cómo funciona el sistema.
Cuando un nodo recibe una lista de 50 ítems y vos esperabas que produjera un solo resultado (por ejemplo, un mail con un resumen), necesitás un nodo de agregación antes. Si no, vas a enviar 50 mails. Cantidad de ítems de entrada ≠ cantidad de ítems de salida deseados.
Expresiones: valores dinámicos con doble llave
Las expresiones son la forma de referenciar datos de ítems anteriores dentro de un nodo. En cualquier campo de configuración podés escribir texto estático o activar el modo expresión y usar la sintaxis de doble llave {{ }}. Por dentro, las expresiones son JavaScript puro.
// Campo "email" del ítem que está procesando el nodo ahora
{{ $json.email }}
// Campo anidado: body.nombre dentro del JSON
{{ $json.body.nombre }}
// Dato de un nodo específico (por nombre)
{{ $node["Webhook"].json.campo }}
// Expresión con lógica JavaScript
{{ $json.monto > 1000 ? "cliente premium" : "cliente estándar" }}
// Concatenar texto y datos
{{ "Hola, " + $json.nombre + ". Tu plan es: " + $json.plan }}
Las expresiones se evalúan en tiempo de ejecución, para cada ítem. Eso significa que si el nodo recorre 50 ítems, la expresión {{ $json.email }} devuelve un email diferente en cada una de las 50 ejecuciones.
Otras piezas del canvas
Datos fijados
"Congelás" la salida de un nodo mientras desarrollás. Así probás con datos predecibles sin volver a llamar al servicio externo cada vez. En producción, n8n ignora los datos fijados y pide datos frescos.
Sticky Notes
Post-its que pegás en el canvas para documentar tu workflow. Podés explicar por qué tomaste ciertas decisiones, aclarar lógica compleja o dejar instrucciones para quien lo mantenga después.
Sub-nodos (cluster nodes)
Nodos que se enganchan a un nodo raíz para darle capacidades extra. El ejemplo más claro es el nodo AI Agent, que acepta sub-nodos de modelo, memoria y herramientas. Lo vemos en detalle en la Sección 08.
Todo junto: un workflow completo
Veamos cómo se combinan estas piezas en un workflow real. La cadena de datos empieza en el trigger, pasa por cada nodo con la estructura de ítems y llega al final transformada según lo que definiste.
Cada vez que el webhook recibe un POST, n8n crea un ítem con los datos del cuerpo de la solicitud. Edit Fields lo transforma, IF evalúa la condición por ítem, y los nodos finales consumen los campos via expresiones ({{ $json.monto }}, {{ $json.cliente }}).
Ya sabés de qué está hecho un workflow y cómo fluyen los datos. Ahora veamos los nodos concretos que vas a usar el 90% del tiempo y cómo armar lógica con ellos: condicionales, loops, transformaciones y todo lo que necesitás para construir automatizaciones reales.