Data tussen nodes: expressies en vertakkingen
De magie van n8n zit in het doorgeven van data: een naam uit een formulier belandt in een e-mail, een bedrag uit een e-mail in een voorwaarde. Je leert de expressies {{ }}, het koppelen van velden met slepen en de IF-node voor vertakkingen.
Nodes zijn het skelet van een workflow. De data die ertussen stroomt, is het bloed. Tijd om te leren die te sturen.
Elke node geeft data door aan de volgende
Klik op een node die heeft gedraaid en je ziet zijn output: velden en waarden (naam, e-mail, bedrag…). De volgende node kan er elk van gebruiken.
Expressies in {{ }}
Elk tekstveld van een node neemt meer dan platte tekst — het neemt substituties:
Nieuwe lead van {{ $json.name }}!
Telefoon: {{ $json.phone }}, bedrag: {{ $json.amount }} €
Je hoeft de syntaxis niet uit je hoofd te leren: open het datapaneel links en sleep het veld dat je wilt in de tekst — n8n schrijft de expressie voor je. Velden slepen is vaardigheid nummer één in deze les.
Vertakkingen: de IF-node
De IF-node splitst de stroom in twee takken op basis van een voorwaarde:
[Leadformulier] → [IF: amount > 1000?] true → [Telegram naar de verkoper: „Dikke lead!"] false → [Gewoon in de sheet schrijven]
Voorwaarden stel je in met een formulier: veld, operator (groter dan / gelijk aan / bevat), waarde. Meerdere voorwaarden combineer je met EN/OF.
De mini-oefening van deze les
Neem de ochtendsamenvatting van gisteren en voeg dit toe: IF „temperatuur onder 5°" → aan het bericht wordt „Neem een jas mee! 🧥" geplakt. Data uit de HTTP-node → een voorwaarde → twee versies van de tekst. Dat is het sjabloon achter elke workflow die je vanaf nu bouwt.
Wat $json, $node en de punt betekenen
Lees {{ $json.name }} zo: $json is de data die bij deze node is aangekomen; de punt betekent „ga naar binnen"; name is het veld. Is de data genest, dan zijn er meer punten: in het weerantwoord zit de temperatuur in {{ $json.current.temperature_2m }}. En wil je een veld uit een eerdere node in plaats van die er vlak voor, dan is er $node:
Uit de node ernaast: {{ $json.amount }}
Uit een genest veld: {{ $json.current.temperature_2m }}
Uit een node op naam: {{ $node["Form"].json.email }}
Nogmaals: je typt dit vrijwel nooit, je sleept het met de muis en n8n vult het juiste pad met punten in. Maar weten wat de punt betekent, loont: de dag dat een expressie undefined teruggeeft, zie je meteen dat je een nestingniveau hebt gemist.
IF versus Switch
De IF-node geeft je precies twee takken — true en false. Heb je er meer dan twee nodig (lead / klacht / vraag / spam), dan pak je Switch — zelfde idee, meerdere uitgangen. De regel is simpel: twee uitkomsten, IF; veel uitkomsten, Switch. Switch spitten we uit in de les over het sorteren van de inbox; voor nu is het genoeg te weten dat vertakkingen schalen.
Mythes over data
- „Ik moet de expressiesyntaxis leren." Hoeft niet. 95% van de tijd sleep je velden met de muis. Syntaxis telt alleen om te lezen en licht bij te schaven wat er al staat.
- „De waarde met de hand kopiëren komt op hetzelfde neer." Niet dus: een „Ivan" die je erin plakte, blijft voor altijd „Ivan", terwijl
{{ $json.name }}bij elke run de naam van de nieuwe klant invult. Een expressie leeft; getypte tekst is dood. - „Een leeg datapaneel betekent dat de workflow stuk is." Meestal betekent het alleen dat de node niet heeft gedraaid. Druk op Execute bij de node ervoor en de data verschijnt, met sleepbare velden.
Waarom toont n8n sleepbare velden pas nadat een node heeft gedraaid, en niet meteen? Denk er even over na: vóór het draaien heeft n8n geen idee wat het formulier of de API teruggeeft — of er überhaupt een veld „phone" komt. Het datapaneel toont het echte resultaat, geen gok. Daarom wint „draaien → de echte velden zien → slepen" het van blind veldnamen raden.
Als de data niet wil slepen
Controleer of de node ervoor heeft gedraaid (Execute) — het datapaneel toont alleen data die er echt doorheen is gegaan. Leeg paneel = draai de node opnieuw.
De Set-node: orde in je data
API-data komt vaak binnen met rommelvelden en onhandige namen. De Edit Fields (Set)-node is je herverpakker: hij houdt wat je nodig hebt, hernoemt het en gooit de rest weg, zodat er verderop een schone, leesbare structuur stroomt. Bijvoorbeeld dat logge weerantwoord terugbrengen tot twee velden:
Voor (uit HTTP): { "current": { "temperature_2m": 3.4, "time": "...",
"wind_speed_10m": 12, ...een dozijn velden meer... } }
Na (Set): { "temp": 3.4, "city": "Berlin" }
De gewoonte om data op te ruimen vóór vertakkingen en AI-nodes bespaart uren debuggen: als een veld temp heet in plaats van current.temperature_2m, lezen zowel je prompt als je IF-voorwaarde in één oogopslag.
Doe dit nu
Open de ochtendsamenvatting van gisteren. Sleep in de Telegram-node het temperatuurveld uit het datapaneel in de berichttekst, zodat er staat „Het is nu {{ $json.current.temperature_2m }}°". Voeg een IF-node toe na de HTTP Request met de voorwaarde „temperatuur < 5" en plak in de true-tak „Neem een jas mee! 🧥" achter het bericht. Draai Execute bij verschillend weer (wissel de coördinaten) en zorg dat beide takken afgaan.
Short questions on the lesson — with an explanation for every answer.