Il nodo merge n8n è uno strumento fondamentale per chi costruisce workflow di marketing basati su più fonti dati: CRM, e‑commerce, advertising, form, analytics. Quando servono report coerenti, arricchimenti di profilo o confronti tra liste, unire due rami in n8n nel modo giusto fa la differenza tra automazioni fragili e pipeline affidabili. In questo articolo scoprirai come funziona il nodo Merge di n8n nelle sue modalità principali, come impostare unione per chiave in n8n e per posizione, come gestire conflitti di campo tra input n8n, e come ottimizzare performance con grandi liste in n8n. Troverai esempi pratici, configurazioni funzionanti e suggerimenti di debug pensati per marketer che vogliono migliorare la produttività con n8n. Vedremo anche come simulare join sinistro/destro tipici del mondo SQL, come deduplicare record in n8n e come combinare risultati da API in n8n con precisione. Alla fine, avrai un metodo chiaro per scegliere la modalità più adatta (append, merge by index, merge by field) e mettere in piedi workflow robusti e scalabili.
Fondamenti e contesto del nodo Merge
Perché serve unire due rami: orchestrazione, arricchimento e confronto dati
Nel quotidiano di un team marketing, i dati arrivano in tempi e formati diversi. Il nodo Merge di n8n ti permette di:
- orchestrare esecuzioni parallele (es. enrichment + scoring) e poi ricomporre il flusso;
- eseguire arricchimento dati nei workflow n8n unendo profili CRM con eventi e‑commerce;
- confrontare liste (lead vs ordini) per trovare gap e triggerare azioni mirate.
Il risultato è un “hub” dove join dati tra flussi n8n diventano affidabili e ripetibili.
Differenze con nodi correlati (Wait/Join, IF, Item Lists) e scenari tipici
- Merge vs Wait/Join: il nodo Merge può “aspettare” entrambi gli input e combinarli; Wait è più un gate di sincronizzazione.
- Merge vs IF: IF filtra/branchia; il nodo merge n8n ricompone.
- Merge vs Item Lists: Item Lists trasforma liste; il Merge combina due flussi.
Scenari tipici: consolidare due API, arricchire lead con acquisti, deduplicare contatti tra sorgenti.
Struttura degli item e payload: oggetti, array e metadati
Ciascun item è un oggetto con campi arbitrari. Il Merge non impone schema: in append items n8n concatena semplicemente, mentre in merge by field n8n e merge by index n8n controlla come accoppiare e fondere campi. Mantieni coerenti tipi e chiavi per evitare sorprese.
Comportamento e modalità del nodo Merge di n8n
Priorità degli input e comportamento in assenza di corrispondenze
Il nodo Merge usa due ingressi: Input 1 e Input 2. La priorità (quale campo “vince” in caso di conflitti) e l’output dipendono dalla modalità e dalle opzioni. In unione per chiave in n8n, puoi decidere quali dati includere con outputDataFrom e come comportarti con elementi senza match (ad esempio, farli passare o scartarli).
Concatenazione dei risultati (append) per unire liste
Quando le liste non vanno fuse campo per campo ma semplicemente concatenate:
- Modalità: Append
- Effetto: gli item di Input 1 seguiti dagli item di Input 2, senza fusione dei campi.
Esempio d’uso: unire log giornalieri di due sorgenti identiche.
Configurazione minima (parametri chiave):
{
"name": "Append streams",
"type": "n8n-nodes-base.merge",
"typeVersion": 1,
"parameters": {
"mode": "append"
}
}
[IMG: Configurazione nodo Merge in modalità Append che concatena due liste]
Unione per posizione (index) quando gli elenchi sono allineati
Quando le due liste sono già ordinate e allineate elemento-per-elemento:
- Modalità: Merge By Index
- Effetto: l’elemento 0 di Input 1 si fonde con l’elemento 0 di Input 2, e così via.
Configurazione minima:
{
"name": "Merge by Index",
"type": "n8n-nodes-base.merge",
"typeVersion": 1,
"parameters": {
"mode": "mergeByIndex"
}
}
Consiglio: usa questa modalità solo se puoi garantire l’allineamento (stessa lunghezza e ordine). In caso contrario, preferisci unione per chiave in n8n.
[IMG: Esempio visivo di accoppiamento per posizione tra due liste con stesso ordinamento]
Unione per chiave/campo (merge by field) per “join” logici
Quando gli elenchi non sono allineati ma condividono un identificativo (es. id, email):
- Modalità: Merge By Key (merge by field n8n)
- Parametri chiave: propertyName e outputDataFrom
Configurazione funzionante:
{
"name": "Merge by ID",
"type": "n8n-nodes-base.merge",
"typeVersion": 1,
"parameters": {
"mode": "mergeByKey",
"propertyName": "id",
"outputDataFrom": "both"
}
}
- propertyName: il campo su cui eseguire il “join”.
- outputDataFrom: controlla se includere campi da Input 1, Input 2 o “both”.
[IMG: Setup del Merge ‘mergeByKey’ con propertyName=id e outputDataFrom=both]
Intersezione e differenza su chiave (mantenere/rimuovere corrispondenze)
Per mantenere solo i match o solo i non-match, puoi combinare merge by field n8n con una logica a valle:
- Esegui Merge By Key con propertyName e outputDataFrom adeguati.
- Usa nodi Function/IF per filtrare intersezione (solo match) o differenza (solo non-match), sfruttando le proprietà presenti/assenti nell’item.
- In alternativa, controlla le opzioni del Merge relative alla gestione dei non-match: se disponibili, puoi far “passare” o “scartare” elementi senza corrispondenze in base alla tua esigenza di keep/remove matches n8n.
[IMG: Flusso con Merge by Key seguito da IF per filtrare match vs non-match]
Risoluzione conflitti, normalizzazione e deduplica
Risoluzione dei conflitti: precedenza Input 1 vs Input 2
Quando campi omonimi compaiono su entrambi gli input, definisci a monte la tua regola di precedenza:
- Se outputDataFrom è “both”, specifica a valle una normalizzazione che selezioni il campo “vincente” (es. preferisci prezzo aggiornato dall’API e‑commerce).
- Strategia pratica: subito dopo il nodo merge n8n aggiungi un nodo Function per risolvere conflitti di campo tra input n8n in modo deterministico.
Esempio Function (risolve conflitti preferendo Input 2):
// Assume campi da Input 1 sotto data1, da Input 2 sotto data2
return items.map(item => {
const i1 = item.json.data1 || {};
const i2 = item.json.data2 || {};
return { json: { ...i1, ...i2 } }; // i2 ha precedenza
});
Normalizzazione dei dati (tipi, formati, campi null) prima del merge
Prima dell’unione:
- Uniforma tipi (string vs number) e formati (email lower-case, date ISO).
- Rimuovi null/undefined superflui.
- Esegui mapping dei campi in n8n per rinominare chiavi divergenti.
Questo riduce gli errori e rende il merge prevedibile.
[IMG: Nodo Set per uniformare tipi e rinominare campi prima del Merge]
Strategie di deduplica e consolidamento dei record
Dopo un append items n8n o un merge by field n8n, può restare rumore:
- Usa un nodo Function per deduplicare record in n8n sfruttando una mappa per chiave primaria (es. email).
- Consolidamento: unisci campi complementari in un unico profilo.
Snippet di deduplica:
const seen = new Map();
for (const item of items) {
const k = item.json.email?.toLowerCase();
if (!k) continue;
if (!seen.has(k)) seen.set(k, item.json);
else seen.set(k, { ...seen.get(k), ...item.json });
}
return Array.from(seen.values()).map(json => ({ json }));
Casi d’uso pratici per marketer
Arricchire i lead del CRM con dati e‑commerce
Obiettivo: arricchimento dati nei workflow n8n unendo lead CRM con ordini e‑commerce.
- Recupera lead (Input 1) e ordini (Input 2).
- Esegui unione per chiave in n8n su propertyName=email con outputDataFrom=both.
- Normalizza e risolvi conflitti: mantieni i campi demografici dal CRM e i campi transazionali dal commerce.
- Attiva segmentazioni o campagne basate sul valore del cliente.
Configurazione Merge:
{
"parameters": {
"mode": "mergeByKey",
"propertyName": "email",
"outputDataFrom": "both"
}
}
[IMG: Merge by Key per arricchimento lead con email come chiave]
Insight: inserisci un IF per creare flag “highValue” quando lifetimeValue > soglia; automatizza messaggi VIP.
Aggregare pagine di un’API e combinarle con una seconda fonte
- Pagine API A: usa loop + append per costruire una lista completa.
- API B: carica dati complementari (es. prezzi in tempo reale).
- Esegui merge by index n8n se le liste sono perfettamente allineate; altrimenti merge by field n8n su id/prodotto.
Pattern:
1) Append tutte le pagine da A
2) Normalizza
3) Merge con B via propertyName=id
4) Pubblica output o invia a BI
[IMG: Pipeline con Append delle pagine A e Merge By Key con dati B]
Confrontare due liste (clienti attivi vs ordini) per trovare gap
- Input 1: clienti attivi
- Input 2: ordini ultimi 90 giorni
- Merge by field su propertyName=customerId
- Con IF filtra i non-match (clienti senza ordini recenti) per azioni di win-back.
[IMG: Merge + IF per individuare clienti senza ordini recenti]
Testing, debug e performance
Errori comuni (chiavi mancanti, indici disallineati, tipi non coerenti)
- Chiavi mancanti: se propertyName non esiste in alcuni item, il match fallisce.
- Indici disallineati: merge by index n8n produce accoppiamenti errati.
- Tipi incoerenti: “123” (string) ≠ 123 (number). Normalizza prima del nodo Merge.
Checklist prima del run:
- Verifica sample data su entrambe le linee.
- Aggiungi un nodo Function “assert” per controlli rapidi su campi chiave.
Validazione con nodi Function/IF e sample data
- Crea esempi di 5–10 item per ramo.
- Usa IF per verificare presenza chiavi e contare match vs non-match.
- Aggiungi logging di campo critico (es. id/email) in caso di mismatch per semplificare il testing e debug del merge n8n.
Snippet di validazione:
let missing = 0;
for (const i of items) if (!i.json.id) missing++;
return [{ json: { missingIds: missing, total: items.length } }];
Ottimizzare su dataset grandi: filtri a monte, batching, limiti di memoria
- Filtra il superfluo prima del merge (riduci campi e righe).
- Batching: processa blocchi di 500–1000 item per volta.
- Limita payload: rimuovi campi di debug prima del nodo merge n8n.
- Considera un pre‑join sul database quando i volumi eccedono i limiti di memoria del workflow.
[IMG: Esempio di filtro a monte e batching prima del Merge]
Pattern avanzati
Merge a catena per più di due sorgenti
Per unire 3+ fonti:
- Sequenza di Merge: (A+B) → +C → +D
- In ogni step, normalizza e risolvi conflitti prima di aggiungere la fonte successiva.
- Documenta propertyName usate e precedenze per evitare regressioni.
[IMG: Catena di più nodi Merge per unire 4 sorgenti]
Simulare join sinistro/destro e anti-join
- Left join: produci tutti gli item di Input 1, arricchiti quando esiste match su Input 2; filtra i non‑match di Input 1 solo se veramente necessario.
- Right join: analogo, invertendo la prospettiva.
- Anti-join: conserva solo item senza match. Implementabile con merge by field e un IF che seleziona i non‑match.
Parole chiave: keep/remove matches n8n per descrivere la logica di mantenere/rimuovere corrispondenze sul campo chiave.
Quando scegliere codice custom, query SQL o trasformazioni esterne
- Usa SQL se i dati risiedono già in DB: i join sono più veloci e scalabili.
- Usa codice custom (Function node) quando la logica di fusione è non standard (priorità condizionali, mapping dinamico).
- Usa strumenti esterni (ETL/ELT) per dataset massivi; poi re‑introduci il risultato nel flusso n8n per l’orchestrazione.
Quick Takeaways
- Il nodo merge n8n offre tre pilastri pratici: append, merge by index n8n e merge by field n8n.
- Per dati disallineati, preferisci unione per chiave in n8n con propertyName e outputDataFrom ben impostati.
- Normalizza prima del Merge: tipi coerenti, chiavi presenti, mapping dei campi in n8n.
- Gestisci conflitti definendo una precedenza chiara tra Input 1 e Input 2.
- Per grandi liste, filtra a monte, usa batching e limita il payload.
- Simula left/right/anti join con Merge + IF per mantenere o rimuovere corrispondenze.
- Deduplica e consolida subito dopo il merge per mantenere profili puliti.
Conclusione
Padroneggiare il nodo merge n8n significa saper scegliere la modalità giusta per lo scenario giusto. Con append items n8n concateni rapidamente flussi omogenei; con merge by index n8n allinei liste già ordinate; con merge by field n8n realizzi veri “join” su chiave, controllando cosa includere e come risolvere i conflitti di campo tra input n8n. La qualità del risultato dipende dalla preparazione: normalizzazione, mapping dei campi in n8n, e una chiara regola di precedenza tra Input 1 e Input 2. Per marketer, questo si traduce in pipeline che arricchiscono lead con dati e‑commerce, combinano risultati da API in n8n in modo affidabile e individuano gap utili per campagne mirate. Se lavori con molti dati, ricorda di ottimizzare: filtri a monte, batching e, quando conviene, join nel database. Ora tocca a te: prendi un caso reale (es. contatti CRM + acquisti ultimi 90 giorni), implementa l’unione per chiave in n8n e misura l’impatto su segmentazioni e conversioni. In poche iterazioni, il nodo Merge di n8n diventerà un alleato quotidiano per migliorare produttività e precisione delle tue automazioni.
FAQ
1) Cos’è il nodo Merge di n8n e quando usarlo?
È il nodo che combina due flussi. Usalo per unire due rami in n8n quando devi concatenare liste (append), allineare per posizione (merge by index n8n) o fare unione per chiave in n8n (merge by field n8n) per arricchimenti e confronti.
2) Come imposto una unione per chiave in n8n?
Configura il nodo merge n8n con mode=mergeByKey, propertyName impostato sulla chiave (es. id/email) e outputDataFrom in base a ciò che vuoi includere. È la via maestra per join dati tra flussi n8n con chiavi disallineate.
{
"parameters": {
"mode": "mergeByKey",
"propertyName": "email",
"outputDataFrom": "both"
}
}
3) Qual è la differenza tra merge by index n8n e append items n8n?
Append unisce le liste una dopo l’altra senza fondere campi. Merge by index accoppia elemento 1 con elemento 1, elemento 2 con elemento 2, ecc. Usalo solo se le liste sono allineate.
4) Come gestisco keep/remove matches n8n?
Dopo un merge by field n8n, usa IF/Function per filtrare: tieni solo i match (intersezione) o solo i non‑match (differenza). Imposta una logica chiara su come identificare item con o senza corrispondenza.
5) Come migliorare le performance con grandi liste in n8n?
Riduci il payload prima del nodo Merge, applica filtri, usa batching, normalizza le chiavi e valuta join a monte su SQL. Questo migliora performance con grandi liste in n8n e riduce gli errori.
Il tuo feedback conta!
Hai provato uno dei pattern sul tuo caso (CRM + e‑commerce, API multiple, deduplica)? Raccontaci cosa ha funzionato e dove hai incontrato ostacoli. Se l’articolo ti è stato utile, condividilo con il tuo team marketing: qual è il prossimo flusso che unirai con il nodo merge n8n?
Scopri la consulenza →

