> For the complete documentation index, see [llms.txt](https://docs.rootcause.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rootcause.ai/more-details/applications/application-modules/conditional.md).

# Conditional

> Route data to different branches based on conditions.

Routes a frame down the first branch whose condition holds.

Each branch owns an out-port minted with it, so wiring a branch is wiring its port. Branches are tried in order and exactly one fires; when none match, nothing is emitted on any branch port and `else` signals instead. A branch that does not fire emits nothing at all, which is what lets a downstream module with a required in-port be skipped rather than run on an empty frame.

## At a glance

|                          |                        |
| ------------------------ | ---------------------- |
| Module type              | `Conditional`          |
| Category                 | Data Processing        |
| Default tier             | `reactive`             |
| Runs on                  | `reactive`, `durable`  |
| Starts a flow            | no                     |
| Holds a body             | no                     |
| Keeps state between runs | no                     |
| Available in             | every application type |

## Parameters

### `branches`

`ConditionalBranch[]` · required · defaults to `[{"id":"<minted per module>","label":"Branch 1","expression":""}]`

The branches, tried in order; each owns the out-port minted with it.

## Inputs

| Port    | Kind        | Required | Description                                                                                                                           |
| ------- | ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `on`    | `event`     | no       | Implicit on every module that does not itself start a flow: wire an event here to make this module the start of what that event runs. |
| `input` | `dataframe` | yes      | The frame to route.                                                                                                                   |

## Outputs

| Port                | Kind        | Connects to           | Description                                              |
| ------------------- | ----------- | --------------------- | -------------------------------------------------------- |
| `branch_<branchId>` | `dataframe` | `dataframe`, `signal` | The input frame, on the port of the branch that matched. |
| `else`              | `signal`    | `signal`              | Fires when no branch matched.                            |

***

[← All application modules](/more-details/applications/application-modules.md)
