Les données entre nodes : expressions et embranchements
La magie de n8n, c'est de faire circuler les données : un nom saisi dans un formulaire atterrit dans un e-mail, un montant tiré d'un e-mail dans une condition. On maîtrise les expressions {{ }}, l'association des champs par glisser-déposer et la node IF pour les embranchements.
Les nodes sont le squelette d'un workflow. Les données qui circulent entre elles en sont le sang. Il est temps d'apprendre à les diriger.
Chaque node transmet ses données à la suivante
Cliquez sur une node qui a déjà tourné et vous verrez sa sortie : des champs et des valeurs (nom, e-mail, montant…). La node suivante peut utiliser n'importe lequel d'entre eux.
Les expressions entre {{ }}
Tout champ de texte d'une node accepte plus que du texte brut — il accepte des substitutions :
Nouveau lead de {{ $json.name }} !
Téléphone : {{ $json.phone }}, montant : {{ $json.amount }} €
Inutile de mémoriser la syntaxe : ouvrez le panneau de données à gauche et faites glisser le champ voulu dans le texte — n8n écrit l'expression à votre place. Glisser des champs, c'est la compétence numéro un de cette leçon.
Les embranchements : la node IF
La node IF sépare le flux en deux branches selon une condition :
[Formulaire de leads] → [IF : amount > 1000 ?] true → [Telegram au commercial : « Gros lead ! »] false → [L'écrire dans le tableur, point]
Les conditions se règlent via un formulaire : champ, opérateur (supérieur à / égal à / contient), valeur. Plusieurs conditions se combinent avec ET/OU.
La mini-pratique de cette leçon
Reprenez la synthèse du matin d'hier et ajoutez-y ceci : IF « température inférieure à 5° » → le message se voit accoler « Prenez une veste ! 🧥 ». Les données de la node HTTP → une condition → deux versions du texte. C'est le modèle derrière tous les workflows que vous monterez désormais.
Ce que veulent dire $json, $node et le point
Lisez {{ $json.name }} ainsi : $json, ce sont les données arrivées jusqu'à cette node ; le point signifie « entre dedans » ; name est le champ. Si les données sont imbriquées, il y a plus de points : dans la réponse météo, la température se trouve dans {{ $json.current.temperature_2m }}. Et quand vous voulez un champ d'une node antérieure plutôt que celle juste avant, il y a $node :
De la node d'à côté : {{ $json.amount }}
D'un champ imbriqué : {{ $json.current.temperature_2m }}
D'une node par son nom : {{ $node["Form"].json.email }}
Encore une fois : vous ne tapez presque jamais cela, vous le faites glisser à la souris et n8n renseigne le bon chemin à points. Mais comprendre ce que signifie le point est payant : le jour où une expression renverra undefined, vous verrez immédiatement que vous avez sauté un niveau d'imbrication.
IF ou Switch
La node IF vous donne exactement deux branches : true et false. Quand il vous en faut plus de deux (lead / réclamation / question / spam), vous prenez Switch — même principe, plusieurs sorties. La règle est simple : deux issues, IF ; beaucoup d'issues, Switch. On creusera Switch dans la leçon sur le tri de la boîte de réception ; pour l'instant, retenez que les embranchements passent à l'échelle.
Les mythes autour des données
- « Je dois apprendre la syntaxe des expressions. » Non. Dans 95 % des cas, vous faites glisser des champs à la souris. La syntaxe ne sert qu'à relire et à retoucher légèrement ce qui est déjà là.
- « Copier la valeur à la main, ça revient au même. » Pas du tout : un « Ivan » collé restera « Ivan » pour toujours, alors que
{{ $json.name }}insère le nom du nouveau client à chaque exécution. Une expression est vivante ; du texte tapé est mort. - « Un panneau de données vide veut dire que le workflow est cassé. » Le plus souvent, cela veut simplement dire que la node n'a pas tourné. Cliquez sur Execute sur la node précédente et les données apparaissent, champs prêts à glisser.
Pourquoi n8n n'affiche-t-il des champs à faire glisser qu'après l'exécution d'une node, et pas tout de suite ? Réfléchissez : avant de tourner, n8n n'a aucune idée de ce que le formulaire ou l'API va renvoyer — ni même s'il y aura un champ « phone ». Le panneau de données montre le résultat réel, pas une supposition. C'est pour cela que « lancer → voir les vrais champs → les glisser » vaut mieux que deviner des noms à l'aveugle.
Quand les données refusent de glisser
Vérifiez que la node précédente a bien tourné (Execute) — le panneau de données ne montre que les données qui sont réellement passées. Panneau vide = relancez la node.
La node Set : mettre de l'ordre dans vos données
Les données d'une API arrivent souvent avec des champs inutiles et des noms peu commodes. La node Edit Fields (Set) est votre reconditionneur : elle garde ce dont vous avez besoin, le renomme et jette le reste, pour que ne circule en aval qu'une structure propre et lisible. Par exemple, ramener cette réponse météo encombrante à deux champs :
Avant (depuis HTTP) : { "current": { "temperature_2m": 3.4, "time": "...",
"wind_speed_10m": 12, ...une dizaine de champs de plus... } }
Après (Set) : { "temp": 3.4, "city": "Berlin" }
Prendre l'habitude de ranger les données avant les embranchements et les nodes d'IA vous épargne des heures de débogage : quand un champ s'appelle temp plutôt que current.temperature_2m, votre prompt comme votre condition IF se lisent d'un coup d'œil.
À faire maintenant
Ouvrez la synthèse du matin d'hier. Dans la node Telegram, faites glisser le champ de la température depuis le panneau de données jusque dans le texte du message, pour obtenir « Il fait {{ $json.current.temperature_2m }}° en ce moment ». Ajoutez une node IF après le HTTP Request avec la condition « température < 5 » et, dans la branche true, accolez « Prenez une veste ! 🧥 » au message. Lancez Execute par différents temps (changez les coordonnées) et assurez-vous que les deux branches se déclenchent.
Short questions on the lesson — with an explanation for every answer.