n8n Loop Over Items: batching y bucles automáticos
Cómo n8n recorre automáticamente los items, cómo funciona el node Loop Over Items y qué tamaño de batch conviene para el rendimiento y los límites de tasa.
El mayor obstáculo de aprendizaje de n8n explicado: qué significan items, $json y $node y cómo mapear valores mediante arrastrar y soltar sin código.
Quien construye por primera vez un workflow en n8n llega tarde o temprano a un punto en el que un ajuste fijo de la interfaz ya no es suficiente: un valor debe provenir del node anterior, cambiar según los datos de entrada o provenir de un node completamente distinto más adelante en el workflow. Justo aquí comienza para muchos usuarios nuevos el mayor obstáculo de aprendizaje, porque de repente aparecen términos como $json, $node e items que, sin explicación, parecen código críptico. Sin embargo, detrás de esto hay un principio bastante simple, en cuanto queda claro cómo n8n transmite los datos entre nodes.
Este artículo explica con ejemplos concretos qué es realmente un item en n8n, cómo se relacionan $json y $node, y cómo mapeas valores mediante arrastrar y soltar, sin escribir tú mismo ni una sola línea de código. Se basa en la documentación oficial de n8n sobre expressions y sobre la estructura de datos interna, con fecha de julio de 2026.
n8n transmite los datos entre nodes siempre como un array de objetos, y cada elemento individual de este array se denomina item. Según la documentación de n8n sobre la estructura de datos cada item tiene la forma fija `{ json: {...} }`, donde los datos útiles reales se encuentran siempre bajo la clave json. Un ejemplo con dos items se ve así:
Importante para la comprensión: un node en n8n procesa por lo general cada item individualmente y repite su acción configurada para cada elemento del array. Si un node HTTP Request recibe dos items, por defecto también envía dos solicitudes, una por item. Quien haya interiorizado esto, entiende también por qué las expressions en n8n siempre se refieren al item que se está procesando actualmente y no a la lista completa.
$json es la variable más usada en las expressions de n8n y representa los datos json del item que el node actual está procesando. $json es en realidad una forma abreviada de $input.item.json, el item de entrada del node actual. Si, por ejemplo, quieres mostrar en el siguiente node el nombre del ejemplo anterior, escribes en un campo de texto:
`{{ $json.name }}`
n8n reemplaza esta expression en el momento de la ejecución por el valor real del item correspondiente, por lo que con dos items sería una vez "Anna" y otra vez "Jonas". Puedes acceder a campos anidados con notación de punto, por ejemplo `{{ $json.adresse.plz }}`, siempre que los datos estén estructurados en consecuencia.
En cuanto un valor no deba provenir del node inmediatamente anterior, sino de cualquier otro node más adelante en el workflow, $json ya no es suficiente. Justo para eso existe $node, o su sucesor $(). En workflows y tutoriales más antiguos encontrarás a menudo todavía la notación `$node["Node-Name"].json.feld`, esta sintaxis se considera ahora obsoleta. La forma actual, descrita en la documentación de n8n sobre cómo referenciar nodes anteriores es:
`{{ $('Node-Name').item.json.feld }}`
Si quieres no solo el item actualmente vinculado, sino específicamente el primero, el último o todos los items de un node determinado, dispones además de `$('Node-Name').first()`, `$('Node-Name').last()` y `$('Node-Name').all()`. Si encuentras en un workflow una expression antigua escrita con $node, vale la pena actualizarla en algún momento a la notación $(), para que siga funcionando de forma fiable también tras futuras actualizaciones de n8n.
Supongamos que un workflow comienza con un node de formulario llamado "Kontaktformular", que entre otras cosas captura una dirección de correo electrónico. Tres nodes más adelante, en una llamada HTTP Request a un CRM, necesitas de nuevo exactamente esa dirección, aunque los nodes intermedios ya no contengan datos de correo electrónico. La expression para esto es:
`{{ $('Kontaktformular').item.json.email }}`
Así accedes directamente al item original del node Kontaktformular, independientemente de lo que hayan hecho los nodes intermedios con los datos.
La forma más cómoda de acercarse a las expressions no pasa en absoluto por escribir código. En el panel de entrada de un node, n8n muestra los datos entrantes como lista o tabla, y cada campo individual se puede arrastrar directamente con el ratón a un campo de parámetro. n8n genera automáticamente a partir de esto la expression correspondiente, por ejemplo `{{ $json.fruit }}`, sin que necesites conocer tú mismo la sintaxis. Según la documentación de n8n sobre expressions frente a nodes de transformación de datos este método resulta especialmente útil cuando solo quieres tomar un único valor de datos anteriores, porque n8n muestra directamente en la vista previa qué valor concreto se usará en la ejecución. Para operaciones como ordenar, combinar o eliminar duplicados, la documentación recomienda en cambio los nodes de transformación de datos ya preparados, porque estos prescinden de cualquier expression y se manejan mediante una interfaz guiada.
Una vez que has interiorizado estos cuatro puntos, has superado el mayor obstáculo de entrada en n8n y a partir de ahí mantienes el control sobre tus propios workflows, incluso sin experiencia en desarrollo. Quien, a pesar de ello, prefiera contar con apoyo experimentado para construir automatizaciones más complejas, lo encuentra en la automatización n8n de NordFlux una implementación a precio fijo y con soberanía de datos alemana.
$json es una forma abreviada de $input.item.json y devuelve directamente los datos json del item actual. $input.item, en cambio, devuelve el objeto item completo incluyendo una posible clave binary, por lo que $json en la práctica es casi siempre la vía más corta y habitual cuando solo quieres acceder a valores de campo normales.
$node["Name"].json era la sintaxis original para referenciar datos de un node determinado, pero ahora se considera obsoleta. n8n recomienda en su lugar la notación $('Name'), que gestiona de forma más estable los cambios de nombre y las futuras versiones. Los workflows antiguos con $node en general siguen funcionando, pero deberían actualizarse en la próxima oportunidad.
No, $json siempre se refiere solo al item del flujo de datos que entra directamente en el node actual. Para campos de cualquier otro node situado más adelante en el workflow, necesitas la notación $('Node-Name').item.json.feldname, tal como se describe en la documentación sobre cómo referenciar nodes anteriores.
No, la mayoría de las veces no. Puedes arrastrar campos desde el panel de entrada directamente a un campo de parámetro, n8n genera automáticamente la expresion correspondiente. Escribir a mano vale la pena sobre todo cuando quieres acceder a datos de un node más alejado o quieres procesar además los valores con métodos como .toUpperCase() o .map().
Entonces la expression suele devolver undefined o un valor vacío, en lugar de un error, a menos que accedas a un campo de un objeto anidado que en sí mismo no exista. En esos casos, la función $ifEmpty() de la referencia de expressions ayuda a insertar automáticamente un valor por defecto, en lugar de interrumpir la ejecución.
NordFlux crea empleados digitales para las organizaciones: automatizaciones y agentes KI que asumen el trabajo repetitivo. Usted mantiene el control.
Cómo n8n recorre automáticamente los items, cómo funciona el node Loop Over Items y qué tamaño de batch conviene para el rendimiento y los límites de tasa.
Configurar y proteger correctamente los webhooks de n8n: Header Auth, JWT, lista blanca de IP y configuración de reverse proxy de un vistazo.
Los Task Runners de n8n ejecutan los nodos Code de forma aislada en lugar de en el proceso principal. Así funcionan el modo interno y externo.
Quien no distingue bien $json, $node e items acaba construyendo workflows que se rompen sin previo aviso ante el siguiente cambio de datos. NordFlux desarrolla sus automatizaciones de n8n con expresiones robustas y trazables, y forma a su equipo para usarlas con confianza. En una primera conversación hablamos del nivel actual de su equipo.