Concepts
IVR designer — concepts
How to design call flows in SIVO using the visual drag & drop editor. Node types, simulator and versioning.
The IVR designer is the visual editor where you decide what happens with each inbound call. Used by your admins, not your engineering team.
Basics
A call flow is a directed graph of connected nodes. Each call starts at the start node and progresses based on each node’s actions.
Each flow has:
- A name (e.g.
Customer support). - An active version (you can keep multiple versions and roll back).
- A set of nodes and their connections.
- Session variables accessible from any node.
The 12 node types
| Type | What it does |
|---|---|
| play | Plays audio or text-to-speech. |
| menu | Reads options and captures DTMF (1, 2, 3…). |
| queue | Sends the call to an ACD queue. |
| transfer | Transfers to an extension or external number. |
| condition | Branches by time, holiday, schedule or variable value. |
| hangup | Hangs up (with optional goodbye audio). |
| input | Captures digits into a variable (e.g. ID number, order number). |
| voicemail | Routes to voicemail with email notification. |
| webhook | POSTs to your API to enrich the call with external data. |
| switch | N-way routing based on variable value. |
| function | Runs a custom JS function (secure sandbox). |
| ai_agent | Conversation with a conversational AI agent. |
Session variables
Some nodes produce variables that others can consume:
inputstores the pressed digits.webhookstores the JSON response.ai_agentstores data extracted by the AI.caller_id_number,caller_id_name,did,noware predefined variables always available.
To use a variable in an audio or condition: {{caller_id_number}} or {{verified_email}}.
Interactive simulator
Before publishing, test the flow with the simulator:
- Open the flow → “Simulate” button.
- SIVO renders a fake call with an active dial-pad.
- You press digits in the simulator as if you were a caller.
- The editor highlights in real time which node is executing.
- You can force the time with the clock override to test schedule conditions.
Versioning and rollback
Each time you press Save, a new version is created. The active version is the one receiving calls in production.
To roll back:
- Open the flow → Versions menu.
- Select an older version → “Activate this version”.
- The new active version replaces the current one in under 1 second, with no restart.
Pre-publish validation
Before activating a new version, SIVO validates:
- Orphan nodes: no control flow reaches them. You’re warned.
- Dead references: node pointing to a deleted queue or removed audio.
- Infinite loops: cycles with no possible exit. You’re warned.
- Webhooks: HEAD preflight against configured URLs to verify reachability.
If there are errors, it doesn’t let you activate. If there are warnings, it lets you but shows them.
Assigning to DIDs
An IVR flow makes sense when assigned to a DID (an inbound number):
- Settings → DIDs → your number → IVR.
- Select the flow (you can pick a specific version or “always the active one”).
- Optional: define an alternative flow for out-of-hours tied to a schedule.
The same flow can be used by multiple DIDs simultaneously — useful for regional numbers sharing common logic.
Best practices
- Keep the menu short — 3-4 options max. Caller’s memory.
- Use
condition.scheduleto route out-of-hours before reading the menu. - Name your nodes descriptively (
main_menu,support_queue) — eases debugging. - Log key variables with a
webhookat the end of the flow if you need advanced analytics. - Test in the simulator all paths before publishing.
- Version before big changes — rollback is your safety net.