Control Flow Nodes

Control flow nodes determine how data moves through your workflow. Use them to branch, loop, run tasks in parallel, pause execution, handle errors, and compose workflows from reusable subflows.

All Control Flow Nodes

If/ElseLogic

Evaluate a condition and route data to the True or False branch. Supports expressions, comparisons, and boolean logic.

SwitchLogic

Multi-way branching based on a value. Define named cases with match conditions and an optional default fallthrough branch.

LoopLogic

Iterate over an array and execute downstream nodes once per item. Access the current item, index, and total count in expressions.

ParallelLogic

Execute multiple downstream branches concurrently. All branches run simultaneously and results are collected when every branch completes.

DelayLogic

Pause workflow execution for a specified duration. Configure delays in seconds, minutes, or hours.

Try/CatchLogic

Wrap nodes in error handling. The Try branch executes normally; if any node throws an error, execution jumps to the Catch branch. An optional Finally branch runs regardless of success or failure.

SubflowLogic

Execute another workflow as a step within the current workflow. Enables modular, reusable workflow design with input/output data mapping.

If/Else

The If/Else node evaluates a condition expression and directs data down the True or False output. You can use any expression that resolves to a boolean value.

Expression
// Condition expression example
{{ $json.status === "active" && $json.score > 80 }}

Both branches receive the full input data. Downstream nodes on each branch only execute when their branch is taken.

Switch

The Switch node provides multi-way branching. Define a value expression and one or more cases. Each case has a name, a match value, and its own output. An optional default branch handles unmatched values.

PropertyDescription
ValueThe expression to evaluate (e.g. {{ $json.region }})
CasesNamed branches with match values (e.g. us-east, eu-west)
DefaultOptional fallthrough branch for unmatched values

Loop

The Loop node iterates over an array and executes downstream nodes once for each item. Inside the loop body, you can access:

  • {{ $json.item }} -- the current array element
  • {{ $json.index }} -- the zero-based iteration index
  • {{ $json.total }} -- the total number of items

Parallel

The Parallel node splits execution into concurrent branches. All branches start simultaneously and the node waits for every branch to complete before merging results and continuing the workflow.

Execution limits

Parallel branches share the same execution context. Be mindful of rate limits when making external API calls across many branches.

Delay

The Delay node pauses execution for a configurable duration. Use it to add wait times between API calls (rate limiting), schedule follow-up actions, or implement polling patterns.

Try/Catch

The Try/Catch node wraps a group of nodes in error handling. If any node in the Try branch throws an error, execution immediately jumps to the Catch branch. The Catch branch receives the error details. An optional Finally branch always executes, regardless of whether an error occurred.

BranchExecutes When
TryAlways -- contains the primary logic
CatchOnly when an error occurs in the Try branch
FinallyAlways -- runs after Try or Catch completes

Subflow

The Subflow node executes another workflow as a step within the current workflow. This enables modular workflow design -- build reusable logic once and invoke it from multiple parent workflows.

Features

  • Searchable selector -- browse and search all available workflows in your workspace.
  • Input mapping -- map data from the parent workflow into the subflow's trigger input.
  • Output mapping -- extract data from the subflow's final output back into the parent workflow.
  • Recursion prevention -- NodeLoom detects circular subflow references and prevents infinite loops.
  • Depth limit -- subflows can be nested up to 10 levels deep. Exceeding this limit causes the execution to fail with a clear error message.
  • Timeout -- configurable execution timeout prevents runaway subflows from blocking the parent workflow.

Recursion depth

NodeLoom enforces a maximum subflow nesting depth of 10. If workflow A calls B which calls C (and so on), the chain cannot exceed 10 levels. Design your subflow hierarchy to stay well within this limit.