User Guide·Reference

Call Flow Nodes — Complete Reference

Every node type: what it does, when to use it, every field, and what pairs well with it.

About this chapter

This is the complete field-by-field reference for every node type in the visual call flow designer. Every node, every dropdown, every checkbox.

If you're brand new, read chapter 6 first (your first call flow walkthrough) and chapter 10 (overview of the flows page). Come back here when you're ready to learn what every box on the canvas actually does — or as a lookup when you can't remember what a checkbox controls.

Each node section below follows the same shape: what it does, when to reach for it, how to drop it on the canvas, every field explained, what its inputs and outputs are, what other nodes it pairs naturally with, and gotchas pulled straight from the system's behavior.

How the designer works

The call flow designer is at Call Flows → New Flow (or click an existing flow to open it).

Three panels:

  • Left — Node palette. Categories: Routing, Audio, Caller Input, Conditions, Queuing, Recording, Control. Scroll down to find a "Test" section with the testing nodes.
  • Center — Canvas. A 2000×2000 pixel workspace where nodes live. Click and drag empty space to pan, scroll to zoom, use the minimap (bottom-right) to navigate big flows.
  • Right — Properties panel. Click any node to configure it here. On mobile this opens as a modal.

To add a node: drag it from the palette onto the canvas. The node lands wherever you drop it.

To connect two nodes: click the small dot on the bottom edge of the source node, then click the target node. Most nodes have one output dot. Condition nodes (Time, Caller ID, Toggle, Outage Failover, PIN Gate) have two — a green "yes/match/success" dot and a red "no/fail" dot. The IVR Menu has no dots at all — its routes are configured inside the node itself and the designer draws labeled connection lines automatically.

To delete a node or connection: click it and press Delete (or Backspace), or use the trash icon in the properties panel.

To save: the Save button is in the top toolbar. The status indicator next to it shows "Saved", "Unsaved changes", or "Saving…". A flow with unsaved changes shows a warning if you try to leave the page.

To activate a flow: flip the Active toggle in the top toolbar. A flow only handles calls when (a) the Active toggle is on and (b) at least one DID is attached to a DID node inside the flow.

To test a flow: drop a Feature Code node from the Test section of the palette, pick a code in the *800*809 range, save, then dial that code from any extension on your tenant. The flow runs as if a real call came in — but no DID is consumed. You can also use the Echo Test node to check raw audio quality.

How nodes connect (the rules)

Three categories shape what's possible:

  • Entry nodes (DID, Feature Code) have 0 inputs and 1 output. Every flow needs at least one. They never receive a connection from another node — calls start here.
  • Terminal nodes (Hangup, Voicemail in "leave message" mode, Extension, External Number, Ring Group, Queue, Conference, Sub-Flow, Call Park, Dial-by-* nodes) end the call path at that node. They have 1 input and 0 outputs in normal use. Anything connected after them is ignored.
  • Condition nodes have 1 input and 2 outputs. The designer draws one green and one red connection so you can see which path is which:
    • Time Condition — During Hours / Outside Hours
    • Caller ID Check — Match / No Match
    • Toggle Switch — State A / State B
    • Outage Failover — Healthy / Degraded
    • PIN Gate — Success / Fail
  • The IVR Menu is the one many-output node. It has one output per configured digit (0–9, *, #), plus three special handlers — Timeout, Invalid Input, Max Retries — for a possible maximum of fifteen outgoing paths.
  • Pass-through nodes (Play Media, Wait, Call Recording, Live Transcription) have 1 input and 1 output. The call continues to the next node after they run.
  • Go To is special — it jumps to another node without drawing a connection line, keeping the canvas readable.

Node 1: Phone Number (DID)

What it does — Marks the entry point for a call coming in on a specific phone number you own. When someone dials that number, the flow starts at this node.

When to use it

  • Every public-facing call flow starts with at least one DID node — it's how the platform knows which number triggers which flow.
  • Use multiple DID nodes in a single flow when you want two different phone numbers to land in the same routing (a main line and a tracking line, for example).

How to set it up

  1. Drag the Phone Number node from the canvas (it's added differently from the palette — most builders click the Attach DIDs button in the top toolbar or drag an unrouted DID from the DID picker).
  2. Pick the phone number from your tenant's available DIDs.
  3. Connect its output to the first step of your flow (usually a Play Media or Time Condition).

Every field explained

Field What it controls
Phone Number The DID itself. Display-only here — you can't edit the number from the designer.
Location Region and country of the number. Display-only, pulled from the carrier.
Status ACTIVE, PENDING, etc. PENDING numbers may take up to 15 minutes to start routing.

Inputs / Outputs

  • Inputs: 0 (this is an entry point)
  • Outputs: 1

Works well with

  • Play Media right after — greet callers before doing anything else.
  • Time Condition right after — for businesses with after-hours behavior.
  • IVR Menu further down — the most common pattern is DID → Play Media → IVR.

Common gotchas

  • You can't edit a DID's number, CNAM, or E911 from inside the designer. Those live on the Phone Numbers page (the property panel links you straight there).
  • A DID node with no outgoing connection means calls hit a dead end. Callers will hear the platform's default "this number isn't configured" message.
  • A DID can only belong to one active flow at a time. Attaching it here detaches it from any prior flow.

Node 2: Play Media

What it does — Plays an audio file from your Media Library to the caller, then continues to the next node.

When to use it

  • Greeting the caller ("Thank you for calling Smith Plumbing…").
  • Playing a menu prompt before an IVR Menu ("…press 1 for sales, 2 for support…").
  • Playing a goodbye or hold message before a Hangup or Voicemail.
  • Playing a closure announcement on the Outside Hours branch of a Time Condition.

How to set it up

  1. Drag the Play Media node (Audio category) onto the canvas.
  2. Click it. In the right panel click Select Media File.
  3. Pick a file from your Media Library, or follow the link to upload one if the library is empty.
  4. Connect its output to whatever should happen next.

Every field explained

Field What it controls
Select Media File The audio clip to play. The picker lets you search by name or filename, preview each file with a play button, and shows file format (WAV, MP3, GSM) and duration.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 1 (when the file finishes, the call moves on)

Works well with

  • IVR Menu after — the audio tells callers what digits to press; the IVR listens.
  • Hangup after — for a polite "we're closed, goodbye" before disconnecting.
  • Voicemail after — say "please leave a message" then drop them into the box.

Common gotchas

  • If you delete the underlying media file from the library, this node still references the deleted ID and the call silently moves on without audio. Audit your flows after housekeeping.
  • The designer shows the asterisk path under the selected file. If the warning "No media files found" appears, your Media Library is empty — use the link to add one before this node will work.
  • Use the preview button in the picker before saving. Many "wrong file played" bugs are just the wrong WAV being selected.

Node 3: IVR Menu

What it does — Plays nothing on its own (use a Play Media node before it for the prompt), then listens for the caller to press a key on their phone. Each digit you've configured routes to a different destination.

When to use it

  • Classic auto-attendant: "Press 1 for sales, 2 for support, 0 for the operator."
  • Triaging between departments, languages, locations, or after-hours options.
  • Any time you want the caller to choose the path.

How to set it up

  1. Drag the IVR Menu node (Caller Input category) onto the canvas.
  2. Optional but recommended: drag a Play Media node in before the IVR Menu and connect them. That media plays your prompt; the IVR just collects the digit.
  3. Click the IVR Menu node. In the right panel give it a Menu Name (internal label), set Input Timeout and Max Retries if you want non-defaults, then click Configure Digit Routing to open the keypad modal.
  4. In the keypad, click any digit (0–9, *, #) or special handler (Timeout, Invalid, Max Retries) and pick where it routes.
  5. Save. The designer auto-draws labeled connections from the IVR to every configured destination — you don't draw them by hand.

Every field explained

Field What it controls
Menu Name Internal label shown on the node and in the routing modal. Pick something like "Main Menu" or "After-Hours Menu".
Input Timeout How many seconds to wait for the caller to press a digit (3–30 sec, default 5).
Max Retries How many times to replay the prompt and re-listen before falling through to the Max Retries handler (1–5, default 3).
Voice Barge-In If on, the caller can press a key (or say a keyword) during the prompt — no need to wait for it to finish. Requires at least one route to have voice keywords configured.
Label (per route) Friendly label for a digit — e.g., "Sales", "Support".
Voice Keywords (per route) Single words the caller can speak to take that branch (e.g., frankie, hello). Letters only, comma-separated. Optional — leave empty for DTMF-only.
Route Type (per route) What the digit does: Route to Node (a node in this flow), Feature Code (e.g., *83 Paging), Direct to Extension, Custom Destination (saved external number from your destinations list), or External Number (10-digit US number).
Target Node / Feature Code / Extension / External / Custom Destination The actual destination, picked based on the Route Type.
Timeout handler What happens when the caller doesn't press anything within the Input Timeout.
Invalid handler What happens when the caller presses a digit you haven't configured.
Max Retries handler What happens after the menu has replayed the maximum number of times.

Inputs / Outputs

  • Inputs: 1
  • Outputs: one per configured digit (up to 12: 0–9 plus * and #), plus up to 3 more for Timeout, Invalid, and Max Retries.

Works well with

  • Play Media before — the audio actually tells callers what to press. The IVR Menu itself is silent.
  • Ring Group or Queue on a route — "press 1 for sales" → sales queue.
  • Extension on a route — "press 9 for the operator" → reception extension.
  • Sub-Flow on a route — break a deeply nested IVR into smaller reusable flows.
  • Voicemail on the Timeout handler — if the caller is silent, send them to the general mailbox.

Common gotchas

  • The IVR Menu does not play any prompt itself. A common mistake is dragging just an IVR and wondering why callers hear silence — always put a Play Media before it.
  • You can't draw connections from an IVR by hand. The connection lines you see on the canvas are auto-generated from the routes inside the keypad modal. Edit routes inside the modal.
  • Voice Barge-In is greyed out until at least one route has voice keywords. Voice keywords accept letters only — digits and punctuation are stripped.
  • Feature codes routed from an IVR have to actually exist on your tenant. The picker shows what's available (paging groups, *97 voicemail, etc.).
  • If you don't configure the Timeout/Invalid/Max Retries handlers, the call will simply hang up on those edges. Always set at least one fallback.

Node 4: Time Condition

What it does — Checks the current time against a weekly schedule and sends the call down one of two paths: "During Hours" or "Outside Hours".

When to use it

  • Business-hours / after-hours routing.
  • Lunch-hour rerouting.
  • Weekend overflow to an answering service.
  • Stacked conditions: a holiday check before the regular business-hours check.

How to set it up

  1. Drag the Time Condition node (Conditions category) onto the canvas.
  2. Click it. Give it a Condition Name (e.g., "Business Hours").
  3. Pick the Timezone that matches your business location.
  4. Click Edit Time Schedule to open the weekly editor. Enable each day you're open and set open/close times, or click a quick preset (Business Hours = Mon–Fri 9–5, or 24/7).
  5. Draw two connections from the node — one to the "During Hours" destination, one to the "Outside Hours" destination. The designer draws them green and red respectively.

Every field explained

Field What it controls
Condition Name Internal label shown on the node.
Timezone The IANA timezone the schedule is evaluated in. Options include Eastern, Central, Mountain, Pacific, Arizona (no DST), Alaska, Hawaii, and UTC.
Weekly Schedule A per-day on/off toggle plus open/close times. Days are configured individually — enable Monday, set 9:00 to 17:00, etc.
Quick Presets "Business Hours" applies Mon–Fri 9–5. "24/7" enables every day all hours. "Apply Monday's schedule to all days" copies Monday into the other six days.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 2 (During Hours = green, Outside Hours = red)

Works well with

  • Play Media on each branch — different greetings for open vs. closed.
  • IVR Menu on the During Hours branch — full menu when staffed.
  • Voicemail on the Outside Hours branch — go straight to messages.
  • Another Time Condition before this one — for holiday handling (if today is a holiday, route to closed; otherwise check business hours).

Common gotchas

  • The properties panel shows a live status banner ("Currently OPEN" / "Currently CLOSED") so you can sanity-check at a glance. If it says CLOSED during your stated business hours, your timezone is wrong.
  • Time ranges that span midnight (e.g., 22:00 to 02:00) are not directly supported — split them into two ranges on adjacent days.
  • The schedule is per-node. If you have two Time Condition nodes, you maintain two schedules. Most businesses standardize on one and reuse via Sub-Flow.

Node 5: Caller ID Check

What it does — Compares the incoming caller's phone number against a list you maintain, and sends the call down "Match" or "No Match".

When to use it

  • VIP routing — your top customer's number routes straight to a named rep.
  • Spam list — known telemarketers route straight to Hangup.
  • Owner shortcut — your own cell phone calling in skips the menu and goes to voicemail-check.
  • Geo-filtering by area code (use partial numbers if your dialplan supports it; this node matches on the full 10-digit number).

How to set it up

  1. Drag the Caller ID Check node (Conditions category) onto the canvas.
  2. Click it. Give it a Condition Name (e.g., "Owner Calling").
  3. Click Manage Phone Numbers to open the editor.
  4. Add one row per number. Each must be exactly 10 digits — formatting is stripped automatically.
  5. Save. Connect green "Match" to where matching callers go, red "No Match" to everyone else.

Every field explained

Field What it controls
Condition Name Internal label.
Phone Numbers List of 10-digit numbers to match against. The editor cleans formatting (parens, dashes, spaces), validates length, and flags duplicates.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 2 (Match = green, No Match = red)

Works well with

  • Hangup on Match — for blocklisting spam numbers.
  • Extension on Match — for VIP direct-to-rep routing.
  • IVR Menu on No Match — your normal menu for everyone else.

Common gotchas

  • Incoming caller IDs are normalized to the last 10 digits — country codes are stripped before comparison. So +1 501 555 0123 matches 5015550123 in your list.
  • The node has no "wildcard" or "area code only" mode. If you want to match all of 501-555-*, you have to list every number, or pre-filter in another way.
  • Numbers that fail validation (anything other than exactly 10 digits) are quietly dropped on save.

Node 6: Extension

What it does — Sends the call to a single named extension. The extension's existing settings (ring timeout, call forwarding, do-not-disturb, voicemail-on-no-answer) take over from here.

When to use it

  • "Press 0 for the receptionist."
  • A DID that always rings one specific person's desk phone.
  • A No Match path on a Caller ID Check that routes the owner straight to their own extension.

How to set it up

  1. Drag the Extension node (Routing category) onto the canvas.
  2. Click it. Click the Extension picker.
  3. Search by number or name and pick one.

Every field explained

Field What it controls
Extension Which extension to ring. The picker lists all extensions on your tenant with extension number and assigned name.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 in normal use (the extension's own unanswered/busy behavior takes over)

Works well with

  • IVR Menu before — "press 9 for reception" → Extension node for reception.
  • Caller ID Check before — VIPs route directly to a rep's extension.
  • Time Condition before — only ring this person during a specific window.

Common gotchas

  • This node inherits the extension's ring timeout and unanswered-call behavior. If the extension is set to "send to voicemail after 25s", that's what happens here too — you can't override it from the flow.
  • If the extension is later deleted, this node still references the old extension number and the call hits a dead end. Audit when reorganizing extensions.
  • Forward to a specific DID's voicemail by selecting Voicemail node instead; the Extension node does not let you skip ringing.

Node 7: External Number

What it does — Forwards the call to an outside phone number — a cell phone, an answering service, an off-site office.

When to use it

  • Forwarding after hours to a manager's cell.
  • Sending calls to an external answering service or call center.
  • Pointing a tracking DID at a partner's main line.

How to set it up

  1. Drag the External Number node (Routing category) onto the canvas.
  2. Click it. Either pick a saved entry from Custom Destinations (managed elsewhere in your account) or type a 10-digit US number directly.
  3. Set the Ring Timeout and the Caller ID mode.

Every field explained

Field What it controls
Select Custom Destination Optional — pick from your saved external destinations list. Auto-fills the number field.
Destination Number The 10-digit US number to forward to.
Ring Timeout How long to ring the external number before giving up (15–120 sec, default 45).
Caller ID Which number the receiving end sees: Original Caller ID (passes through the actual caller's number), Main Business Number, or Custom Number.
Custom Caller ID Number Visible only when Caller ID is set to Custom. The 10-digit number to present.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 in normal use (when the external party hangs up, the call ends)

Works well with

  • Time Condition before — forward to a cell only during after-hours.
  • Outage Failover before — if the office is dark, forward outside.
  • Toggle Switch before — flippable "forward to my cell" mode controlled by a star code.

Common gotchas

  • The designer flags this with an "external forwarding may incur additional charges" warning — outbound minutes are billed differently than incoming minutes on most plans.
  • "Original Caller ID" passes the caller's number through, which can cause Scam Likely flags on cellular networks. If your forwarded-to phones are getting spam-tagged, switch to Main Business Number or Custom Number.
  • If the external number is unreachable, the call hits a dead end. Pair with Voicemail as a fallback by chaining through an Outage Failover or Time Condition pattern.

Node 8: Ring Group

What it does — Rings several extensions at once or in sequence, by a strategy you choose. First person to pick up gets the call.

When to use it

  • A small sales team where any rep can take the call.
  • A reception pool with three people who all answer the front line.
  • A two-person back-office pair who share an after-hours line.
  • Anywhere you want "ring all our phones, whoever's free takes it".

How to set it up

  1. Drag the Ring Group node (Routing category) onto the canvas.
  2. Click it. Click Select Ring Group. Either pick an existing group or click + Create New to build one inline.
  3. If creating new: name it, pick a strategy, list the extensions, set ring timeout, and choose what happens if no one answers.

Every field explained

Field What it controls
Group Name The name of the ring group.
Ring Strategy Ring All (all phones ring at once), Sequential (rings each phone in order until someone answers), or Round Robin (rotates which phone rings first).
Ring Timeout How many seconds to ring before giving up (5–120, default 30).
Extensions Which extensions are members. Tick each one.
Call Screening If on, the answering agent must press 1 to actually accept the call. Useful for forwarding to cell phones so the cell user can tell it's a work call.
After Timeout What happens if no one answers: Hang Up, Continue to Next Step (lets the call flow's next node take over), Send to Voicemail, Forward to Extension, Forward to Phone Number, or Forward to Another Ring Group.
After-Timeout destination Visible based on After Timeout — pick the voicemail box, extension, external number, or downstream ring group.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 in normal use. Choosing Continue to Next Step on After Timeout makes the node act as a pass-through (it gains an effective output to whatever node is connected next).

Works well with

  • IVR Menu before — "press 1 for sales" → sales ring group.
  • Queue after (via Continue to Next Step) — ring the team for 30s, then fall into a queue if nobody answers.
  • Voicemail after (via After Timeout = Send to Voicemail) — typical "ring the team, drop to mailbox if no one's free".

Common gotchas

  • Ring Groups live as their own entity in your tenant. Editing the group from inside the flow updates it everywhere it's referenced.
  • If an extension in the group is unregistered (phone unplugged), it just doesn't ring — strategy continues with the others.
  • Call Screening adds a "press 1 to accept" gate. Forgetting that option is on is a common source of "the call won't connect" support tickets.

Node 9: Call Queue

What it does — Holds the caller with hold music while waiting for an available agent (queue member), then bridges them to the first agent who picks up.

When to use it

  • Call centers — support, sales, dispatch — where wait time matters and agents log in and out.
  • Anywhere you want position announcements ("you are caller 3 in the queue") and music on hold.
  • Overflow from a Ring Group: ring the team for 30s, then drop into a queue.

How to set it up

  1. Drag the Call Queue node (Queuing category) onto the canvas.
  2. Click it. Click Select Queue to open the modal.
  3. Pick a queue from your queue list (queues are configured under Call Queues in the tenant nav, not from here).
  4. Choose Music on Hold — either the default system hold music or a media file you've uploaded.

Every field explained

Field What it controls
Queue Which queue to drop the caller into. The picker shows queue name, ring strategy, agent count, ring timeout, max wait, and wrap-up time for each.
Music on Hold What plays while the caller waits. Default is the system hold music. Or pick any media file from your library.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 in normal use (the queue handles overflow/timeout internally, configured at the Queue level)

Works well with

  • Ring Group before (with After Timeout = Continue to Next Step) — ring the team, fall into queue if nobody's free.
  • Play Media before — "all of our agents are busy, please hold for the next available representative".
  • IVR Menu before — separate Sales Queue and Support Queue per digit.

Common gotchas

  • All queue settings (members, ring strategy, wrap-up time, max-wait behavior) are configured on the Call Queues page, not in the designer. Editing the queue from here just opens the queue's own dashboard.
  • Agents pause/unpause themselves with star codes *57 and *58. Calls won't go to a paused agent.
  • A queue with zero logged-in agents will play hold music forever (until the queue's max-wait kicks in). Configure a sensible max-wait + overflow destination on the queue itself.

Node 10: Voicemail

What it does — Either drops the caller into a mailbox to leave a message, or hands them the mailbox login prompt so they can check their own messages.

When to use it

  • "Press 4 to leave a message."
  • The Outside Hours branch of a Time Condition.
  • An after-hours DID that goes straight to a shared mailbox.
  • A "press *97 to check messages" feature code flow (using Check Messages mode).

How to set it up

  1. Drag the Voicemail node (Recording category) onto the canvas.
  2. Click it. Pick Voicemail Mode.
  3. Click the Voicemail Box picker and choose a mailbox.
  4. Optionally set a custom Greeting Message.

Every field explained

Field What it controls
Voicemail Mode Leave Message (caller records a message — most common) or Check Messages (caller authenticates and listens to their own mailbox).
Voicemail Box Which mailbox the message lands in. The picker shows extension mailboxes and shared mailboxes by name.
Greeting Message Optional text override of the mailbox's default greeting for this specific call flow. Leave blank to use the mailbox's own greeting.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 (the call ends after the caller hangs up or finishes their message)

Works well with

  • Play Media before — custom intro before the beep.
  • Time Condition before — "after hours, go straight to voicemail".
  • Ring Group / Queue before (via After Timeout) — try to reach a human first.

Common gotchas

  • If the selected mailbox is later deleted, this node fails silently. Audit periodically.
  • "Check Messages" mode prompts the caller for the mailbox password — don't put it on a public DID unless you want everyone trying to brute-force your mailboxes.
  • The "Greeting Message" field is a text override but only takes effect on flows that route through this node — the mailbox's own greeting is still used everywhere else.

Node 11: Conference

What it does — Drops the caller into a shared audio room where multiple participants can talk at once.

When to use it

  • A standing "all-hands" conference room callers can dial into.
  • A scheduled board meeting line with a PIN.
  • A moderated room where an admin needs to start things.

How to set it up

  1. Drag the Conference node (Queuing category) onto the canvas.
  2. Click it. Click Configure Conference to open the full settings modal.
  3. Set the room number (required — must be unique on your tenant) and any PINs you want.
  4. Tick the optional behaviors (record, announce join/leave, wait for admin, mute on entry, music while waiting).

Every field explained

Field What it controls
Conference Name Display name.
Conference Room Number A unique numeric room ID on your tenant. Required.
User PIN Optional. Required for all callers to join.
Admin PIN Optional. Grants the holder admin in-conference controls (lock, kick, leave).
Maximum Participants Cap on simultaneous participants. 0 = unlimited. When the cap is reached, new callers get a busy signal.
Record Conference If on, the conference is recorded to your call recording storage.
Announce Join/Leave If on, a tone plays each time someone joins or leaves.
Wait for Admin If on, the conference is muted/holding until a caller enters with the admin PIN.
Mute on Entry If on, every joiner is muted on arrival (they can unmute with *6).
Music While Waiting If on, plays hold music when only one person is in the room or while waiting for admin.

In-conference star codes (all participants)

  • *6 — mute / unmute yourself
  • *4 / *7 — adjust volume

In-conference star codes (admin, requires Admin PIN)

  • *1 — lock / unlock conference
  • *2 — kick the last participant
  • *8 — leave conference

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0

Works well with

  • PIN Gate before — extra access control if the conference's own PIN isn't enough.
  • Play Media before — welcome message before joining.
  • DID directly — a dedicated phone number that always drops callers into one conference.

Common gotchas

  • The Room Number must be numeric and unique on your tenant. The designer strips non-digits as you type.
  • Without Wait For Admin, the first person in just sits with music on hold by default — that may be the desired behavior or not, depending on your setup.
  • Recording uses the same cloud storage quota as call recordings.

Node 12: Call Park

What it does — Parks the call to a numbered parking slot. The caller hears the slot number and waits with hold music; anyone in your tenant can dial that slot number to pick the call up from any phone.

When to use it

  • "I'll park you while I find Frank" — receptionist parks the caller, then announces over paging that there's a parked call for Frank in slot 701.
  • Shared front-desk handoff between a desk phone and a mobile.

How to set it up

  1. Drag the Call Park node (Queuing category) onto the canvas.
  2. Click it. Click Select Parking Lot and pick a lot you've defined elsewhere.

Every field explained

Field What it controls
Parking Lot Which parking lot to use. Each lot has a name and a slot range (e.g., slots 701–710). The lot's pickup behavior, timeout, and return-to behavior are configured on the Parking Lots page, not here.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 (the picker-upper takes over)

Works well with

  • IVR Menu before — "press 7 to park yourself in slot 1" patterns.
  • Play Media before — "please hold while we transfer you" sets caller expectation.

Common gotchas

  • If no parking lot is selected the node errors silently — make sure to pick one.
  • Parking lots are configured under Parking, Paging, Pickup (chapter 14). The designer just selects which lot to use.
  • Parked calls return to the parker (or another configured destination) after the lot's timeout — that's a property of the lot itself, not this node.

Node 13: Call Recording

What it does — Starts (or stops) recording the call mid-flow. The recording continues until you hit another Call Recording node set to "stop", or until the call ends.

When to use it

  • Recording only the agent portion of the call, not the IVR navigation: place Start Recording right before the Queue or Ring Group node.
  • Stopping the recording before a PIN or credit card entry: Stop Recording before the input collection, Start Recording after.
  • Always-on recording of forwarded-to-external calls.

How to set it up

  1. Drag the Call Recording node (Recording category) onto the canvas.
  2. Click it. Click Configure Recording.
  3. Pick Start Recording or Stop Recording.
  4. If starting, pick format and toggle announce/both-sides.

Every field explained

Field What it controls
Recording Action Start Recording or Stop Recording.
Recording Format WAV (best quality), GSM (compressed, smallest), MP3 (universal). Visible only when Action is Start.
Announce Recording If on, plays "This call is being recorded" before starting. Many states require this.
Record Both Sides If on, records both the caller and the answering party (recommended).

Inputs / Outputs

  • Inputs: 1
  • Outputs: 1 (call continues immediately — recording happens in the background)

Works well with

  • Ring Group or Queue after — record only the agent conversation, not the menu.
  • A second Call Recording node set to Stop, placed before any PIN/PCI input.

Common gotchas

  • A Stop Recording with no active recording is a no-op — the node is silently ignored.
  • Recordings count against your 5 GB tenant storage quota by default.
  • Some U.S. states require all-party consent for call recording. The Announce Recording toggle is there for a reason — leaving it off may put you out of compliance.

Node 14: Live Transcription

What it does — Starts real-time speech-to-text for the call. Once started, transcription continues for the entire rest of the call until hangup.

When to use it

  • Live monitoring of agent calls for QA.
  • Webhook delivery of transcripts to a CRM or analytics tool in real time.
  • Saving transcripts to the call record for searchable history.

How to set it up

  1. Drag the Live Transcription node (Recording category) onto the canvas.
  2. Click it. Click Configure Transcription.
  3. Optional: name the node, pick language, set the save-to-database toggle, and provide a webhook URL.

Every field explained

Field What it controls
Node Label Display name on the canvas.
Language Currently only English (US). More languages are planned.
Save Transcript to Database If on, the full transcript is stored alongside the call record and searchable in call history.
Webhook URL Optional. If set, transcript segments are POSTed to this URL in real time.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 1 (the call moves on immediately — transcription is non-blocking and runs in parallel)

Works well with

  • Queue or Ring Group after — capture only the human portion of the call.
  • Call Recording alongside — recording for audio, transcription for searchable text.

Common gotchas

  • Transcription is on for the entire remainder of the call once started — there's no Stop Transcription node. If you only want part of the call transcribed, you need to place this node carefully.
  • The Vosk engine produces English-only output today. Adding the node on a Spanish-speaking call yields garbage.
  • A live preview page exists at Testing → Transcription — handy for verifying the engine works before you bake this into a production flow.

Node 15: Sub-Flow

What it does — Hands the call off to a different call flow entirely. Useful for keeping individual flows small and reusing logic across multiple parent flows.

When to use it

  • Holiday handling extracted into a reusable "Holiday Schedule" sub-flow that several main flows reference.
  • A complex Sales department routing that should be the same whether reached from the main DID or from an after-hours overflow.
  • Decomposing a sprawling flow into named modules so you can read what's going on.

How to set it up

  1. Drag the Sub-Flow node (Routing category) onto the canvas.
  2. Click it. Click Select Flow.
  3. Pick another active call flow from the list. (You cannot pick the same flow you're currently editing.)

Every field explained

Field What it controls
Target Flow Which call flow to hand the call to. The picker shows every flow on your tenant except the current one, with active/inactive status.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 (control passes to the target flow and doesn't return)

Works well with

  • Time Condition before — route to the Holiday sub-flow on certain days, the regular flow otherwise.
  • IVR Menu before — different sub-flows per department.

Common gotchas

  • The target flow needs an entry point — a node with no incoming connections — for the call to land on.
  • Recursive sub-flow chains (A → B → A) are caught and broken by the platform, but the routing logic is broken anyway. Don't do it.
  • If the target flow is deleted, this node silently fails. Audit when you clean up flows.
  • Sub-flows must be active to handle calls — an inactive target won't run.

Node 16: Hangup

What it does — Ends the call cleanly.

When to use it

  • After a "we're closed" announcement — Play Media → Hangup.
  • After a Caller ID Check Match for spam — Caller ID Check (match) → Hangup.
  • As the default fallback at the end of an IVR Timeout chain.

How to set it up

  1. Drag the Hangup node (Control category) onto the canvas.
  2. Connect anything that should end the call into it. There's nothing to configure.

Every field explained

There are no configurable fields. The node is purely terminal.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0

Works well with

  • Play Media before — say goodbye before hanging up.
  • Caller ID Check (Match) before — drop known spam.

Common gotchas

  • Anything connected after a Hangup is ignored — the call has ended.
  • If you forget to add a Hangup at the end of a dead-end branch, the platform's default disconnect kicks in, which is less graceful than a clean Hangup.

Node 17: Wait / Delay

What it does — Pauses the call for a fixed number of seconds before continuing.

When to use it

  • Adding a one-second pause after a Play Media so the audio doesn't run straight into the next prompt.
  • Testing timing of announcements during development.
  • Rarely useful in production beyond small spacing — most pauses belong inside the audio file itself.

How to set it up

  1. Drag the Wait/Delay node (Control category) onto the canvas.
  2. Click it. Enter the duration in seconds (1–300).

Every field explained

Field What it controls
Wait Duration (seconds) How long to pause before continuing. Range 1–300 seconds.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 1

Works well with

  • Play Media before — short pause for breathing room between announcements.

Common gotchas

  • Callers don't hear anything during the wait — many will assume the call dropped if the pause is long. Keep it short (1–3 seconds in production).
  • Better practice: build the silence into the audio file itself rather than using this node.

Node 18: Go To

What it does — Jumps the call to another node in the same flow, without drawing a visible connection line. Useful for loops and for consolidating paths that would otherwise create a messy spaghetti of overlapping lines.

When to use it

  • Looping back to the Main Menu from a sub-menu's "press * to return" option.
  • Consolidating multiple branches that all should end up at the same Voicemail node, without drawing connection lines that crisscross the canvas.
  • Avoiding unreadable diagrams.

How to set it up

  1. Drag the Go To node (Control category) onto the canvas.
  2. Click it. Click the Target Node picker.
  3. Pick the node to jump to.

Every field explained

Field What it controls
Target Node The node to jump to. Shown by its display name and type.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 visible (the jump target is shown in the node's preview block, not as a drawn line)

Works well with

  • IVR Menu before, IVR Menu as the target — classic "return to main menu" pattern.
  • Multiple terminal branches that should all end at the same Voicemail.

Common gotchas

  • Go To nodes deliberately don't draw connection lines — that's the whole point. The target appears as a label inside the node preview instead.
  • If you delete the target node, the Go To becomes a dead end. The designer's validation warnings flag this.
  • Infinite loops (A → B → A → …) are possible. The platform terminates them after a hop count is exceeded, but the call experience is bad. Always include an exit condition.

Node 19: Toggle Switch

What it does — A two-state switch you can flip from any extension by dialing a star code (default *60), or from the toggle's web UI. Calls hitting this node route to State A or State B based on the current state.

When to use it

  • Day/Night mode controlled by the receptionist with a single button.
  • Manual override during early closures, snow days, or a fire drill.
  • Promotional toggling: "open path" vs. "out-of-stock recording" without editing the flow.

How to set it up

  1. Drag the Toggle Switch node (Conditions category) onto the canvas.
  2. Click it. Give it a Switch Name and pick or accept the Feature Code (one of *60–*66).
  3. Click Configure Toggle Switch for the full editor: label the two states, pick a default, and optionally set custom voice announcements played when the state toggles.
  4. Connect green to State A's destination, red to State B's destination.

Every field explained

Field What it controls
Switch Name Display label.
Quick Presets One-click set of Switch Name + State A/B labels (Day/Night Mode, Open/Closed, Normal/Holiday, Route A/Route B).
Feature Code One of *60–*66. Dialed from any extension to flip the state. Each code can only be used by one toggle switch per tenant.
State A Label Name for the "green" state, e.g., "Day Mode".
State B Label Name for the "red" state, e.g., "Night Mode".
Default State Which state to use the very first time the toggle is referenced (before anyone has flipped it).
Announce State on Toggle If on, plays a confirmation when toggled via the star code.
Custom Announcement (State A / State B) Optional TTS text spoken when toggled to each state. The Ryan voice via Piper TTS is used. Leave blank for the default beep. Each field has a preview button.
Current State Control In-modal buttons that let you set the live state from the web UI without dialing the star code. Shows the currently-set state.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 2 (State A = green, State B = red)

Works well with

  • Time Condition before — automatic during business hours, manual override after hours via the toggle.
  • Two completely different sub-flows for the two states — e.g., "Open" sub-flow vs. "Closed" sub-flow.

Common gotchas

  • Feature codes are limited to *60–*66 to avoid collision with carrier-intercepted codes (*67, *68, *69) and your other star codes (*70-series, *80-series, *90-series). If all seven are taken, you can't add another toggle.
  • The "Default State" only applies the very first time the toggle is evaluated. After that, the current state is sticky and only changes when someone flips it.
  • The current state is shared across the whole tenant — flipping the toggle on extension 101 changes routing for everyone.
  • Custom TTS announcements regenerate audio on save; an empty announcement deletes the saved WAV and the system falls back to the default beep.

Node 20: Dial by Entry

What it does — Prompts the caller to type a phone number, then dials it on their behalf. The caller's phone makes an outbound call from your tenant.

When to use it

  • Personal-assistant style flows: "enter the number you want to call".
  • Internal "dial through" lines for traveling employees.

How to set it up

  1. Drag the Dial by Entry node (Caller Input category) onto the canvas.
  2. Click it. Set Maximum Digits (typically 10 for US), Timeout, and pick which DID is presented as the outbound caller ID.

Every field explained

Field What it controls
Maximum Digits How many digits to collect (1–15). Default 10 for US numbers.
Timeout (seconds) How long to wait for the caller to enter digits (3–30 sec, default 10).
Outbound Caller ID Number Which of your tenant's DIDs is presented to the called party. The caller ID name (CNAM) is inherited from your tenant's default CNAM automatically.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 (when the dialed party hangs up, the call ends)

Works well with

  • Play Media before — your own custom prompt.
  • PIN Gate before — only authorized callers can use the dial-through feature.

Common gotchas

  • This node makes an outbound call billed against your tenant. Without a PIN Gate in front of it, anyone calling your DID can dial anywhere on your dime. Use with caution on public flows.
  • If your tenant has no DIDs, the outbound Caller ID dropdown will be empty and the node errors. Assign a DID first.

Node 21: Dial Extension

What it does — Prompts the caller to type an extension number and rings that extension. Like the receptionist's "extension please" prompt but automated.

When to use it

  • "If you know your party's extension, dial it now."
  • Faster routing for repeat callers who know which extension they want.

How to set it up

  1. Drag the Dial Extension node (Caller Input category) onto the canvas.
  2. Click it. Choose whether to play the built-in "extension" prompt or stay silent (and use your own Play Media before).
  3. Set the extension length, timeout, max attempts, and what to do when the caller enters an extension that doesn't exist.

Every field explained

Field What it controls
Play Prompt Yes - "Extension" (default) plays Asterisk's built-in prompt. No - Silent assumes you played your own prompt before this node.
Extension Length (digits) How many digits make up your extensions (2–6, typically 3 or 4).
Input Timeout (seconds) How long to wait for digit entry (3–30 sec, default 10).
Invalid Extension Action What to do when the caller enters an extension that doesn't exist: Retry (allow re-entry), Route to Operator, Send to Voicemail, or Hangup.
Operator Extension Visible only when Invalid Action is Operator. Pick which extension is "the operator".
Voicemail Box Visible only when Invalid Action is Voicemail. Pick a mailbox.
Maximum Attempts How many times to allow retry before taking the invalid action (1–5, default 3).

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 (the dialed extension's behavior takes over)

Works well with

  • Play Media before (with Play Prompt = No) — for a custom-recorded "enter your party's extension".
  • IVR Menu alongside — "press 1 for sales, 2 for support, or dial your party's extension".

Common gotchas

  • The node validates against your tenant's extension list — entering 999 when you don't have extension 999 triggers the Invalid Action.
  • The "Retry" Invalid Action loops up to Maximum Attempts, then falls through. Make sure the downstream connection handles that fall-through, or chain a fallback.
  • This routes with full feature support — DND, call forwarding, find-me/follow-me, and voicemail-on-no-answer all apply at the destination extension.

Node 22: Dial by Name

What it does — Caller spells the start of an extension owner's first or last name on the keypad (e.g., 7-2-6 for "Ron") and the system reads back matching names so the caller can pick one.

When to use it

  • A company directory feature on a public DID.
  • Larger offices where callers may not know extension numbers but do know who they want.

How to set it up

  1. Drag the Dial by Name node (Caller Input category) onto the canvas.
  2. Click it. Configure how the search behaves.
  3. Important: for an extension to appear in the directory, edit the extension and turn on Include in Directory, plus set First Name and Last Name. The node only searches extensions that have done this.

Every field explained

Field What it controls
Search By Last Name, First Name, or Either Name.
Minimum Characters to Match How many keypad letters the caller must enter before searching (1–5, typically 3).
Name Playback Method Text-to-Speech (automatic) — uses TTS; Recorded Names (required) — only includes extensions with a recorded-name audio uploaded; Recorded with TTS Fallback — recorded if available, TTS otherwise.
No Match Action What to do when no names match: Retry Search, Route to Operator, or Exit Directory.
Maximum Attempts How many tries the caller gets before No Match Action kicks in (1–5, default 3).

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 (when the caller picks a match, the call is routed to that extension)

Works well with

  • IVR Menu before — "press 5 for the company directory" → Dial by Name.
  • Play Media before — context for the caller before they start spelling.

Common gotchas

  • Only extensions with "Include in Directory" turned on and First/Last name set will show up. If your directory feels empty, that's why.
  • "Recorded Names (required)" mode silently excludes extensions that don't have a recorded name audio. Use TTS Fallback if you want broader coverage.
  • The keypad mapping is the standard ABC=2, DEF=3, etc. Some callers find this confusing — make sure the Play Media before this node explains it.

Node 23: PIN Gate

What it does — Asks the caller for a numeric PIN before continuing. Correct PIN → success path. Too many wrong attempts → fail path.

When to use it

  • Restricted features (employee-only conferences, dial-through, voicemail-check).
  • Quick-and-dirty access control for after-hours menus.

How to set it up

  1. Drag the PIN Gate node (Conditions category) onto the canvas.
  2. Click it. Enter the PIN Code (4–8 digits) and Max Attempts.
  3. Connect green "success" to the protected destination, red "fail" to where failed attempts go (usually Hangup).

Every field explained

Field What it controls
PIN Code The numeric PIN the caller must enter (4–8 digits). Non-digit characters are stripped automatically.
Max Attempts How many wrong tries the caller gets before routing to fail (1–5, default 3).

Inputs / Outputs

  • Inputs: 1
  • Outputs: 2 (Success = green, Fail = red)

Works well with

  • Dial by Entry after — PIN-protect your dial-through feature.
  • Voicemail (Check Messages) after — gate the mailbox login.
  • Conference after — restricted board-meeting access.

Common gotchas

  • The PIN is stored in plain text inside the flow's configuration. Anyone with permission to edit the flow can read it. Don't use it for anything that needs real security — pair with extension-level authentication for that.
  • A 4-digit PIN has 10,000 combinations — brute-forcing is feasible. Use Max Attempts = 3 and connect the fail path to Hangup.
  • The PIN Gate node is auto-initialized with default config when first dropped — review the values before deploying.

Node 24: Outage Failover

What it does — Monitors registration status of one or more extensions. If they're offline for the grace period, calls hitting this node route to the "Degraded" path; once they come back online for the recovery period, routing returns to the "Healthy" path.

When to use it

  • Office internet went down — automatically forward calls to a backup answering service.
  • Cell-based fallback for a small office whose desk phones are unreachable.
  • Auto-reroute when a key extension goes offline (no manager? send to voicemail).

How to set it up

  1. Drag the Outage Failover node (Conditions category) onto the canvas.
  2. Click it. Click Configure Outage Failover.
  3. Name the monitor, pick the extensions to watch, set the check logic, the grace and recovery periods, and any email recipients to notify on state change.
  4. Connect green "Healthy" to the normal path, red "Degraded" to the fallback.

Every field explained

Field What it controls
Failover Name Display label.
Extensions to Monitor Which extensions count toward the health check. Click each one to add/remove.
Check Logic All Must Be Online (route fails if ANY monitored extension is offline) or At Least One Online (route fails only if ALL are offline).
Grace Period (minutes) How long an extension must be offline before flipping to Degraded (1–60, default 5).
Recovery Period (minutes) How long extensions must be back online before flipping back to Healthy (1–60, default 5). Prevents flapping.
Email Notifications Toggle to send an email when the state changes.
Email Recipients Comma-tagged list of email addresses.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 2 (Healthy = green, Degraded = red)

Works well with

  • Ring Group on Healthy — normal office routing.
  • External Number on Degraded — forward to cell, off-site office, or answering service.
  • Voicemail on Degraded — at least take messages if no one can pick up.

Common gotchas

  • "Online" here means the extension is registered with Asterisk. A phone that's powered on but unable to reach the SIP server counts as offline.
  • Grace and Recovery periods prevent flapping during brief network blips. Setting them to 1 minute each means every fleeting WiFi hiccup flips routing — usually a bad idea.
  • The state is global to the node — every call hitting this node sees the same Healthy/Degraded state at that instant.
  • Email notifications go to the addresses you list here only — they don't broadcast to your whole tenant.

Node 25: Feature Code / Echo Test

These two nodes live under the Test section of the palette and exist to make development and audio troubleshooting easier without burning a real DID.

Feature Code

What it does — An entry point you reach by dialing a star code from any extension on your tenant. Dropping this in lets you test a flow without attaching a real phone number.

How to set it up

  1. Drag the Feature Code node (Test section, below the main palette) onto the canvas.
  2. Click it. Pick a code from the *800–*809 range. Codes already in use on this flow show as disabled.
  3. Connect its output to the start of the logic you want to test.
  4. Save. From any extension, dial the code (e.g., *801) to run the flow.

Every field explained

Field What it controls
Feature Code One of *800 through *809. Tenant-wide unique within a single flow.

Inputs / Outputs

  • Inputs: 0 (entry point)
  • Outputs: 1

Common gotchas

  • Available codes are limited to *800*809 (ten total). The picker disables ones already used elsewhere in this flow.
  • The flow must still be Active for the feature code to work — same rule as DID entry points.

Echo Test

What it does — Plays back whatever the caller says, with a tone, so you can hear if there's audio lag, packet loss, or codec issues.

How to set it up

  1. Drag the Echo Test node (Test section) onto the canvas.
  2. There is nothing to configure.
  3. Connect it after a Feature Code or DID — typically Feature Code (*809) → Echo Test.
  4. Save, then dial the feature code, speak, and listen.

Every field explained

There are no configurable fields.

Inputs / Outputs

  • Inputs: 1
  • Outputs: 0 (the caller hangs up to end)

Common gotchas

  • Use this when troubleshooting "people sound choppy" complaints — if your own voice echoes back cleanly, the carrier or remote leg is the culprit; if it echoes back choppy, your local network or codec is.
  • A faster alternative is the global *43 feature code, which runs the same test without needing a node on a flow.

Five patterns that cover most small-business setups.

Recipe 1 — Basic auto-attendant

DID → Play Media (greeting + menu prompt) → IVR Menu
                                              ├─ 1 → Ring Group (Sales)
                                              ├─ 2 → Queue (Support)
                                              ├─ 0 → Extension (Reception)
                                              └─ Timeout / Invalid → Voicemail (General)

The single most common flow for a small business. The greeting media has the menu options baked in ("press 1 for sales, 2 for support, 0 for reception"). The IVR routes based on the keypress.

Recipe 2 — Business hours + after-hours

DID → Time Condition (Business Hours)
        ├─ During Hours (green) → Play Media (open greeting) → IVR Menu → ...
        └─ Outside Hours (red)  → Play Media (closed greeting) → Voicemail (General)

Add a second Time Condition before this one to check for holidays first — that one's During Hours branch goes to a holiday greeting and Voicemail, its Outside Hours branch continues into the schedule-based check.

Recipe 3 — Sales / Support split

DID → Play Media → IVR Menu
                     ├─ 1 → Ring Group (Sales Team)  → After Timeout: Voicemail (Sales)
                     ├─ 2 → Queue (Support)          → After Max Wait: Voicemail (Support)
                     └─ 9 → Extension (Receptionist) → unanswered: Voicemail (Reception)

The Sales side uses a Ring Group with After Timeout set to Send to Voicemail (Sales mailbox). The Support side uses a proper Queue with hold music and position announcements. The operator option drops to a single person.

Recipe 4 — Voicemail-only

DID → Play Media ("thanks for calling, please leave a message") → Voicemail (General)

For tracking numbers, marketing campaigns, or numbers you don't intend to answer live. As simple as a flow gets.

Recipe 5 — Ring group with queue overflow

DID → Play Media (greeting)
       → Ring Group (Sales)  [After Timeout = Continue to Next Step, 30s]
       → Play Media ("please hold for the next available agent")
       → Queue (Sales)

Ring the whole sales team for 30 seconds. If nobody picks up, drop into a proper queue with hold music until an agent frees up. Pair the Queue's own max-wait behavior with a Voicemail destination so callers don't wait forever.

Bonus — Day/night toggle override

DID → Toggle Switch (Day/Night, *60)
        ├─ State A "Day Mode"   (green) → IVR Menu (full menu)
        └─ State B "Night Mode" (red)   → Voicemail (General)

The receptionist dials *60 from any extension at close-of-business to flip into Night Mode, and again the next morning to flip back. No editing the flow required.