n8n Loop Over Items : Batching et bouclage automatique
Comment n8n parcourt automatiquement les items, comment fonctionne le node Loop Over Items et quelle taille de batch est judicieuse pour la performance et les limites de débit.
Le plus grand obstacle d'apprentissage de n8n expliqué : ce que signifient items, $json et $node et comment mapper des valeurs par glisser-déposer sans code.
Quiconque construit pour la première fois un workflow dans n8n arrive tôt ou tard à un point où un réglage fixe de l'interface ne suffit plus : une valeur doit provenir du node précédent, changer selon les données d'entrée, ou provenir d'un tout autre node plus en amont dans le workflow. C'est exactement là que commence, pour de nombreux nouveaux utilisateurs, le plus grand obstacle d'apprentissage, car des termes comme $json, $node et items apparaissent soudain, qui, sans explication, ressemblent à du code cryptique. Pourtant, derrière cela se cache un principe assez simple, dès lors qu'il est clair comment n8n transmet les données entre les nodes.
Cet article explique à l'aide d'exemples concrets ce qu'est réellement un item dans n8n, comment $json et $node sont liés, et comment tu mappes des valeurs par glisser-déposer, sans écrire toi-même une seule ligne de code. Il se base sur la documentation officielle n8n sur les expressions et sur la structure de données interne, à la date de juillet 2026.
n8n transmet toujours les données entre les nodes sous forme d'un tableau d'objets, et chaque élément individuel de ce tableau est appelé item. Selon la documentation n8n sur la structure de données chaque item a la forme fixe `{ json: {...} }`, les données utiles réelles se trouvant toujours sous la clé json. Un exemple avec deux items ressemble à ceci :
Important pour la compréhension : un node dans n8n traite en général chaque item individuellement et répète son action configurée pour chaque élément du tableau. Si un node HTTP Request reçoit deux items, il envoie par défaut aussi deux requêtes, une par item. Une fois que l'on a intégré cela, on comprend aussi pourquoi les expressions dans n8n se réfèrent toujours à l'item actuellement traité et non à la liste entière.
$json est la variable la plus fréquemment utilisée dans les expressions n8n et représente les données json de l'item que le node actuel est en train de traiter. $json est en fait une forme abrégée de $input.item.json, l'item d'entrée du node actuel. Si, par exemple, tu veux afficher dans le node suivant le nom de l'exemple ci-dessus, tu écris dans un champ de texte :
`{{ $json.name }}`
n8n remplace cette expression lors de l'exécution par la valeur réelle de l'item concerné, donc avec deux items une fois "Anna" et une fois "Jonas". Tu accèdes aux champs imbriqués avec la notation par points, par exemple `{{ $json.adresse.plz }}`, à condition que les données soient structurées en conséquence.
Dès qu'une valeur ne doit pas provenir du node directement précédent, mais d'un tout autre node plus en amont dans le workflow, $json ne suffit plus. C'est exactement à cela que servent $node, ou son successeur $(). Dans les anciens workflows et tutoriels, tu trouves souvent encore la notation `$node["Node-Name"].json.feld`, cette syntaxe est désormais considérée comme obsolète. La forme actuelle, décrite dans la documentation n8n sur la référence aux nodes précédents est :
`{{ $('Node-Name').item.json.feld }}`
Si tu veux non seulement l'item actuellement lié, mais spécifiquement le premier, le dernier ou tous les items d'un node donné, tu disposes en plus de `$('Node-Name').first()`, `$('Node-Name').last()` et `$('Node-Name').all()`. Si tu trouves dans un workflow une ancienne expression écrite avec $node, il vaut la peine de la faire évoluer vers la notation $() à l'occasion, afin qu'elle continue de fonctionner de manière fiable même après les futures mises à jour de n8n.
Supposons qu'un workflow commence par un node de formulaire nommé "Kontaktformular", qui capture entre autres une adresse e-mail. Trois nodes plus loin, dans un appel HTTP Request vers un CRM, tu as de nouveau besoin exactement de cette adresse, même si les nodes intermédiaires eux-mêmes ne contiennent plus de données e-mail. L'expression pour cela est :
`{{ $('Kontaktformular').item.json.email }}`
Ainsi, indépendamment de ce que les nodes intermédiaires ont fait avec les données, tu accèdes directement à l'item d'origine du node Kontaktformular.
L'accès le plus confortable aux expressions ne passe pas du tout par la saisie de code. Dans le panneau d'entrée d'un node, n8n affiche les données entrantes sous forme de liste ou de tableau, et chaque champ individuel peut être glissé directement à la souris dans un champ de paramètre. n8n génère automatiquement à partir de cela l'expression correspondante, par exemple `{{ $json.fruit }}`, sans que tu aies besoin de connaître la syntaxe toi-même. Selon la documentation n8n sur les expressions par rapport aux nodes de transformation de données cette méthode est particulièrement utile lorsque tu veux seulement reprendre une seule valeur des données précédentes, car n8n montre directement dans l'aperçu quelle valeur concrète sera utilisée lors de l'exécution. Pour des opérations comme trier, fusionner ou supprimer les doublons, la documentation recommande en revanche les nodes de transformation de données tout prêts, car ceux-ci se passent de toute expression et sont utilisés via une interface guidée.
Une fois que tu as intégré ces quatre points, tu as franchi le plus grand obstacle d'entrée dans n8n et tu gardes désormais le contrôle sur tes propres workflows, même sans background de développeur. Si, pour la construction d'automatisations plus complexes, tu préfères tout de même t'appuyer sur un soutien expérimenté, tu trouveras chez l'automatisation n8n de NordFlux une réalisation à prix fixe et avec souveraineté des données allemande.
$json est une forme abrégée de $input.item.json et renvoie directement les données json de l'item actuel. $input.item renvoie en revanche l'objet item complet, y compris une éventuelle clé binary, c'est pourquoi $json est en pratique presque toujours la voie la plus courte et la plus courante lorsque tu veux seulement accéder à des valeurs de champs normales.
$node["Name"].json était la syntaxe d'origine pour référencer des données d'un node précis, mais est désormais considérée comme obsolète. n8n recommande à la place la notation $('Name'), qui gère de manière plus stable les renommages et les futurs changements de version. Les anciens workflows avec $node continuent la plupart du temps de fonctionner, mais devraient être adaptés à la prochaine occasion.
Non, $json se réfère toujours uniquement à l'item du flux de données entrant directement au node actuel. Pour des champs provenant d'un autre node quelconque situé plus en amont dans le workflow, tu as besoin de la notation $('Node-Name').item.json.feldname, comme décrit dans la documentation sur la référence aux nodes précédents.
Non, la plupart du temps non. Tu peux glisser des champs depuis le panneau d'entrée directement dans un champ de paramètre, n8n génère automatiquement l'expression correspondante. Taper à la main vaut surtout la peine lorsque tu veux accéder à des données d'un node plus éloigné ou traiter en plus les valeurs avec des méthodes comme .toUpperCase() ou .map().
Alors l'expression renvoie généralement undefined ou une valeur vide, plutôt qu'une erreur, sauf si tu accèdes à un champ d'un objet imbriqué qui n'existe pas lui-même. Dans de tels cas, la fonction $ifEmpty() de la référence des expressions aide à insérer automatiquement une valeur par défaut, au lieu de faire échouer l'exécution.
NordFlux construit des employés numériques pour les organisations : des automatisations et des agents KI qui prennent en charge le travail répétitif. Vous gardez le contrôle.
Comment n8n parcourt automatiquement les items, comment fonctionne le node Loop Over Items et quelle taille de batch est judicieuse pour la performance et les limites de débit.
Configurer et sécuriser correctement les webhooks n8n : Header Auth, JWT, liste blanche d'IP et configuration du reverse proxy en un coup d'œil.
Les Task Runners n8n exécutent les nœuds Code de manière isolée plutôt que dans le processus principal. Voici comment fonctionnent les modes interne et externe.
Ne pas bien distinguer $json, $node et items conduit à des workflows qui se cassent sans prévenir au moindre changement de données. NordFlux développe vos automatisations n8n avec des expressions robustes et traçables, et forme votre équipe à les utiliser en toute confiance. Lors d'un premier échange, nous discutons du niveau actuel de votre équipe.