Dati tra i nodi: espressioni e diramazioni
La magia di n8n sta nel far scorrere i dati: un nome preso da un modulo finisce in un'e-mail, un importo di un'e-mail dentro una condizione. Impari le espressioni {{ }}, l'abbinamento dei campi col trascinamento e il nodo IF per le diramazioni.
I nodi sono lo scheletro di un flusso. I dati che scorrono tra loro sono il sangue. È ora di imparare a guidarli.
Ogni nodo passa i dati al successivo
Clicca su un nodo che è già stato eseguito e ne vedrai l'output: campi e valori (nome, e-mail, importo…). Il nodo dopo può usarne uno qualsiasi.
Le espressioni tra {{ }}
Ogni campo di testo di un nodo accetta più del semplice testo: accetta sostituzioni.
Nuovo lead da {{ $json.name }}!
Telefono: {{ $json.phone }}, importo: {{ $json.amount }} €
Non devi memorizzare la sintassi: apri il pannello dati a sinistra e trascina il campo che ti serve nel testo — n8n scrive l'espressione al posto tuo. Trascinare i campi è l'abilità numero uno di questa lezione.
Diramazioni: il nodo IF
Il nodo IF divide il flusso in due rami in base a una condizione:
[Modulo lead] → [IF: amount > 1000?] true → [Telegram al commerciale: «Lead grosso!»] false → [Scrivilo e basta nel foglio]
Le condizioni si impostano con un modulo: campo, operatore (maggiore di / uguale a / contiene), valore. Più condizioni si combinano con E/O.
La mini-pratica di questa lezione
Prendi il riepilogo del mattino di ieri e aggiungici questo: IF «temperatura sotto i 5°» → al messaggio si attacca «Prendi una giacca! 🧥». I dati dal nodo HTTP → una condizione → due versioni del testo. È il modello dietro ogni flusso che costruirai d'ora in poi.
Cosa significano $json, $node e il punto
Leggi {{ $json.name }} così: $json sono i dati arrivati a questo nodo; il punto vuol dire «entra dentro»; name è il campo. Se i dati sono annidati, i punti aumentano: nella risposta meteo la temperatura sta in {{ $json.current.temperature_2m }}. E quando vuoi un campo da un nodo precedente e non da quello subito prima, c'è $node:
Dal nodo accanto: {{ $json.amount }}
Da un campo annidato: {{ $json.current.temperature_2m }}
Da un nodo per nome: {{ $node["Form"].json.email }}
Di nuovo: non lo scrivi quasi mai, lo trascini col mouse e n8n inserisce il percorso giusto coi punti. Ma capire cosa vuol dire il punto conviene: il giorno in cui un'espressione restituisce undefined, vedrai subito di aver saltato un livello di annidamento.
IF contro Switch
Il nodo IF ti dà esattamente due rami: true e false. Quando te ne servono più di due (lead / reclamo / domanda / spam), passi a Switch — stessa idea, più uscite. La regola è semplice: due esiti, IF; tanti esiti, Switch. Switch lo vediamo per bene nella lezione sullo smistamento della posta in arrivo; per ora ti basti sapere che le diramazioni scalano.
I miti sui dati
- «Devo imparare la sintassi delle espressioni.» No. Il 95% del tempo trascini i campi col mouse. La sintassi serve solo per leggere e ritoccare un po' quello che c'è già.
- «Copiare il valore a mano è la stessa cosa.» Niente affatto: un «Ivan» incollato resta «Ivan» per sempre, mentre
{{ $json.name }}mette il nome del nuovo cliente a ogni esecuzione. Un'espressione è viva; il testo scritto a mano è morto. - «Pannello dati vuoto vuol dire che il flusso è rotto.» Di solito vuol dire solo che il nodo non è stato eseguito. Premi Execute sul nodo prima e i dati compaiono, con i campi pronti da trascinare.
Perché n8n mostra i campi da trascinare solo dopo che un nodo è stato eseguito, e non subito? Pensaci: prima dell'esecuzione n8n non ha idea di cosa restituiranno il modulo o l'API — se ci sarà davvero un campo «phone». Il pannello dati mostra il risultato vero, non un'ipotesi. Ecco perché «esegui → vedi i campi reali → trascinali» batte l'indovinare i nomi alla cieca.
Quando i dati non si trascinano
Controlla che il nodo prima sia stato eseguito (Execute): il pannello dati mostra solo i dati che sono passati davvero. Pannello vuoto = riesegui il nodo.
Il nodo Set: mettere ordine nei dati
I dati di un'API arrivano spesso con campi inutili e nomi scomodi. Il nodo Edit Fields (Set) è il tuo riconfezionatore: tiene ciò che ti serve, lo rinomina e butta il resto, così a valle scorre una struttura pulita e leggibile. Per esempio, ridurre quell'ingombrante risposta meteo a due campi:
Prima (da HTTP): { "current": { "temperature_2m": 3.4, "time": "...",
"wind_speed_10m": 12, ...una dozzina di campi in più... } }
Dopo (Set): { "temp": 3.4, "city": "Berlin" }
Prendere l'abitudine di sistemare i dati prima delle diramazioni e dei nodi IA ti risparmia ore di debug: quando un campo si chiama temp e non current.temperature_2m, sia il prompt sia la condizione IF si leggono a colpo d'occhio.
Fallo ora
Apri il riepilogo del mattino di ieri. Nel nodo Telegram, trascina il campo della temperatura dal pannello dati nel testo del messaggio, così da avere «Adesso ci sono {{ $json.current.temperature_2m }}°». Aggiungi un nodo IF dopo l'HTTP Request con la condizione «temperatura < 5» e nel ramo true attacca al messaggio «Prendi una giacca! 🧥». Esegui con Execute a diverse condizioni meteo (cambia le coordinate) e assicurati che scattino entrambi i rami.
Short questions on the lesson — with an explanation for every answer.