Tutorial de n8n en español: nodos, JSON y expresiones

Abres n8n por primera vez y te encuentras un lienzo vacío, cientos de nodos y unas llaves dobles que nadie te explica. Casi todo el que empieza se atasca en las mismas tres cosas: no sabe dónde está cada cosa, no entiende qué viaja de un nodo a otro y no consigue coger un dato de un nodo que se quedó atrás.

Este es el segundo capítulo de n8n desde cero, nuestra serie gratuita en YouTube. Si todavía no tienes claro para qué sirve la herramienta, empieza por qué es n8n y por qué tu empresa lo necesita; aquí vamos directos a la práctica. Tienes el vídeo y, debajo, el paso a paso para seguirlo sin darle al play, con el workflow terminado para descargar y pegar en tu n8n.

📌 En resumen

Montamos un flujo que coge tres pedidos de una tienda, pregunta a una API gratuita el cambio de euros a dólares y los reparte por urgencia (If) y por canal (Switch). Por el camino ves el panel de datos, qué es un JSON, por qué un nodo se ejecuta una vez por cada item, cómo fijar datos con la chincheta y la trampa de {{ $json }} cuando el dato se quedó dos nodos atrás, que se resuelve con $('Pedidos').item.json.

El flujo que vas a montar

Seis nodos en línea y cinco de destino que solo enseñan por dónde sale cada pedido:

NodoTipoQué hace
When clicking ‘Execute workflow’Disparador manualArranca el flujo cuando pulsas el botón
PedidosCodeCrea tres pedidos de ejemplo: Marta, Luis y Ana
Cambio a dólaresHTTP RequestPregunta a la API de Frankfurter el cambio de euro a dólar
ResumenEdit FieldsJunta el cliente, el canal, los euros y los dólares
¿Más de 100 €?IfSepara los pedidos en Urgente y Sin prisa
Por canalSwitchLos reparte en Web, Tienda y Otros canales

La interfaz, el lienzo y el panel de nodos

Al entrar llegas a la portada, con la barra lateral a la izquierda (crear, buscador, plantillas, ajustes) y varias pestañas en el centro. Vas a vivir en tres: Workflows, que son tus flujos; Credentials, donde se guardan los accesos a otros servicios (tu correo, tu bot); y Executions, el historial de todo lo que ha hecho n8n.

Crea un workflow nuevo y verás el lienzo, donde colocas los nodos y los unes con flechas. Para moverte, arrastra con la barra espaciadora pulsada; para acercarte, Ctrl y la rueda del ratón. Para añadir un nodo, pulsa la tecla N o el botón de más: se abre el panel de nodos con un buscador arriba, y como el lienzo está vacío te pregunta primero qué hace arrancar el flujo. Cógele el vicio a la N desde hoy, te ahorra muchos viajes al ratón.

Primer nodo: el disparador manual

Todo flujo empieza con un disparador, el nodo que le da la salida. El más sencillo es el manual, que en el lienzo aparece como When clicking ‘Execute workflow’: salta cuando pulsas el botón de ejecutar y es con el que vas a probar casi todo.

Edit Fields y el panel de datos

Detrás pon un Edit Fields, el nodo que crea o cambia campos. Añádele dos: cliente, de tipo texto, e importe, de tipo número. Ejecuta y abre el nodo: verás tres zonas. A la izquierda lo que le llega, en el centro su configuración y a la derecha lo que sale. Aquí vas a resolver casi todos tus problemas.

La salida se puede ver como tabla, como JSON o como esquema. Pásala a JSON, porque es como n8n ve los datos de verdad.

Los atajos que vas a usar a diario

AtajoQué hace
NAbre el panel para añadir un nodo
Ctrl + ZDeshace el último cambio
SuprBorra el nodo seleccionado
1Encuadra el flujo entero en la pantalla
F2Renombra el nodo seleccionado

Qué es un JSON y por qué te importa

Un JSON es una forma de escribir datos que entienden todos los programas. Entre llaves van parejas de clave y valor: la clave entre comillas, dos puntos y el valor. Los textos llevan comillas y los números no. Las listas van entre corchetes, y todo se puede meter dentro de todo. Así son los pedidos de nuestro ejemplo:

[
  { "cliente": "Marta", "importe": 149.9, "ciudad": "Sevilla", "canal": "web" },
  { "cliente": "Luis", "importe": 39.5, "ciudad": "Bilbao", "canal": "tienda" },
  { "cliente": "Ana", "importe": 89, "ciudad": "Valencia", "canal": "teléfono" }
]

Te importa por dos razones: todo lo que entra y sale de un nodo es un JSON, y cuando llames a un servicio de internet te va a contestar en JSON.

Los items: lo más importante del capítulo

Entre nodo y nodo no viaja un dato, sino una lista, y cada elemento de esa lista es un item. En el flujo, un nodo Code llamado Pedidos devuelve esos tres objetos, así que salen tres items. No te asustes por el JavaScript, solo está para tener datos de ejemplo.

Punto de control: después de ejecutar cualquier nodo, lo primero que miras es el contador de items, que sale en la flecha y en la salida. Si esperabas tres y hay uno, o ninguno, ya sabes dónde buscar el problema.

La consecuencia es la que más sorprende al principio: el nodo siguiente se ejecuta una vez por cada item, sin que montes ningún bucle. Si llama a un servicio, hará tres llamadas; si manda un correo, mandará tres.

HTTP Request: pedirle algo a internet

El nodo HTTP Request llama a cualquier servicio que tenga una dirección web. Aquí usamos uno gratuito de tipos de cambio, Frankfurter, con el método GET (pedir) y esta URL:

https://api.frankfurter.dev/v1/latest?base=EUR&symbols=USD

Ejecuta y contesta en JSON con la moneda de partida, la fecha y, dentro de rates, el cambio a dólares. Salen tres items porque ha hecho tres llamadas, una por pedido.

Lo que va detrás de la interrogación son parámetros. En vez de escribirlos pegados a la dirección, puedes activar Send Query Parameters y ponerlos uno a uno: base con valor EUR y symbols con valor USD. Se lee mejor, y en cada valor puedes meter una expresión.

Dos trucos para probar sin perder tiempo

  • Fija la respuesta con la chincheta. Mientras pruebas, n8n no vuelve a llamar al servicio y trabajas siempre con los mismos datos; cuando el flujo funcione de verdad, la chincheta no cuenta. Los datos fijados se pueden editar con el lápiz, así pruebas qué pasa con un importe raro sin tocar el servicio.
  • Ejecuta solo hasta un nodo. Pasa el ratón por encima y pulsa su botón de reproducir: n8n ejecuta hasta ahí y aprovecha los datos que ya tenía, lo que en servicios de pago también te ahorra dinero.

Expresiones: coger un dato y usarlo en otro nodo

Las expresiones son valores que se calculan al ejecutar y van entre llaves dobles. No hace falta escribirlas: arrastras el campo desde el panel de la izquierda y n8n escribe solo {{ $json.rates.USD }}. Debajo te enseña el resultado en vivo con los datos reales, de modo que sabes si está bien sin ejecutar. $json significa el item que está llegando ahora mismo a este nodo. Si es larga, ábrela en grande para escribir con más sitio.

La trampa: el dato que se quedó atrás

Aquí cae todo el mundo. Queremos también el nombre del cliente, pero lo que llega a este nodo es la respuesta del servicio de cambio: el pedido se quedó dos nodos atrás y {{ $json.cliente }} sale vacío.

Para cogerlo, en el panel de la izquierda eliges el nodo Pedidos y arrastras el campo desde ahí. La expresión cambia a {{ $('Pedidos').item.json.cliente }}, y se lee así: del nodo Pedidos, dame el item que corresponde a este, y de él, el cliente. n8n sabe qué pedido va con qué respuesta, por eso cada cliente sigue con su cambio y no con el de otro. Abre la expresión en grande y usa las flechas del número de item: verás el resultado de los tres, Marta, Luis y Ana.

Como la referencia usa el nombre del nodo, ponles nombres claros: un $('Code') no te dice nada. Renombra con F2 y n8n actualiza solo las expresiones que lo usaban.

El nodo Resumen

Con eso ya se puede calcular. El Edit Fields llamado Resumen queda con cuatro campos:

  • cliente (texto): {{ $('Pedidos').item.json.cliente }}
  • canal (texto): {{ $('Pedidos').item.json.canal }}
  • euros (número): {{ $('Pedidos').item.json.importe }}
  • dolares (número): {{ Math.round($('Pedidos').item.json.importe * $json.rates.USD * 100) / 100 }}, el importe por el cambio, redondeado a dos decimales

Un detalle de Edit Fields: solo saca los campos que tú defines. Si quieres conservar también los que le llegaban, activa Include Other Input Fields.

Si te falla: cuando un campo sale vacío y el dato está en el flujo, mira de qué nodo viene. Si no es el inmediatamente anterior, $json no lo ve y necesitas $('NombreDelNodo').item.json.

If y Switch: repartir los items

El nodo If compara y separa: los items que cumplen la condición salen por la rama true y los demás por la false. Aquí la condición es {{ $json.euros }}, de tipo Number, mayor que 100. Fíjate en el tipo, porque tiene que comparar número con número. Al ejecutar, el pedido de Marta (149,90 €) sale por true hacia Urgente y los de Luis y Ana, por false hacia Sin prisa.

Si hay más de dos caminos, usa Switch. En modo Rules, cada regla es una salida: si canal es igual a web, por una; si es tienda, por otra. Con Rename Output les pones nombre, Web y Tienda. En las opciones, Fallback Output decide qué pasa con lo que no cumple ninguna regla. Por defecto se pierde, así que mándalo a una salida extra para que no se escape nada: el pedido de Ana, que llegó por teléfono, acaba en Otros canales.

La regla rápida: dos caminos, If; tres o más, Switch.

Un flujo entero es un JSON

Selecciona todos los nodos con Ctrl+A, cópialos con Ctrl+C y pégalos en un editor de texto: verás una lista nodes, con el nombre, el tipo y los parámetros de cada nodo, y al final connections, que dice quién va detrás de quién. Si pegas ese texto en otro workflow con Ctrl+V, aparece entero. Así se comparten flujos y así te damos el de este capítulo.

Ejecuciones, errores y el botón Publish

En la pestaña de ejecuciones del workflow queda cada vez que se ha ejecutado, con lo que entró y salió de cada nodo. Cuando algo falle, es lo primero que miras.

En el vídeo lo rompemos a propósito con una dirección que no existe: el HTTP Request se pone en rojo, el flujo se para ahí y el mensaje del nodo te dice qué ha pasado, que es tu punto de partida para arreglarlo.

Una última cosa: cuando uses un disparador automático, como un horario o un mensaje de Telegram, tendrás que publicar el workflow con el botón Publish de arriba, porque mientras no lo publiques solo se ejecuta cuando estás probando. Lo hacemos en el capítulo 3.

Los capítulos del vídeo

MinutoQué se ve
0:42La interfaz: portada y barra lateral
2:19El panel de datos
2:57Qué es un JSON
3:28Los items: lo más importante
4:36HTTP Request: pedirle algo a internet
5:03Fijar datos con la chincheta
6:09Expresiones: {{ $json }}
6:47La trampa: un dato que se quedó atrás
8:28If: dos caminos
8:47Switch: varios caminos
9:30Un flujo entero es un JSON
10:31Cuando algo falla

Descarga el flujo de los pedidos

Un zip con el workflow del vídeo terminado (pedidos, cambio a dólares, Resumen, If y Switch) para pegar en tu n8n con Ctrl+V, y un LEEME que explica qué hace cada nodo. No necesita credenciales ni claves.

Recibirás un correo para confirmar tu dirección y, al confirmarla, otro con el zip adjunto. Si ya confirmaste en otra descarga de la serie, te llega directamente.

Preguntas frecuentes

¿Qué es un item en n8n?
Cada uno de los elementos de la lista que viaja entre nodos. Si un nodo saca tres items, el siguiente se ejecuta tres veces, una por item, sin que tengas que montar ningún bucle.

¿Por qué mi expresión sale vacía si el dato está en el flujo?
Porque $json solo ve lo que sale del nodo inmediatamente anterior. Si el dato viene de un nodo que se quedó atrás, elígelo en el panel de la izquierda y arrastra desde ahí: la expresión pasa a ser $('NombreDelNodo').item.json.campo.

¿Cuándo uso If y cuándo Switch?
If para dos caminos (la condición se cumple o no) y Switch para tres o más. En Switch, activa el Fallback Output en una salida extra para que no se pierdan los items que no cumplen ninguna regla.

¿Cómo importo un workflow de n8n que me pasan en JSON?
Copia el contenido del archivo y pégalo con Ctrl+V en un workflow vacío. Si algún nodo usa credenciales, elige las tuyas.

¿Para qué sirve fijar datos con la chincheta?
Para probar sin volver a llamar al servicio cada vez: el nodo devuelve siempre la misma respuesta mientras construyes el resto, y cuando el flujo funciona de verdad la chincheta no cuenta.

Sigue la serie: ← capítulo 1: tu servidor para n8n · todos los capítulos de n8n desde cero · capítulo 3: tu primer agente de IA en Telegram →

Cada nodo, con su lección

En el curso de n8n de nacaIA Academy tienes cada uno de estos nodos con su propia lección y ejercicios con datos reales, para que los items y las expresiones dejen de ser un misterio antes de pasar a los agentes de IA y a n8n en producción.

Ver el curso de n8n
JB

Jorge Benítez

Fundador de nacaIA · Especialista en automatizaciones con n8n y desarrollo de software

Ayudo a empresas a automatizar procesos con n8n, IA y desarrollo a medida. Más sobre mí →