Quando devi unire fonti diverse (ads, CRM, ecommerce) in un’unica vista coerente, il nodo merge n8n è l’alleato più potente. La sua modalità “Combine” replica i comportamenti dei join SQL senza scrivere codice: puoi confrontare campi, allineare per posizione, o generare tutte le combinazioni. Per marketer e operations, significa consolidare metriche, arricchire contatti e produrre report puliti con pochi click. In questa guida pratica entriamo nel dettaglio della modalità Combine del nodo Merge di n8n: quando usarla rispetto ad altre opzioni, come mappare i join sinistro/destro/interno/esterno, come gestire conflitti e record non abbinati, e come sfruttare le opzioni avanzate (Fuzzy Compare, Deep vs Shallow merge, Multiple Matches). Vedrai esempi concreti, snippet e pattern riutilizzabili per arricchimento e consolidamento multi‑input, oltre alla novità “SQL Query” e al supporto agli input multipli introdotti nelle versioni recenti. Obiettivo: unire dataset in n8n con Merge in modo affidabile, leggibile e pronto per i tuoi flussi di analisi e attivazione.

📚 Nuovo a n8n? Parti dalla guida completa: cos'è n8n e come funziona.

Quando scegliere Combine: casi d’uso tipici e mappatura ai join SQL

La modalità Combine del nodo Merge di n8n è la scelta giusta quando devi fare un join tra flussi dati in n8n basandoti su:

  • Valori di campo condivisi (ID campagna, email, data) tra due o più stream.
  • L’ordine degli item (per flussi già ordinati o pre-allineati).
  • Necessità di generare tutte le coppie possibili tra due insiemi (combinazioni cartesiane dei record).

Casi d’uso tipici:

  • Arricchimento lead: unisci “contatti (CRM)” con “eventi marketing” sul campo email, scegliendo un join sinistro (Enrich Input 1) per mantenere tutti i lead e aggiungere eventuali eventi.
  • Performance campagne: unisci “spend/click (Ads)” con “leads/revenue (CRM/Billing)” su campaignId+date, usando “Keep Matches” (inner join) quando vuoi vedere solo le righe con dati completi.
  • QA dataset: usa “Keep Everything” (outer join) per scovare righe non abbinate e gap tra fonti.

Mappatura ai join SQL con Output Type in Combine > Matching Fields:

  • Keep Matches = inner join
  • Keep Non-Matches = anti join (solo non abbinati)
  • Keep Everything = full outer join
  • Enrich Input 1 = left join (Input 1 prevale)
  • Enrich Input 2 = right join (Input 2 prevale)

Suggerimento operativo: definisci a monte le chiavi (es. chiavi composte come campaignId|date) in un nodo Set/Code per evitare ambiguità e semplificare il matching per campi (field matching). Se gli stream hanno cardinalità diversa, le opzioni su “Multiple Matches” e l’eventuale dedup a valle aiutano a contenere risultati esplosivi.


Varianti di Combine spiegate con esempi pratici

Abbina per campi (Matching Fields): inner/left/right/outer e chiavi composte

Questa è la variante più usata per unire dataset in n8n con Merge:

  • Modalità: Mode > Combine, Combine by > Matching Fields
  • Parametri principali:
  • Fields to Match: specifica i campi da confrontare su Input 1 e Input 2
  • Output Type: Keep Matches, Keep Non-Matches, Keep Everything, Enrich Input 1, Enrich Input 2

Esempio pratico:

  • Input 1 (CRM): { email, firstName, lastName }
  • Input 2 (Events): { email, lastSeen, plan }

Configura Fields to Match = email, poi Output Type:

  • Enrich Input 1 (left join) per ottenere ogni contatto con eventuali dati lastSeen/plan
  • Keep Matches (inner join) per lavorare solo su contatti con evento associato

Chiavi composte: se la chiave è multipla (es. campaignId + date), crea prima un campo joinKey con Set/Code (joinKey = “{{ $json.campaignId }}|{{ $json.date }}”) su entrambi i flussi, poi usa Fields to Match = joinKey.

Consiglio: se le tipizzazioni differiscono (stringa vs numero), attiva Fuzzy Compare nelle Combine mode options per evitare mancati match dovuti al tipo.

Abbina per posizione (Position): stream ordinati, offset e allineamento

  • Modalità: Mode > Combine, Combine by > Position
  • Comportamento: item 0 di Input 1 si unisce con item 0 di Input 2, e così via.
  • Opzione utile: Include Any Unpaired Items (Add Option > Include Any Unpaired Items) per mantenere gli elementi “orfani” se gli stream hanno lunghezze diverse.

Quando usarlo:

  • Flussi già ordinati e sincronizzati (es. output paralleli con stesso ordinamento).
  • Allineamenti temporanei già normalizzati (stesso numero di righe dopo filtri identici).

Attenzione:

  • In stream con cardinalità diversa o ordini incoerenti, preferisci Matching Fields per stabilità.
  • In “Merging data streams with uneven numbers of items”, il nodo dà precedenza a Input 1: se Input 1 ha 5 item e Input 2 ne ha 10, verranno processati solo 5.

Tutte le combinazioni possibili (cartesiano): quando usarlo e rischi di cardinalità

  • Modalità: Mode > Combine, Combine by > All Possible Combinations
  • Effetto: crea la combinazione cartesiana tra gli item di Input 1 e Input 2, unendo i campi omonimi.

Usi concreti:

  • Generare matrici di confronto (es. prodotti x audience) prima di applicare filtri di business.
  • Creare “mappature candidate” quando le chiavi non sono note a priori e far validare poi da regole.

Rischi e mitigazioni:

  • Esplosione combinatoria: 100 x 100 = 10.000 righe. Applica filtri subito dopo (IF/Code) o riduci i set in ingresso.
  • Preferisci Matching Fields quando possibile: è più efficiente e semantico per dati “reali”.

Opzioni avanzate di Combine per dati reali

Gestione conflitti di campo, deep vs shallow merge e dot notation

Quando i record uniti hanno campi con lo stesso nome, entra in gioco la gestione dei conflitti di campo:

  • Combine mode options > Clash Handling
  • When Field Values Clash: scegli la precedenza (Input 1 o Input 2), oppure “Always Add Input Number to Field Names” per mantenere entrambe le versioni rinominando i campi con suffisso di input.
  • Merging Nested Fields:
    • Deep Merge: fondi le proprietà a tutti i livelli (utile con oggetti annidati).
    • Shallow Merge: fondi solo le proprietà di primo livello (più veloce e prevedibile con dati piatti).

Dot notation e campi annidati:

  • Combine mode options > Disable Dot Notation: disattiva l’accesso con “parent.child” nei nomi campo. Lascialo spento (default) per usare dot notation nelle “Fields to Match” se i campi sono annidati.

Linee guida:

  • Preferisci Deep Merge con payload ricchi (profili cliente con nested object).
  • Per performance o conflitti frequenti, Shallow Merge + rinomina nel Set può essere più controllabile.

Fuzzy match, match multipli e inclusione degli item non appaiati

  • Fuzzy Compare: tollera differenze di tipo nei confronti (es. “3” vs 3). Utile con API eterogenee.
  • Multiple Matches: definisce come trattare match multipli tra stream con cardinalità diversa.
  • Include All Matches: produce un item per ciascun abbinamento (many‑to‑many).
  • Include First Match Only: mantiene solo il primo match (riduce duplicati a valle).
  • Include Any Unpaired Items (solo Combine by Position): conserva gli item senza coppia.

Best practice:

  • Se ti aspetti corrispondenze 1‑a‑1, usa Include First Match Only o deduplica a monte.
  • Se devi garantire copertura completa (es. audit), usa Include All Matches e deduplica dopo con regole esplicite.

Pattern avanzati di workflow con Combine (Split/Merge, arricchimento, multi‑input)

Pattern Split → Enrich → Merge:
1) Normalizza ogni fonte (Set/Code), crea chiavi stabili e tipizza campi.
2) Per fonti con array, usa Split Out/Item Lists per portare ogni record a livello item.
3) Mode > Combine, Combine by > Matching Fields con Output Type adeguato (es. Enrich Input 1) per arricchire il dataset principale.
4) Applica KPI e filtri a valle, poi scrivi su Sheets/DB.

Stream con cardinalità diversa:

  • Se unisci “campagne Ads” con “ordini ecommerce” su campaignId, attiva Multiple Matches = Include All Matches se vuoi ogni ordine. In alternativa, aggrega a monte gli ordini per campaignId e data, poi fai matching 1‑a‑1.

Merge con input multipli in n8n:

  • Dalla versione 1.49.0 puoi aggiungere più di due input in Append. Usa Mode > Append e Number of Inputs per concatenare stream multipli in un unico array, poi unisci con Combine a step successivi.
  • Consiglio: concatena prima dataset omogenei (Append), poi usa Combine per il join semantico sul dataset finale.

Query SQL nel nodo Merge di n8n:

  • Mode > SQL Query consente di scrivere una query in stile AlaSQL sulle tabelle input1, input2, input3, …
  • Esempio (left join):
  SELECT *
  FROM input1
  LEFT JOIN input2
    ON input1.joinKey = input2.joinKey
  • Ottimo per marketer tecnici che preferiscono esprimere join complessi in SQL, mantenendo tutto nel canvas.

Choose Branch:

  • Mode > Choose Branch: scegli quale input propagare (Input 1 Data, Input 2 Data, A Single, Empty Item) dopo aver atteso entrambi. Utile nei rami condizionali quando vuoi “forzare” l’uscita di uno stream.

Performance e governance:

  • Usa Keep Only Set (nel nodo Edit Fields) prima dei Merge per ridurre dimensione record.
  • Separa i passaggi: Normalize → Combine → KPI → Output. Ogni blocco è più testabile e manutenibile.

Quick Takeaways

  • La modalità Combine del nodo Merge di n8n replica i join SQL: Mapping esatto con Output Type (inner/left/right/outer).
  • Tre varianti di Combine: Matching Fields, Position, All Possible Combinations. Scegli in base a chiavi, ordine o esigenze di esplorazione.
  • Le opzioni avanzate (Clash Handling, Deep/Shallow, Fuzzy Compare, Multiple Matches) risolvono i casi “sporchi” del mondo reale.
  • Con input multipli (>= 1.49.0) usa Append per concatenare più stream, poi Combine per i join semantici.
  • SQL Query nel Merge apre la strada a join complessi direttamente nel canvas (input1, input2, …).
  • Prepara chiavi stabili e tipizzazioni a monte (Set/Code) per risultati prevedibili e meno conflitti.

Conclusione

Padroneggiare la modalità Combine del nodo merge n8n ti consente di unire dati eterogenei con la stessa potenza concettuale dei join SQL, ma con la semplicità di un canvas low‑code. “Matching Fields” gestisce i casi più comuni con Output Type che mappa inner/left/right/outer; “Position” copre stream già allineati; “All Possible Combinations” abilita esplorazioni matriciali quando la relazione non è deterministica. Le opzioni avanzate — Clash Handling con Deep vs Shallow, Fuzzy Compare, Multiple Matches, Include Any Unpaired Items — trasformano una demo in una pipeline robusta e pronta per dati reali. Con input multipli e SQL Query, il nodo si adatta tanto ai marketer che cercano velocità, quanto ai power user che desiderano controllo fine. Il suggerimento finale: definisci una convenzione per joinKey, normalizza i payload prima del Merge, e isola i passaggi (Normalize → Combine → KPI → Output). In poche iterazioni, avrai flussi affidabili che consolidano insight per campagne, vendite e revenue, riducendo tempi manuali e rischi di errore.


FAQ

1) Come scelgo la variante giusta della modalità Combine?
Se hai chiavi di matching usa “Combine by > Matching Fields”; se gli stream sono già allineati usa “Position”; se devi generare tutte le coppie per filtrare a valle, usa “All Possible Combinations”. Per join sinistro/destro/interno/esterno in n8n, configura Output Type in Matching Fields.

2) Come gestisco campi in conflitto e oggetti annidati?
In Combine mode options > Clash Handling imposta precedenza tra input o “Always Add Input Number to Field Names”. Scegli “Deep Merge” per fondere proprietà annidate, “Shallow Merge” per top‑level. “Disable Dot Notation” serve a disattivare l’accesso parent.child nei nomi campo.

3) Cosa fare se i tipi non combaciano (stringa vs numero)?
Abilita “Fuzzy Compare” per tollerare differenze di tipo nel matching per campi (field matching). In alternativa, normalizza a monte i tipi con Edit Fields (Set) o Code.

4) Posso unire più di due stream?
Sì. Dalla 1.49.0 il Merge supporta più input in “Append” (Number of Inputs). Per join tra più dataset eterogenei, concatena prima con Append e poi applica una o più fasi di Combine.

5) Posso scrivere una query SQL nel Merge?
Sì, con Mode > SQL Query. Le tabelle sono input1, input2, input3, …; puoi eseguire un left join con una sintassi in stile AlaSQL. È utile quando i join sono complessi o familiari in SQL.


Ci dai una mano?

Qual è il tuo caso d’uso più spinoso per unire dataset eterogenei? Raccontalo nei commenti e condividi l’articolo con il team: confrontiamo chiavi, Output Type e opzioni avanzate per costruire join perfetti in n8n!

Vuoi automazioni AI su misura per la tua azienda?
Scopri la consulenza →