Dial Plans
Dial plans let you build visual call routing flows using a drag-and-drop editor. Each dial plan defines how incoming calls are routed through a sequence of steps — such as ringing users, checking schedules, or forwarding to voicemail.
Viewing Dial Plans
Navigate to Dial Plans from the sidebar. Dial plans are displayed in a card view by default, showing a visual preview of each routing flow along with its name and extension number.
Use the toggle in the top-right corner to switch between card view and table view. Both views support pagination and allow you to delete a dial plan or click through to its detail page.
Creating a Dial Plan
- Click New Dial Plan in the top-right corner.
- Enter a Name for the dial plan.
- Click Create.
You'll be redirected to the dial plan editor where you can build your routing flow.
Editing a Dial Plan
Click on any dial plan card or table row to open its detail page with the visual editor.
The Editor
The editor has three areas:
- Node Library (left) — Drag nodes onto the canvas to add routing steps.
- Canvas (center) — The visual flow diagram. Connect nodes by dragging from one node's handle to another.
- Config Panel (right) — Appears when you select a node or connection. Configure the selected element here.
Node Types
The editor palette has eight node types:
- Schedule — Routes calls based on a schedule. Has Open and Closed exits; the call follows whichever path matches the current time (holidays follow the Closed path).
- Internal Extension — Rings an internal target by extension: a user, ring group, call queue, or another dial plan. Exposes a No Answer exit, taken once the target has stopped ringing. (Targeting another dial plan lets you reuse common flows across entry points. The other plan takes over the call, so a node that targets a dial plan has no Timeout and no No Answer exit. Targeting a call queue holds the caller in the queue until its max wait elapses; the No Answer exit is then taken, and it takes precedence over the queue's own timeout behavior. A caller who presses the queue's exit key instead goes where the queue's exit behavior says; the No Answer exit is used for them only when that behavior is None. The exit is also taken when the queue refuses the caller outright (it is full, or less of the team is free than its Allow new callers when setting requires), and when the queue stops holding a caller because the team is no longer staffed enough to reach them. Leave the exit unwired to let the queue's timeout behavior run instead.) How long it rings is described under Which timeout wins below.
- External Number — Rings an external phone number with a configurable timeout. Has a No Answer exit. A call that came in on one of your numbers shows the original caller's number on the external phone, so it can be returned directly; a call that started inside the account shows one of yours.
- Ring All Users — Rings every user in the account simultaneously. Has a No Answer exit.
- Voice App — Routes the call to a voice app (see Voice Apps) (e.g. an AI agent or BYO voice app).
- IVR Menu — Plays an audio prompt and routes the caller based on the digit they press. See IVR Menu below.
- Audio Clip — Plays an audio clip, then continues to the next step. See Audio Clip below.
- Voicemail — Sends the caller straight to a shared voicemail box. Terminal — no exits.
Which timeout wins
Some targets carry a timeout of their own: a ring group and a call queue each have one, and a user has one per step of their Find Me / Follow Me sequence. That timeout governs. An Internal Extension node's own Timeout field does nothing against such a target unless you turn on Override resource timeout in the node panel.
The toggle is on by default for new nodes, so the timeout shown in the editor governs the target. Turn it off to leave the target's own timing alone. Against a target that has its own timing the number is then doing nothing, so the timeout field is disabled and the node shows no timeout on the canvas. The stored number is preserved and becomes visible again if you turn the override back on.
You cannot turn the override on and set the timeout to 0 at the same time. Zero means "skip this node without dialing", which is the opposite of overruling the target's timing. Turning the override on over a node set to 0 raises it to 1 so the editor cannot submit the contradictory pair, and turning the override straight back off puts the 0 back. A node set to 0 keeps its field enabled and keeps showing the 0 on the canvas, because a node that skips does so whatever its target's timing says.
With the override on, the node's value replaces the target's own, whether it is longer or shorter. It is not a limit. The same queue can hold a caller for five minutes through one node and keep its own three minutes when someone dials it directly.
It replaces one thing: how long the caller waits. How long each agent's phone rings, how often a queue repeats its announcements, and when it offers a callback all keep following the target's own settings.
Three details are worth knowing before you rely on it:
- A Find Me / Follow Me sequence is bounded as a whole, not step by step. Set 30 seconds against a sequence of 15s desk, 30s mobile, 20s home, and the caller rings the desk, then rings the mobile for 15 of its 30 seconds, and exits at 30. A device that is still ringing is cut off.
- A value longer than the sequence does nothing. Once every step has rung, there is nothing left to ring, so the sequence ends on its own.
- A queue can run past the value by one ring. A queue's max wait bounds how long the caller waits for an agent to answer, and an agent whose phone is already ringing when it expires is allowed to finish. So 20 seconds means the caller stops waiting at 20, not that they have left the queue at 20.
A target with no timeout of its own — most often a user with no Find Me / Follow Me sequence — always uses the node's value, and the toggle makes no difference to them. The field stays editable and the canvas keeps showing the seconds for such a target, because the number is live either way.
A node that targets another dial plan has no timeout or toggle. The other plan's own nodes decide the timing.
External Number, Ring All Users and IVR Menu nodes have no such target, so their timeouts always apply and they have no toggle.
The docs call this exit No Answer; the editor canvas labels the same exit Timeout. They are the same thing.
Building a Flow
- Drag a node from the library onto the canvas.
- Connect the Start node to your first step by dragging from the Start node's handle.
- Select a node to configure it in the side panel (e.g., pick a schedule or dial target).
- Connect node exits to subsequent steps.
- Click Save when done.
You can save partial flows and come back to finish them later.
Editing a Target Without Leaving the Plan
When a node has a target selected, the side panel shows Open target details. For a user, ring group, call queue, schedule, shared voicemail box or voice app, this opens the target's settings in a window over the editor. Changes you make there save the same way they do on the target's own page. Close the window to return to your plan: anything you had not saved yet is still there, and the nodes show the target's new name and timing.
A dial plan target opens in a new browser tab instead.
To make a target you don't have yet, choose Create new in the target picker. It also opens in a window over the editor and selects the new target in the node.
IVR Menu
An IVR Menu node plays an audio prompt and routes the caller based on the digit they press on their keypad. Use it to build "Press 1 for sales, 2 for support" style flows.
Configuring the Menu
Select a Menu node to edit it in the side panel:
- Prompt — The audio clip played to the caller. Pick from clips uploaded to the account. A menu without a prompt plays nothing, so set one before publishing.
- Timeout (seconds) — How long to wait for a digit after the prompt finishes (1–30 seconds).
- Options — Up to 12 digit-to-step mappings. Each option assigns a digit (
0–9,*, or#) to a node on the canvas, with an optional short label (up to 20 characters, e.g.Sales) displayed next to the digit on the node so the menu is readable at a glance. A menu with no options is allowed (e.g. an announcement that only branches on timeout). - Allow callers to enter an extension — Lets callers dial an extension directly from the menu. Off by default. See Extension Dialing below.
Extension Dialing
With Allow callers to enter an extension turned on, a caller who reaches the menu can key an extension number instead of choosing a listed option. The call is then routed exactly as if they had dialed that extension internally — to a user, ring group, queue, voicemail box, or another dial plan, whatever the extension points at.
This makes every extension in the account reachable by anyone who can reach this dial plan, including extensions you did not list as options. Leave it off on menus that answer calls from the public unless that is what you intend.
Digits are collected as they are typed. The menu waits briefly after each digit to see whether another follows, and that pause is what ends entry — so pressing a menu option takes effect a moment later than it otherwise would. Both still work: on a menu where 1 is an option, pressing 1 alone reaches that option, while typing 1001 reaches extension 1001. Every digit stays available as an option, including * and #.
A number matching no extension in the account follows the Invalid exit, or replays the prompt if that exit isn't connected.
Menu Exits
A Menu node has one exit per configured option, plus two fallback exits:
- Timeout — Followed if the caller doesn't press anything before the timeout elapses.
- Invalid — Followed if the caller presses a digit that isn't in the options list.
Each fallback exit can be routed to another step (for example, an operator extension or voicemail), or routed back to the same Menu node — which plays the prompt again so the caller can try again.
Audio Clip
An Audio Clip node plays an audio clip to the caller, then continues to the next step in the flow. Use it for announcements, disclaimers, or hold messages.
- Audio Clip — The clip to play. A node without a clip is skipped.
- Next — The step to follow once the clip finishes. If the Next exit is left unconnected, the call ends after the clip plays.
Renaming a Dial Plan
Click the dial plan name at the top of the detail page to edit it inline. Press Enter or click away to save.
Extension Number
Each dial plan can have an extension number assigned. Edit it from the field next to the name on the detail page.