Call Flows — the IVR builder
A call flow is how you turn "a call came in" into "the right person helped them." It's a visual script Orbit follows for every call — you drag blocks onto a canvas and connect them, no code.
What you'll build with it — real examples:
- Route by need: "Press 1 for Sales, 2 for Support" → send each to the right team.
- After-hours: outside business hours, play a "we're closed" message and offer a callback instead of ringing an empty floor.
- Take a payment safely: collect a card number with the recording masked (PCI).
- Screen outbound: on a campaign, only connect an agent when a human answers.
- Reusable pieces: build an "identify the caller" mini-flow once and reuse it across every flow (a module).
Why it's worth doing well: one flow change updates every call instantly; a good flow shortens queues, protects sensitive data, and frees agents from routing by hand.
Menu path: Routing → Call Flows.
Each flow has a type and a published/draft status. The "Main Inbound IVR" is the entry flow.
1. Key ideas before you build
-
A flow is a graph. Each block has one or more outputs (e.g. Success, Error, timeout, Pressed 1, Pressed 2). You draw a line from an output to the next block. The call walks the graph from the Entry block, following whichever output matches what happened.
-
Flow types. A flow's type says when it runs. The most common is Inbound, but flows also power the experiences around a call:
Flow type Runs when… Inbound A call arrives from outside (the main IVR). Customer Queue A caller is waiting in a queue (music + position announcements). Customer Hold / Agent Hold Either party is put on hold. Customer Whisper / Agent Whisper Plays just before the two parties are connected. Agent Disconnect Recovery Runs if the agent drops, to recover the caller. Module A reusable mini-flow you can call from other flows. Pick the type first — and pick it rightA flow's type isn't just a label: it determines which blocks are even available on the palette (a Whisper flow doesn't offer Transfer to Queue, and so on). You can't convert an Inbound flow into a Queue flow later — you'd rebuild it from scratch. Choose the type deliberately when you create the flow.
-
Voice only. Orbit flows are voice — there are no chat/task/email flow types to worry about.
-
Publish to use. A flow is a draft until you publish it. A phone number (Telephony) points at a published flow. Publishing also creates a version you can roll back to if a change misbehaves.
2. The editor
Open a flow (or Create Flow) to land in the visual editor.
The drag-and-drop editor: block palette on the left, canvas in the middle, a minimap bottom-right, and the property panel on the right when a block is selected.
The editor has five parts:
| Area | What it's for |
|---|---|
| Block palette (left) | Every block you can add, grouped into 7 categories (Interact, Set, Check, Analyze, Logic, Integrate, Terminate). Search by name at the top. |
| Canvas (center) | Drag blocks here and connect their outputs to the next block. Zoom/pan with the on-canvas + / − / fit / lock controls; a minimap (bottom-right) shows the whole flow. |
| Property panel (right) | Appears when you click a block — every setting for that block. This is where the real configuration happens (covered block-by-block below). |
| Toolbar (top) | The flow's name + type + published/draft badge, the editing and TTS controls, and the save/publish actions (detailed below). |
| Status bar (bottom) | Block count, connection count, validity (Valid / errors / warnings), and the current zoom level. |
The toolbar, left to right
| Control | What it does |
|---|---|
| ← Back | Return to the Call Flows list. Next to it: the flow name, a type badge (e.g. inbound), and a Published / Draft badge. |
| Undo / Redo | Step backward/forward through your edits. |
| Copy / Cut / Paste / Duplicate | Standard clipboard actions on the selected block(s). |
| Kokoro | The TTS engine used to speak prompts (the default local voice engine). |
| Voice | The voice used for spoken prompts (pick from the engine's voices). |
| Code | Open the flow's underlying JSON in a viewer. Use it to copy and share a flow (paste it to a colleague or into a ticket), review exactly what a block is configured to do, or diff two flows. It's the flow's portable, shareable source. |
| Unsaved changes | Appears when the canvas differs from the last save — a reminder to Save. |
| Validate | Check the flow for problems (unwired outputs, unreachable blocks, misconfigured fields) before publishing. |
| Save | Save your work as a draft (does not affect live calls). |
| Publish / Unpublish | Publish makes the flow live for calls (and creates a version you can roll back to); Unpublish takes it back to draft. |
How to build: drag a block from the palette onto the canvas → click it to open its property panel on the right → fill the settings → drag from one block's output handle to the next block's input → Validate → Save → Publish.
3. Common tasks
Quick recipes for the things you'll do most. Each starts from Routing → Call Flows.