Skip to content

Call Routing Setup Guide

This guide walks through configuring inbound and outbound call routing end-to-end. After completing these steps, external callers will reach the right destinations, and users will be able to make outbound calls through configured trunks.

For messaging (SMS and WhatsApp) setup, see the Messaging Setup Guide.


How Calls Flow Through the System

Before diving into configuration, here is the high-level picture:

Inbound: An external call arrives on a trunk, matched to a DID, which is linked to an inbound route. The inbound route uses a schedule (time range group) or office mode to decide which action script to run. The action script sends the call to a destination: an IVR voice menu, a queue, a hunt group, an extension, voicemail, or another action.

Outbound: A user dials a number. The system matches it against outbound route patterns. The matching route determines which trunk carries the call and what caller ID is presented.

INBOUND
Trunk -> DID -> Inbound Route -> Schedule/Mode check
-> Action Script -> IVR / Queue / Hunt Group / Extension
OUTBOUND
User dials number -> Pattern match -> Outbound Route
-> Trunk -> Provider

You can visualize configured inbound flows using the Call Flow Diagram tool.


Inbound Call Setup

1. Verify Trunks and DIDs

Trunks (connections to your SIP provider) and DIDs (your phone numbers) are typically configured by the system administrator.

Trunks: Configuration > Communications Settings > Trunks

Verify that at least one trunk is configured and registered with your SIP provider.

DIDs: Configuration > Communications Settings > DIDs

Verify that your phone numbers are listed. In Multi Tenant, DIDs must be assigned to the tenant before they can be used in inbound routes.

2. Create User Extensions

Every user who will receive calls needs an extension.

Where: Tenant > Users > User Extensions

  1. Click Add Extension
  2. Set the extension number, name, email, and password
  3. Configure voicemail settings if the user should have a mailbox
  4. Save

Repeat for all users. For bulk setup, use CSV Upload or Directory Sync.

3. Create Schedules (Time Range Groups)

Schedules define when things happen - business hours, after hours, holidays, lunch breaks. You will reference these from inbound routes and routing conditions.

Where: Tenant > PBX Features > Schedules

Common schedules to create:

SchedulePurposeExample
business-hoursNormal operating hoursMon-Fri 9:00-17:00
after-hoursEverything outside business hoursUse as the fallback
holidaysCompany holidaysSpecific dates (Dec 25, Jan 1, etc.)
tl-allhoursAlways matches (built-in)Catch-all for the last route in a group
  1. Click Add
  2. Enter a Name (no spaces) and a Descriptive Name
  3. Use the Add button to define one or more time ranges (day of week, hours, specific dates)
  4. Save

4. Create Voice Menus (IVR)

An IVR greets callers and routes them based on key presses (“Press 1 for Sales, 2 for Support…”).

Where: Tenant > PBX Features > Voice Menus (IVR)

  1. Click Add
  2. Enter a Name and select or record an Announcement (the greeting callers hear)
  3. Configure key press actions:
    • Each key (0-9, *, #) can route to an extension, queue, another IVR, voicemail, feature code, or external number
    • Set a No Input action for callers who don’t press anything
    • Set an Invalid action for unrecognized key presses
  4. Under Options, configure wait times and retry behavior
  5. Save

5. Create Queues (Optional)

Queues distribute incoming calls to a group of agents. Use queues when multiple people should handle calls for a department or function.

Where: Tenant > Contact Center > Queues

  1. Click Add
  2. Enter a Queue Name and Description
  3. Set the Ring Strategy (ring all, round robin, least recent, etc.)
  4. Add Static Members (extensions that are always in the queue) or use Dynamic Agents for login/logout
  5. Configure overflow behavior: what happens when the queue is full, no agents are available, or the caller waits too long
  6. Save

6. Create Hunt Groups (Optional)

Hunt groups try a list of extensions in sequence or simultaneously. They are simpler than queues - no agent login, no queue metrics, no hold music announcements.

Where: Tenant > PBX Features > Hunt Groups

  1. Click Add
  2. Enter a Name and select a Ring Strategy
  3. Add extensions to the hunt group
  4. Set a Failover Destination for when no one answers
  5. Save

7. Create Inbound Routes

Inbound routes connect your DIDs to the destinations you have configured above.

Where: Tenant > Routing > Inbound Call Routes

There are two types of inbound routes:

Time-Based Routes (most common)

Use schedules to route calls differently based on time of day, day of week, or specific dates.

  1. Click Add and choose Time Based
  2. Select the DID
  3. Add routes using the Add Route button. Each route is a schedule + action pair:
    • When: Select a schedule (e.g., “business-hours”)
    • Run action: Select an action script and its target (e.g., “tl-ivr” pointing to your IVR, or “tl-queue” pointing to your queue)
  4. Add a catch-all route at the bottom using tl-allhours for the after-hours destination (e.g., voicemail or a night IVR)
  5. Save

Example: typical business setup

OrderWhenActionTarget
1holidaystl-ivrholiday-greeting
2business-hourstl-ivrmain-menu
3tl-allhourstl-voicemailoperator-mailbox

Routes are evaluated top to bottom. The first matching schedule wins. Always put tl-allhours last.

Operator-Managed Routes

Use the current office mode (Day/Night/Temporary) instead of schedules. An operator can switch modes by dialing a feature code (604 by default) or from the web interface.

Where: Day/Night Mode to set the current mode

8. (Optional) Add Routing Conditions

Routing conditions add schedule or mode checks at points deeper in the call flow - inside IVR menus, as hunt group failover targets, or chained together for complex decision trees.

Where: Tenant > Routing > Routing Conditions

  1. Click Add
  2. Choose a Condition Type: Schedule or Office Mode
  3. Set the If Matches destination and the If No Match destination
  4. Save

You can now use this routing condition as a target in IVR menus, hunt groups, or other routing conditions.

9. Verify Inbound Routing

After setup, test by calling each DID and verifying the call reaches the expected destination.

Use the Call Flow Diagram to visually trace how calls route through your configuration.

If this doesn’t workCheck
Calls don’t arrive at allTrunk is registered; DID is assigned to the tenant; provider is sending calls to the correct trunk
Wrong destinationInbound route schedule order (first match wins); time zone on the route group matches your location
IVR plays but key presses don’t workIVR actions are configured for the pressed keys; “No Input” and “Invalid” actions are set
Queue rings but no one answersExtensions are added as static members or agents are logged in; devices are registered
After-hours routing not workingtl-allhours is the last route in the group; schedule time ranges are correct

Outbound Call Setup

1. Verify Trunks

At least one trunk must be configured and registered for outbound calls.

Where: Configuration > Communications Settings > Trunks

2. Create Outbound Routes

Outbound routes match dialed numbers to trunks.

Where: Tenant > Routing > Outbound Call Routes

  1. Click Add
  2. Enter a Route pattern:
    • _NXXNXXXXXX - matches standard 10-digit North American dialing
    • _1NXXNXXXXXX - matches 11-digit (1 + area code + number)
    • _011. - matches international calls (011 + any digits)
    • _911 or _9XX - emergency numbers
  3. Set the Category: Emergency, Restricted, or Unrestricted
  4. Select the Action script (typically a default Thirdlane outbound action) and the Trunk to use
  5. Save

Route categories control who can dial what:

CategoryWho can use it
EmergencyAll extensions, always
UnrestrictedExtensions with “All calls” or “Outbound calls” permission
RestrictedOnly extensions with “All calls” permission

Extension dialing permissions are set in the User Extension form.

3. Configure Caller ID (Optional)

Caller ID can be set at multiple levels. The system uses the most specific one available:

  1. Extension level - CID Number on the User Extension form (per-user caller ID)
  2. Outbound route level - some action scripts accept a caller ID parameter
  3. Trunk level - the trunk’s caller ID is used as the default

4. Set Dialplan Variables (Optional)

Two global variables affect outbound dialing behavior:

Where: Configuration > Communications Settings > Dialplan Variables

VariablePurposeDefault
DIALOUTDigit users must press before external numbers (e.g., “9” for outside line)Empty (no prefix required)
INTERNATIONAL-PREFIXCountry-specific international dialing prefixEmpty (set to “011” for US)

5. Configure Dialing Permissions (Optional)

Restrict which extensions can make which types of calls.

System-level permissions: Configuration > Communications Settings > Call Permissions > Outbound

Tenant-level permissions: Tenant > Routing > Call Permissions > Outbound

6. Verify Outbound Calling

Test by placing calls from different extensions to internal numbers, local numbers, long distance, and international (if configured).

If this doesn’t workCheck
”All circuits busy” or no routeOutbound route pattern matches the dialed number; trunk is registered
Wrong caller ID shownCID set on extension, outbound route, or trunk
User cannot dial external numbersExtension’s dialing permission category allows the route category
International calls failINTERNATIONAL-PREFIX variable is set; an outbound route matches the international pattern

Putting It All Together

A complete tenant setup typically follows this order:

  1. Trunks and DIDs (system admin) - connections to your provider and your phone numbers
  2. User Extensions - create all users
  3. Schedules - define business hours, holidays
  4. Greetings - record or upload IVR announcements
  5. Voice Menus (IVR) - build the menu trees callers navigate
  6. Queues and/or Hunt Groups - set up call distribution for teams
  7. Inbound Routes - wire DIDs to schedules and destinations
  8. Outbound Routes - configure dialing patterns and trunk selection
  9. Routing Conditions (if needed) - add schedule/mode checks deeper in the call flow
  10. Test - call in, call out, verify all paths

Use the Call Flow Diagram to review the resulting configuration visually before going live.