Skip to main content

Caller-Based Routing with Conditions

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

V
Written by Valeriia Volobrinskaia

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. 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.

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.

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.

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.

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

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.

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.

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.

Operand Type

Logic

Match Examples

Use Case Notes

is equal to

only TRUE for an exact match

Contact - ZIP Code is equal to 10100

TRUE

  • 10100

FALSE

  • 1010

  • 101000

  • ⚠️ Beware of spaces included in match comparison

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

  • Tends to have fewer matches

is not equal to

TRUE for anything that is NOT an exact match

Contact - ZIP Code is not equal to 10100

TRUE

  • 10101

  • 18000

  • 11000

FALSE

  • 10100

  • Integer values

  • Good for filtering out callers associated with very specific data

  • Tends to have more matches

starts with

TRUE for anything that starts with the exact sequence of your Value

Call - External number starts with +420

TRUE

  • +420555500000

FALSE

  • +421555500000

  • Integer or string values

  • Good for creating call branches for different number prefixes

ends with

TRUE for anything that ends with the exact sequence of your Value

Contact - ZIP Code ends with 51

TRUE

  • 91351

FALSE

  • 91350

  • 91331

  • ⚠️ Beware of spaces included in match comparison

  • Integer or string values

  • Good for filtering numbers, addresses, or custom fields with specific end codes

contains

TRUE when the property data contains the full entry of your Value

Contact - Tags contains (select tag) VIP

TRUE

  • VIP

FALSE

  • lead

  • vip contact

  • 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

is set

TRUE when there is data saved in CloudTalk for the chosen property type

Contact - Name is set

TRUE

  • (caller is a contact saved in CloudTalk)

FALSE

  • (caller is NOT a contact saved in CloudTalk)

  • Used for sorting based on whether or not certain data is saved about a caller

is empty

TRUE when there is NOT data saved in CloudTalk for the chosen property type

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)

  • Used for sorting based on whether or not certain data is saved about a caller


Need help or have a question? Just reach out through our Support portal — we’re here for you.

Did this answer your question?