Skip to content

IF#

The IF node is used to split a workflow conditionally based on comparison operations.

Node Reference#

You can add comparison conditions using the Add Condition dropdown. Conditions can be created based on the data type, the available comparison operations vary for each data type.

Boolean

  • Equal
  • Not Equal

Number

  • Smaller
  • Smaller Equal
  • Equal
  • Not Equal
  • Larger
  • Larger Equal
  • Is Empty

String

  • Contains
  • Equal
  • Not Contains
  • Not Equal
  • Regex
  • Is Empty

You can choose to split a workflow when any of the specified conditions are met, or only when all the specified conditions are met using the options in the Combine dropdown list.

Branch execution with If and Merge nodes#

If you add a Merge node to a workflow containing an If node, it can result in both output branches of the If node executing.

The Merge node is triggered by one branch, then goes and executes the other branch.

For example, in the screenshot below there's a workflow containing a Set node, If node, and Merge node. The standard If node behavior is to execute one branch (in the screenshot, this is the true output). However, due to the Merge node, both branches execute, despite the If node not sending any data down the false branch.

Screenshot of a simple workflow. The workflow has a Set node, followed by an If node. It ends with a Merge node.

Example Usage#

This workflow executes two different Set nodes based on the output given by an IF node. You can also find the workflow on n8n.io. This example usage workflow would use the following nodes. - Start - Function - IF - Set

The final workflow should look like the following image.

A workflow with the IF node

1. Start node#

The start node exists by default when you create a new workflow.

2. Function node#

  1. Enter the following code in the Function field.
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    return [
      {
        json: {
          id: 0,
        }
      },
      {
        json: {
          id: 1,
        }
      }
    ];
    
  2. Click on Execute Node to run the workflow.

Using the Function node to send data to the IF node

3. IF node#

  1. Click on the Add Condition button and select 'Number' from the dropdown list.
  2. Click on the gears icon next to the Value 1 field and click on Add Expression.
  3. Select the following in the Variable Selector section: Nodes > Function > Output Data > JSON > ID. You can also add the following expression: {{$node["Function"].json["id"]}}.
  4. From the Operation dropdown list, select 'Equal'.
  5. Click on Execute Node to run the workflow.

Using the IF node to conditionally execute based on the input

4. Set node (for 'true' condition)#

  1. Create a Set node connected to the 'true' output of the IF node.
  2. Click on the Add Value button and select 'String' from the dropdown list.
  3. Enter name in the Name field.
  4. Enter n8n in the Value field.
  5. Click on Execute Node to run the workflow.

Note: Notice that only the ID with the value 0 made its way to this Set node.

Using the Set node to set a value when the condition is true

5. Set1 node (for 'false' condition)#

  1. Create a Set node connected to the 'false' output of the IF node.
  2. Click on the Add Value button and select 'String' from the dropdown list.
  3. Enter name in the Name field.
  4. Enter nodemation in the Value field.
  5. Click on Execute Node to run the workflow.

Note: Notice that only the ID with the value 1 made its way to this Set node.

Using the Set node to set a value when the condition is false