---
title: If-else and Merge
slug: if-else-and-merge
description: Discover the new If-else and Merge feature, designed for efficient, logical routing in workflows.
image: https://archbee-image-uploads.s3.amazonaws.com/oAyFj2GHlBeBVWF5OAir2/w2_6h8Z-NsUJdP5GjWayG_domino-zoomin-purple-a-1.png
docTags: 
createdAt: 2026-02-13T10:37:27.398Z
---

Use the If-else module with the Merge module when you need to split your scenario into conditional paths, follow only one path based on your logic, and then reconnect the flow into a single route.

This differs from a [Router](docId\:OpqXxZcGe19tawxhIAEHn) that runs all routes and can't be reconnected.

## If-else module

The If-else module splits your scenario into conditional routes. Only the first condition that evaluates as `true` runs.  If no conditions are `true`, the Else route runs.&#x20;

Structure your conditions from most specific to least specific to ensure that the correct route runs. You can add any number of conditions.

The If-else module requires one conditional route and one else route. These routes can't be unlinked from the If-else module and the last module can't be deleted.

After setting up your routes, you can keep them separate or use a Merge module to bring them back together and continue the flow.

To add an If-else module to your scenario, see [Add an If-else module](docId:5F6OZVB5VL2gvDsA7EoRP).&#x20;

While an If-else module and a [Router](docId\:OpqXxZcGe19tawxhIAEHn) can both split a scenario into different paths with conditions, the scenario run process differs.

| **If-else module**                                       | **Router**                                                    |
| -------------------------------------------------------- | ------------------------------------------------------------- |
| Splits the scenario into multiple routes with conditions | Splits the scenario into multiple routes<br />with conditions |
| Runs the first condition that passes as `true`           | Runs all conditions in the set order                          |
| Routes can be merged back together with a Merge module   | Routes can't be merged back together                          |

:::hint{type="info"}
The If-else module uses operations but does not consume any credits.
:::

## Merge module

The Merge module reconnects the conditional routes created by an If-else module into a single flow. It passes data from the active route to any subsequent modules in your scenario.

The Merge module only works with an If-else module. You can't add it to a scenario without first setting up an If-else flow.&#x20;

To add a Merge module to your scenario, see [Add a Merge module](docId:5F6OZVB5VL2gvDsA7EoRP).

:::hint{type="info"}
The Merge module uses operations but does not consume any credits.
:::

## Add an If-else module

The If-else module splits the scenario flow into multiple routes with conditions.

To add an If-else module:

:::::WorkflowBlock
:::WorkflowBlockItem
In your scenario, click the plus to add another module.
:::

::::WorkflowBlockItem
Search for the **Flow Control > If-else** module.

:::hint{type="info"}
::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/57lsRGrunx-7NMybOIHgq-20260224-120214.png" size="50" width="533" height="425" position="flex-start" alt="If-else module: Splits the scenario flow into multiple routes with conditions, then lets you merge them back together." darkWidth="533" darkHeight="425" showCaption="false"}

The Merge module is not available to add to your scenario until after an If-else flow has been set up.
:::
::::

:::WorkflowBlockItem
After adding the If-else module, you will see a default setting of two paths, one condition route and an else route.&#x20;

Set the condition:

- **Label:** Name the condition.
- **Condition:** Enter or map the values for the condition. Add additional rules as needed.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/gdKO1SHGqXyQkAiaJbVCD-20260224-121846.png" size="50" width="439" height="456" position="flex-start" alt="Set up condition" darkWidth="439" darkHeight="456" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save** to save this condition.
:::

:::WorkflowBlockItem
To add another condition route, hover over the If-else module until you see the white + symbol and click.&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/3wdLNQ4KVTmtEUJU1PAkj-20260224-124203.png" size="24" width="291" height="304" position="flex-start" alt="Add another condition." darkWidth="291" darkHeight="304" showCaption="false"}

Another condition route is added every time you click.
:::

:::WorkflowBlockItem
Set the values for each condition and click **Save**.
:::

:::WorkflowBlockItem
Optional: Click the Else filter and enter a Label.&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/zJW12PUXi04OT16vWe9VO-20260224-124753.png" size="56" width="575" height="360" position="flex-start" alt="Label the Else route." darkWidth="575" darkHeight="360" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

After you've set all of the conditions, continue to add modules to your scenario as needed to complete each route.

You can keep each route separate or add a merge module to bring the routes together and continue the flow.

:::hint{type="info"}
**Restrictions to the If-else flow**

You can't add a Router module or another If-else module into the flow after an If-else module.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/TCuZjU6AsbWxHdW5m8q5s-20260302-113131.png" size="80" width="800" height="365" position="flex-start" alt="The Router and If-else modules are not available for use between an If-else and Merge flow." darkWidth="800" darkHeight="365" showCaption="false"}
:::

## Add a Merge module

The Merge module merges the If-else routes together and continues the flow with data in a single route.

The Merge module can only be used after an If-else module.&#x20;

To add a Merge module:

:::::WorkflowBlock
:::WorkflowBlockItem
At the end of any route, click the plus to add another module.
:::

::::WorkflowBlockItem
Search for the **Flow Control > Merge** module.

:::hint{type="info"}
::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/CnJ3MD0JFClwpLYetLhFa-20260224-130912.png" size="50" width="536" height="421" position="flex-start" alt="Merge module: Merges if-else routes together and continues the flow with data from a single route." darkWidth="536" darkHeight="421" showCaption="false"}
:::
::::

::::WorkflowBlockItem
Click and hold the Merge module icon to drag and connect it to all routes in the If-else flow.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/vGif-L-vG3-IxHFGQA2XQ-20260224-131744.png" size="60" width="678" height="701" position="flex-start" alt="Join the merge module to all routes." darkWidth="678" darkHeight="701" showCaption="false"}

:::hint{type="info"}
You can also merge the routes by clicking the plus sign at the end of any route and selecting **Merge routes**.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/8_WG4Osc53EVJ1eymbapj-20260309-131645.png" size="38" width="396" height="251" position="flex-start" alt="Merge routes" darkWidth="396" darkHeight="251" showCaption="false"}
:::
::::

:::WorkflowBlockItem
Enter or map the following values for your Merge module output:

- **Output name**
- **If 1st condition is true > Output value**
- **Else > Output value**

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/TCBkMYpgbYLju0C5RWWr1-20260305-120329.png" size="60" width="507" height="393" position="flex-start" darkWidth="507" darkHeight="393" showCaption="false"}

Add additional if-else outputs, if necessary.
:::

:::WorkflowBlockItem
Click **Save**.
:::
:::::

The Merge module is connected to the If-else flow and the scenario flow can continue after the merge.

If a condition route does not include a module and you connect the route to the Merge module, Make displays a Do Nothing module. While this route does not include any modules, data passes through.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/T8zHWQqfiSK99Ooq5jyOO-20260302-114245.png" size="90" width="720" height="207" position="flex-start" alt="If you do not select a module for one of the routes after If-else and then connect it to the Merge, the module name becomes Do Nothing." darkWidth="720" darkHeight="207" showCaption="false"}

To replace the Do Nothing module with a different module, click the Do Nothing module and search for your required app.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/f2T0rFOKFDKlRkBw_PSDx-20260302-130938.png" size="60" width="600" height="452" position="flex-start" alt="Search for an app to replace the Do Nothing module." darkWidth="600" darkHeight="452" showCaption="false"}

## Delete modules from the If-else and Merge flow

To delete an If-else module, right-click and select **Delete**.&#x20;

This removes the module and all its conditions. This action can't be undone.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/UR4jGLavQbVmKJMgBL9L9-20260302-141335.png" size="40" width="505" height="190" position="flex-start" darkWidth="505" darkHeight="190" showCaption="false"}

Any remaining modules after the deleted If-else module will show an error until you reconnect them to the scenario flow.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/dF0KsPPqFT4ZVBRzsXdPn-20260302-141627.png" size="60" width="545" height="259" position="flex-start" darkWidth="545" darkHeight="259" showCaption="false"}

If you delete modules before the Merge module, the Merge module will show an error. Connect at least one module before configuring its outputs.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/NPhm08tPl6__S5uZ-g8hX-20260302-141900.png" size="60" width="641" height="275" position="flex-start" alt="Merge module without connection error" darkWidth="641" darkHeight="275" showCaption="false"}

## Nested If-else & Merge

The Nested If-else and Merge feature lets you build multi-level decision logic within a single scenario. Instead of spreading related conditions across separate Router chains, you can place an If-else module inside a branch of another If-else keeping your logic in one visual flow and making it easier to review and maintain. A sample scenario for Nested If-else and Merge can be found [here](https://eu2.make.com/public/shared-scenario/hEpmbJLswJG/nested-if-else-merge-in-make).

![](https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/2xKHrLnztzBpDrVWd94SG-20260520-093619.png "Nested If-else and Merge")

When you add an If-else module inside an existing If-else branch, Make treats the inner module as a self-contained decision level. Each nested If-Else has its own Merge module, which closes that decision level before the outer flow continues.

**Adding a nested If-else and Merge branch:**

1. Open your scenario and add an **If-else** module where you want the top-level decision.
2. Inside the If or else branch, add another **If-else** module.
3. Configure the inner module's condition and connect any modules that should run in its branches.
4. Add a **Merge** module to close the inner If-else.
5. Continue building the outer branch after the inner Merge.
6. Add a **Merge** module to close the outer If-else.

:::hint{type="warning"}
Each If-Else must have its own Merge module. Make uses the Merge to determine where each decision level ends, so mismatched or missing Merge modules can cause unexpected routing.
:::

:::::ExpandableHeading
## Tutorial: Expense report approval system

In this tutorial, you'll build a scenario that automatically sorts expense report submissions into two paths: immediate approval for low-value expenses, and a Slack notification for expenses that need manual review. All submissions are logged in Google Sheets with their approval status.

You will need:

- A Tally form to submit expense information. Your form should include the following fields: `first name`, `last name`, `date of expense`, `description of expense`, and `amount`.
- A Slack account, to receive notifications of expenses that need additional review for approval.
- A Google Sheet file with the following column titles: `First Name`, `Last Name`, `Date of Expense`, `Description of Expense`, `Amount`, and `Approval`.

![Expense report approval system scenario](https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/Il2qYx3SP8AIptDuo6pMD-20260305-093214.png)

To build the scenario:

**Step 1: Connect to Tally**

::::WorkflowBlock
:::WorkflowBlockItem
Click the giant plus and add a **Tally > Watch New Responses** module.
:::

:::WorkflowBlockItem
Click **Create a webhook**. Enter a webhook name and connect to your Tally account.
:::

:::WorkflowBlockItem
In the **Form ID&#x20;**&#x20;field, select the expense report form you created in Tally.
:::

:::WorkflowBlockItem
Click **Save** to save the webhook, then **Save** again to save the module settings.
:::
::::

Your scenario is now connected to Tally and triggers when a new form is submitted.

**Step 2: Set the If route conditions and configure the flow**

::::WorkflowBlock
:::WorkflowBlockItem
Add an **If-else** module and set the first condition, an expense report value that is above the automatic approval limit. In this example, expenses of $100 or more are above the limit.

- **Label:** Above limit
- **Condition:** Map the Tally field for the amount of the expense and set the condition to great than 100.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/QDuyd04ZguNrIYshp0pca-20260305-100303.png" size="50" width="500" height="521" position="flex-start" alt="First condition - expense amount above the limit" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
In this first condition route, add a **Slack > Send a Message** module.
:::

:::WorkflowBlockItem
Create a connection to your Slack account and select the ID of the person to receive the messages. Your configuration may differ, depending on your Slack setup.&#x20;
:::

:::WorkflowBlockItem
In the **Text** field, enter the message to send regarding the expense report. You can map data from the Tally form in the message.  In this example, the first and last name of the person who submitted the expense report is included.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/621c9cbJsf85qPfgA2jgd-20260305-101332.png" size="50" width="500" height="866" position="flex-start" alt="Configure the Slack module to send a message" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

The If condition route identifies expense report submissions that are $100 or more and sends a Slack message notifying the recipient.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/J_iOCescOxrEfbVGSwRPl-20260305-111545.png" size="80" width="1011" height="159" position="flex-start" alt="Slack message example" showCaption="false"}

**Step 3: Configure the Else route flow**

::::WorkflowBlock
:::WorkflowBlockItem
Click the Else route condition and in the **Label** field enter a name. Click **Save**.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/FlpYg3ZnK_7u3sgPaTKSR-20260305-100828.png" size="50" width="500" height="378" position="flex-start" alt="Set the Else route Label name" showCaption="false"}
:::

:::WorkflowBlockItem
Add a **Tools > Set variable** module.

- **Variable name**: Enter a name for the variable to indicate the status of the approval.
- **Variable value**: Enter a value for the variable, to show that the expense report is already approved in this route.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/_cUfZvQmeswaVe0J-f3qc-20260305-102844.png" size="50" width="500" height="335" position="flex-start" alt="Set a variable to indicate that the expense report is approved." showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

The Else route is configured to identify expense reports that are under the $100 limit and mark them as approved.

**Step 4: Merge the conditions and continue the flow**

::::WorkflowBlock
:::WorkflowBlockItem
After either of the routes, add a **Flow Control > Merge** module.
:::

:::WorkflowBlockItem
Click and hold the Merge module icon to drag and connect it to all routes in the If-else flow.
:::

:::WorkflowBlockItem
Click the Merge module and enter or map the following values for your merge output:

- **Output name:** Approval (to match the field in the Google Sheets file)
- **If 1st condition is true > Output value:** Review required
- **Else > Output value:** Map the value of the variable set in the Else route, `status`

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/ckiyiqOgDRhhInq4QkGw0-20260305-104219.png" size="50" width="500" height="535" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Add a **Google Sheets > Add a row** module. Create your connection to your Google account and select the Google Sheets file you created.

Your values will vary based on where you saved your file, your file name, and the sheet name within the file.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/mqnak1qhplHYrCOJIUo0f-20260305-104800.png" size="50" width="520" height="812" position="flex-start" alt="Google Sheets > Add a row module configuration" showCaption="false"}
:::

:::WorkflowBlockItem
For each Google Sheets column, map the Tally form data and the Merge module output:

- **First Name:** `First name`
- **Last Name:** `Last name`
- **Date of Expense:** `Date of expense`
- **Description of Expense:** `Description`
- **Amount:** `Amount submitted (in dollars)`
- **Approval:** `Approval`

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/V9KOvv-tbCCZYxu0YriPB-20260305-105150.png" size="50" width="522" height="900" position="flex-start" showCaption="false"}
:::

:::WorkflowBlockItem
Click **Save**.
:::
::::

Click **Save** and save your scenario.

When ready, [schedule your scenario](docId:8rWFO_KROhjLePg4qHx3_) to run. Since your scenario starts with a webhook module, the default setting is to run immediately when data arrives.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/dmS5tfvnPYuEBaS51uSgW-20260305-110343.png" size="50" width="500" height="515" position="flex-start" alt="Schedule the scenario to run" showCaption="false"}

When an expense report is submitted, the information is saved in the Google Sheets file and marked with the correct approval value.

![Google Sheets submissions](https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/igy7YCI3Miqcfh-mNMbyK-20260305-110500.png)
:::::

