Merge

The Merge node combines data from multiple workflow branches into a single output. Use it after parallel branches (from If-Else, For Each, or explicit splits) need to converge and continue as one path.

When to use Merge

ScenarioWhy Merge
After If-Else branchesBoth branches should continue to the same next step
After parallel API callsCombine results from multiple HTTP requests
After For EachAggregate all iteration results into one array
Data joiningCombine data from different sources into one record

Configuration

FieldTypeRequiredDescription
Merge modeSelectYesHow to combine the incoming data (see modes below)
Wait for allToggleNoWait for all incoming branches to complete before proceeding

Merge modes

Append

Combines all inputs into a single array. Each branch's output becomes an element.

Input:

  • Branch A output: { name: "Alice", source: "LinkedIn" }
  • Branch B output: { name: "Bob", source: "Twitter" }

Result:

[
  { "name": "Alice", "source": "LinkedIn" },
  { "name": "Bob", "source": "Twitter" }
]

Merge by field

Combines objects by matching a shared key field.

Input:

  • Branch A: { email: "alice@co.com", name: "Alice" }
  • Branch B: { email: "alice@co.com", company: "Acme" }

Merge on: email

Result:

{ "email": "alice@co.com", "name": "Alice", "company": "Acme" }

First completed

Takes the output of whichever branch finishes first. Useful for race conditions or fallback patterns.

All

Passes all branch outputs as separate variables: {{merge.branch_1}}, {{merge.branch_2}}, etc.

Output variables

VariableDescription
{{merge.result}}The merged output (format depends on mode)
{{merge.branch_count}}Number of branches that completed
{{merge.result[0]}}First item (Append mode)
{{merge.result.field}}Merged field (Merge by field mode)

Common patterns

Combine If-Else outputs

Trigger → If-Else (check type) →
  Type A: HTTP Request (API 1) → Transformer (format A)
  Type B: HTTP Request (API 2) → Transformer (format B)
→ Merge (first completed) → Send Email (with unified data)

Parallel enrichment

Trigger → [parallel branches]:
  Branch 1: Company Enrichment
  Branch 2: Person Enrichment  
  Branch 3: HTTP Request (custom API)
→ Merge (merge by field: email) → Create Record (enriched contact)

Aggregate For Each results

After a For Each loop, the Merge node collects all iteration outputs:

Find All (leads) → For Each → TinyGPT (classify) → Merge (append) →
  Transformer (calculate stats: 40% enterprise, 35% mid-market, 25% SMB) →
  Send Email (classification report)
Tip

When using "Wait for all" mode, the workflow pauses at the Merge until every incoming branch has completed. Disable this if you want to proceed as soon as any branch finishes (useful for timeout fallbacks).

Note

In most cases after an If-Else, only one branch executes. The Merge node handles this gracefully: it receives output from the branch that ran and proceeds.