Datos entre nodos: expresiones y bifurcaciones
La magia de n8n está en hacer correr los datos: el nombre de un formulario acaba en un correo y el importe de un correo, en una condición. Dominamos las expresiones {{ }}, el mapeo de campos arrastrando y el nodo IF para bifurcar.
Los nodos son el esqueleto del flujo. Los datos que corren entre ellos son la sangre. Toca aprender a dirigirlos.
Cada nodo le pasa datos al siguiente
Haz clic en un nodo que ya se haya ejecutado y verás su salida: campos y valores (nombre, correo, importe…). El nodo siguiente puede usar cualquiera de ellos.
Expresiones entre {{ }}
Cualquier campo de texto de un nodo admite algo más que texto plano: admite sustituciones.
¡Nuevo lead de {{ $json.name }}!
Teléfono: {{ $json.phone }}, importe: {{ $json.amount }} €
No hace falta que te aprendas la sintaxis: abre el panel de datos de la izquierda y arrastra el campo que quieras al texto; n8n escribe la expresión por ti. Arrastrar campos es la destreza número uno de esta lección.
Bifurcaciones: el nodo IF
El nodo IF parte el flujo en dos ramas según una condición:
[Formulario de leads] → [IF: ¿amount > 1000?] true → [Telegram al comercial: «¡Lead gordo!»] false → [Escribirlo en la hoja y ya]
Las condiciones se montan con un formulario: campo, operador (mayor que / igual a / contiene) y valor. Varias condiciones se combinan con Y/O.
La minipráctica de esta lección
Coge el resumen matutino de ayer y añádele esto: IF «temperatura por debajo de 5°» → al mensaje se le pega «¡Coge chaqueta! 🧥». Datos del nodo HTTP → una condición → dos versiones del texto. Esa es la plantilla que hay detrás de todos los flujos que montarás a partir de ahora.
Qué significan $json, $node y el punto
Lee {{ $json.name }} así: $json son los datos que han llegado a este nodo; el punto significa «entra dentro»; name es el campo. Si los datos están anidados, hay más puntos: en la respuesta del tiempo la temperatura está en {{ $json.current.temperature_2m }}. Y cuando quieres un campo de un nodo anterior y no del inmediatamente previo, tienes $node:
Del nodo de al lado: {{ $json.amount }}
De un campo anidado: {{ $json.current.temperature_2m }}
De un nodo por su nombre: {{ $node["Form"].json.email }}
Insisto: esto casi nunca lo escribes, lo arrastras con el ratón y n8n rellena la ruta con sus puntos. Pero saber qué significa el punto sale a cuenta: el día que una expresión te devuelva undefined, verás al instante que te has saltado un nivel de anidación.
IF frente a Switch
El nodo IF te da exactamente dos ramas: true y false. Cuando necesitas más de dos (lead / queja / pregunta / spam), echas mano de Switch: misma idea, varias salidas. La regla es simple: dos resultados, IF; muchos resultados, Switch. Switch lo veremos a fondo en la lección de clasificar el buzón; por ahora quédate con que las bifurcaciones escalan.
Mitos sobre los datos
- «Tengo que aprenderme la sintaxis de las expresiones». No. El 95% del tiempo estás arrastrando campos con el ratón. La sintaxis solo importa para leer y retocar un poco lo que ya está.
- «Copiar el valor a mano viene a ser lo mismo». Pues no: un «Juan» que pegaste se queda en «Juan» para siempre, mientras que
{{ $json.name }}pone el nombre del cliente nuevo en cada ejecución. Una expresión está viva; el texto escrito a mano está muerto. - «El panel de datos vacío significa que el flujo está roto». Normalmente solo significa que el nodo no se ha ejecutado. Pulsa Execute en el nodo anterior y los datos aparecen, con sus campos listos para arrastrar.
¿Por qué n8n solo te enseña campos arrastrables después de ejecutar un nodo, y no antes? Piénsalo: hasta que no se ejecuta, n8n no tiene ni idea de lo que va a devolver el formulario o la API, ni de si habrá un campo «phone» siquiera. El panel de datos enseña el resultado real, no una suposición. Por eso «ejecutar → ver los campos de verdad → arrastrarlos» gana a adivinar nombres a ciegas.
Cuando los datos no se dejan arrastrar
Comprueba que el nodo anterior se ha ejecutado (Execute): el panel de datos solo enseña datos que han pasado de verdad. Panel vacío = vuelve a ejecutar el nodo.
El nodo Set: ordenar tus datos
Los datos de una API llegan a menudo con campos de relleno y nombres incómodos. El nodo Edit Fields (Set) es tu reempaquetador: se queda con lo que necesitas, lo renombra y tira el resto, para que aguas abajo corra algo limpio y legible. Por ejemplo, dejar aquella respuesta del tiempo, tan aparatosa, en dos campos:
Antes (del HTTP): { "current": { "temperature_2m": 3.4, "time": "...",
"wind_speed_10m": 12, ...una docena de campos más... } }
Después (Set): { "temp": 3.4, "city": "Berlin" }
Coger la costumbre de ordenar los datos antes de las bifurcaciones y los nodos de IA te ahorra horas de depuración: cuando un campo se llama temp y no current.temperature_2m, tanto el prompt como la condición del IF se leen de un vistazo.
Hazlo ahora
Abre el resumen matutino de ayer. En el nodo Telegram, arrastra el campo de la temperatura desde el panel de datos hasta el texto del mensaje, de forma que quede «Ahora mismo hace {{ $json.current.temperature_2m }}°». Añade un nodo IF después del HTTP Request con la condición «temperatura < 5» y, en la rama true, pégale al mensaje «¡Coge chaqueta! 🧥». Ejecuta con distintos climas (cambia las coordenadas) y asegúrate de que saltan las dos ramas.
Short questions on the lesson — with an explanation for every answer.