> ## Documentation Index
> Fetch the complete documentation index at: https://help.cloudtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Caller-Based Routing with Conditions

> Route calls based on region, contact, or other conditions using a condition splitter in your call flow

> [!NOTE]
>
> Learn how to use a condition splitter in your call flow design that will route callers to different branches depending on different data associated with the caller.

**User level:** Admin

***

## The Condition Splitter

A **Condition splitter** step allows the use of contact or call information stored in CloudTalk to decide the route a call will take in the [call flow](/en/articles/3669429-call-flow-designer-guide). You can set logical conditions to filter incoming calls into different subsequent actions. These filtering conditions can be based on details about a caller's phone number, like a country code, or information stored about a saved contact, such as tags, industry, our custom attributes.

### Add a Condition Splitter to Your Call Flow

1\. From the **Dashboard**, click **Numbers**.

2\. In the **My numbers** tab, find the number you want to configure.

3\. Click **+ Configure** (or the flow name, if one exists) in the **Call Flow** column.

![](https://mintcdn.com/cloudtalk/0B2VFDHod1TeIVNA/images/help-center/articles/5763009/4d3eb4302a15-screenshot-2026-08-17-at-12-12-29.png?fit=max\&auto=format\&n=0B2VFDHod1TeIVNA\&q=85\&s=3a63fc0a36d0a072fc8ece4a975903d3)

4\. On the canvas, click the **`+`** button where you want the Condition Splitter to go.

5\. In the step library, under **Routing logic**, select **Condition Splitter**.

![](https://mintcdn.com/cloudtalk/0B2VFDHod1TeIVNA/images/help-center/articles/5763009/94b3ef6ca68b-screenshot-2026-08-17-at-12-14-30.png?fit=max\&auto=format\&n=0B2VFDHod1TeIVNA\&q=85\&s=9729b5e3057fc9909a91b52959c06b63)

The Condition Splitter step appears on the canvas. Click it to open its config panel on the right.

***

### Set Up Conditions

When you open a Condition Splitter, the config panel shows **Condition Splitter settings** with two options:

* **Add new** to create a condition.

* **No other condition is met** checkbox to create a failover branch.

![](https://mintcdn.com/cloudtalk/0B2VFDHod1TeIVNA/images/help-center/articles/5763009/39a8d5eb8500-screenshot-2026-08-17-at-12-16-09.png?fit=max\&auto=format\&n=0B2VFDHod1TeIVNA\&q=85\&s=d0a41bf2bb380be9d88f31bed45ed3f3)

#### Create a condition

1\. Click **Add new**. The panel expands to show three fields:

* **Property**: the data you want to check (e.g., *Call - External number*, *Contact - Tags*).

* **Operand**: the comparison logic (e.g., *starts with*, *contains*, *is equal to*).

* **Value**: the value to match against.

2\. Choose a **Property** from the dropdown.

3\. Choose an **Operand**.

4\. Enter a **Value** (unless the operand is "is set" or "is empty," which don't need one).

5\. Click **Confirm** to save the condition.

![](https://mintcdn.com/cloudtalk/0B2VFDHod1TeIVNA/images/help-center/articles/5763009/e34f0b79744a-screenshot-2026-08-17-at-12-20-13.png?fit=max\&auto=format\&n=0B2VFDHod1TeIVNA\&q=85\&s=7ac9b8fa6aa3df91d40444529b868568)

Each confirmed condition creates a branch on the canvas. The branch card shows a summary of the condition.

![](https://mintcdn.com/cloudtalk/0B2VFDHod1TeIVNA/images/help-center/articles/5763009/de0d480891a6-screenshot-2026-08-17-at-12-21-44.png?fit=max\&auto=format\&n=0B2VFDHod1TeIVNA\&q=85\&s=54ecd31223cc31cdbfc5f59de514f35c)

### Add multiple conditions

Click **Add new** again to create additional conditions. Each one becomes a separate branch.

If you add more than one condition to the **same branch**, calls must meet ALL conditions on that branch to be routed there (AND logic).

### Create a failover branch

Always create a fallback for calls that don't match any condition:

1. Check the **No other condition is met** box.

2. Click **Save**.

Calls that don't match any of your other conditions will flow into this branch.

### Save the step

After setting up all your conditions and the failover, click **Save** in the config panel. Then click **Save** in the top-right corner of the editor to make your flow live.

***

### Build Out Each Branch

Once your conditions are set, add follow-up steps to each branch using the **+** button below it. For example:

* A condition matching French phone numbers (+33) could route to a **Ring to** step targeting your French-speaking group.

* A condition matching VIP tags could route to a **Ring to** step targeting a priority agent.

* The failover branch could route to a general **Ring to** step or **Voicemail**.

***

## Condition Splitter Logic

### Property

Select the data you want to observe about the call. This can be call data or contact data, if the caller is stored as a contact in CloudTalk.

> [!NOTE]
>
> When setting a **Value** for each **Property** type, make sure you enter the data in the right format. Pay attention to letter casing, spaces, and spelling. Ensure phone numbers or prefixes are in E.164 format.

#### Call data

* Call - External number

* Call - Internal number

* Call - Waiting time (in seconds)

#### Contact data

* Contact - Name

* Contact - Title

* Contact - Company

* Contact - Industry

* Contact - Address

* Contact - City

* Contact - ZIP Code

* Contact - State

* Contact - Tags

* Contact - Custom fields

* Contact - Type

### Operand

Choosing an appropriate operand is important for your condition to run correctly. Different operands will be available for different property types.

> [!WARNING]
>
> **Spaces count!** When you tap the space bar, this is included as a character in the match comparison that your operand performs. Take caution, particularly when using **ends with** and **is equal to** operands.
>
> **Call flow not working for these condition types? Check:**
>
> * Did you include a space at the end of your **Value** input?
>
> * Is it possible that a space was saved at the end of the contact's data entries being checked?—If this is a concern for you, we recommend switching to a **contains** operand.

<table>
  <tbody>
    <tr>
      <td>
        **Operand Type**
      </td>

      <td>
        **Logic**
      </td>

      <td>
        **Match Examples**
      </td>

      <td>
        **Use Case Notes**
      </td>
    </tr>

    <tr>
      <td>
        **is equal to**
      </td>

      <td>
        only `TRUE` for an exact match
      </td>

      <td>
        **Contact - ZIP Code** *is equal to* **10100**

        ✅`TRUE`✅

        * 10100

        ❌`FALSE`❌

        * 1010

        * 101000
      </td>

      <td>
        * ⚠️ Beware of spaces included in match comparison

        * Integer values (*for string type values, **contains** should be used*)

        * Tends to have fewer matches
      </td>
    </tr>

    <tr>
      <td>
        **is not equal to**
      </td>

      <td>
        `TRUE` for anything that is NOT an exact match
      </td>

      <td>
        **Contact - ZIP Code** *is not equal to* **10100**

        ✅`TRUE`✅

        * 10101

        * 18000

        * 11000

        ❌`FALSE`❌

        * 10100
      </td>

      <td>
        * Integer values

        - Good for filtering out callers associated with very specific data

        - Tends to have more matches
      </td>
    </tr>

    <tr>
      <td>
        **starts with**
      </td>

      <td>
        `TRUE` for anything that starts with the exact sequence of your **Value**
      </td>

      <td>
        **Call - External number** *starts with* **+420**

        ✅`TRUE`✅

        * +420555500000

        ❌`FALSE`❌

        * +421555500000
      </td>

      <td>
        * Integer or string values

        - Good for creating call branches for different number prefixes
      </td>
    </tr>

    <tr>
      <td>
        **ends with**
      </td>

      <td>
        `TRUE` for anything that ends with the exact sequence of your **Value**
      </td>

      <td>
        **Contact - ZIP Code** *ends with* **51**

        ✅`TRUE`✅

        * 91351

        ❌`FALSE`❌

        * 91350

        * 91331
      </td>

      <td>
        * ⚠️ Beware of spaces included in match comparison

        * Integer or string values

        * Good for filtering numbers, addresses, or custom fields with specific end codes
      </td>
    </tr>

    <tr>
      <td>
        **contains**
      </td>

      <td>
        `TRUE` when the property data contains the full entry of your **Value**
      </td>

      <td>
        **Contact - Tags** *contains* (select tag) **VIP**

        ✅`TRUE`✅

        * VIP

        ❌`FALSE`❌

        * lead

        * vip contact
      </td>

      <td>
        * Preferred option when looking for partial matches, words, or tags

        * More flexible for values that may not be an exact match due to extra words or characters
      </td>
    </tr>

    <tr>
      <td>
        **is set**
      </td>

      <td>
        `TRUE` when there is data saved in CloudTalk for the chosen property type
      </td>

      <td>
        **Contact - Name** *is set*

        ✅`TRUE`✅

        * (caller is a contact saved in CloudTalk)

        ❌`FALSE`❌

        * (caller is NOT a contact saved in CloudTalk)
      </td>

      <td>
        * Used for sorting based on whether or not certain data is saved about a caller
      </td>
    </tr>

    <tr>
      <td>
        **is empty**
      </td>

      <td>
        `TRUE` when there is NOT data saved in CloudTalk for the chosen property type
      </td>

      <td>
        **Contact - State** *is empty*

        ✅`TRUE`✅

        * (caller or contact does NOT have **State** data on their profile)

        ❌`FALSE`❌

        * (caller is a contact saved in CloudTalk and has **State** data on their profile)
      </td>

      <td>
        * Used for sorting based on whether or not certain data is saved about a caller
      </td>
    </tr>
  </tbody>
</table>

***

*Need help or have a question?* Just reach out through our [Support portal](https://support.cloudtalk.io/hc/en-us/requests/new?ticket_form_id=26305535257884) — we’re here for you.


## Related topics

- [Routing & Call Flow Design guide](/en/articles/10559796-routing-call-flow-design-guide.md)
- [Call Flow Designer Guide](/en/articles/3669429-call-flow-designer-guide.md)
- [Skill Based Routing in Call Flow](/en/articles/5802573-skill-based-routing-in-call-flow.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.