> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Classical IVR

> Build deterministic keypad menus with WAV recordings, identifier collection, working hours and team transfers.

Classical IVR runs a saved workflow when an assigned number receives a call. Key presses select explicit branches; a phone agent does not interpret them or rewrite your recordings.

## Enable and create

1. Open **Settings → Voice & Telephony** and enable telephony.
2. Turn on **Enable Classical IVR** on the same settings page. This makes the IVR trigger and nodes available in Workflows.
3. Open **Channels → Phone**. The page contains **AI phone agents** followed by **Classical IVR**. Use the Classical IVR section to manage workflows, recordings and phone-number assignments. This section is hidden while Classical IVR is disabled.
4. Open the **WAV recordings** tab to upload recordings. In the **Workflows** tab, select **Create IVR**. The editor starts with the **IVR Incoming Call** trigger.
5. Build the flow, save a version and activate it.
6. Use **Test call** in the **Workflows** tab before assigning a phone number. After testing, use the searchable **Phone numbers** selector on the workflow row to assign one or more numbers. The selector shows each number’s name and phone number, and you can search by either. Deselect a number to remove its assignment. Numbers assigned to another IVR are labeled; selecting one moves it to this IVR.

Only verified phone numbers can be assigned. Each phone number can have only one inbound destination: an IVR or an AI phone agent. Numbers assigned to a phone agent cannot be selected for an IVR until you unassign them from that agent, and vice versa. **Settings → Phone Numbers → Inbound destination** shows the assigned IVR or agent name. Assignment changes display **Applying routing…** while they are saved and applied to incoming calls.

The **IVR Incoming Call** trigger runs only for calls to numbers assigned in the workflow row’s **Phone numbers** selector. It does not subscribe to other inbound calls, outbound calls or AI phone-agent calls. The workflow list shows each IVR’s assigned numbers in a scrollable table with 10 workflows per page. Use the page controls below the table to browse additional workflows.

You need workflow read permission to view flows and recordings, and workflow write permission to upload recordings, edit flows or start a test call. Assigning a number also requires voice-channel settings write permission.

<Warning>
  A browser test runs the active flow, including its lookup and session actions. Team transfers ring real available teammates. Use a test organization or test teams when you need isolation.
</Warning>

Turning Classical IVR off preserves workflows, recordings and number assignments. New calls use the number’s usual routing until Classical IVR is enabled again. Changing this setting requires Voice & Telephony write access.

## Classical IVR nodes

| Node               | Purpose                                                                            | Next step                                                        |
| ------------------ | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| Play WAV recording | Play an uploaded recording without changing its words                              | Branch on `completed` or `error`                                 |
| Keypad Menu        | Collect one allowed key                                                            | Branch on `outcome` and `digits`                                 |
| Collect Digits     | Collect an identifier or callback number                                           | Confirm input before using it for a lookup                       |
| Speak Text         | Read fixed text or repeat a workflow value                                         | Select a language; enable digit-by-digit reading for identifiers |
| Transfer to Team   | Ring a team transfer destination using its existing availability and ring settings | An answer ends the flow; branch on failure to offer follow-up    |
| End Call           | End the call                                                                       | No later steps run                                               |

Use existing workflow condition, working-hours, contact lookup and session-note actions alongside these nodes. For example: menu → collect VAT → repeat digits → confirmation menu → contact lookup → team transfer. A VAT match identifies a record; it does not prove the caller is authorized to access it.

## WAV recordings

Upload mono or stereo WAV files with 16-bit PCM, A-law or mu-law encoding. Supported sample rates are 8, 16, 24, 32, 44.1 and 48 kHz. Files must be at most **20 MB** and **five minutes** long. Unsupported or malformed files are rejected.

Uploads are automatically compressed for speech playback. Keep uploading WAV files; no conversion is needed on your side. Each recording is fully loaded before playback, and playback buffers are released when it finishes or is interrupted. Existing uploaded recordings remain playable.

Keypad Menu and Collect Digits have two recording selectors: **Menu WAV recording** plays the main prompt, while **Retry WAV recording (optional)** plays before a retry after missing or invalid keypad input. Leave the main recording empty to use menu text; leave the retry recording empty to repeat the menu without an extra recording.

You can also select **Upload WAV recording** beside a workflow node’s recording selector. The modal lets you preview a WAV before uploading; the new recording is selected automatically for that node.

The recordings table shows 10 recordings per page in a scrollable area. Use the page controls below the table to browse additional recordings. Uploading a recording returns you to the first page.

Select **Preview** to listen before using a recording. Each upload creates a new recording. To replace a recording, upload a new file and select it in a new workflow version. Existing calls keep the workflow version and recording references they started with.

For keypad menus, either select a WAV recording or enter fixed menu text and its two-letter language code. A WAV recording takes precedence when both are supplied. Speak Text reads exactly the supplied text; it does not compose a response.

## Input and retries

* Menus collect one key. Set **Allowed menu keys**, for example `1239`.
* Digit collection accepts 1–32 digits. Keep identifiers as text to preserve leading zeros.
* Variable-length input needs a finish key, normally `#`. Fixed-length input may complete when its maximum length is reached.
* No-input timeout defaults to 10 seconds; the pause allowed between digits defaults to 5 seconds.
* Maximum attempts defaults to 3 and can be set from 1 to 5. Use **Retry WAV recording** to select or upload the recording played after missing or invalid input.
* Keys may interrupt playback when **Allow keys during playback** is enabled.

Branch explicitly for `input`, `no_input`, `invalid`, `inter_digit_timeout` and `error`. An unfinished identifier is never treated as successful input merely because the caller paused. Retrying collection starts with an empty digit buffer.

## Transfers and version changes

Transfer to Team uses an existing team transfer destination. An actual teammate joining ends the IVR and leaves the human call connected. When no eligible teammates exist, or nobody answers, the workflow continues with `no_eligible_agents` or `no_answer`. Add a callback-choice branch or a closing message for those outcomes.

Activating a new version applies to new calls. Removing a number's call-flow assignment restores its other configured routing. Unassign a flow from its numbers before deactivating it.

Browser tests use your microphone, speakers and the on-screen keypad. They verify the call media and workflow behavior without changing number assignments. A successful browser test does not verify a carrier connection; test a real incoming call before rollout.

When an IVR-only call ends, its final status and duration are saved and the session is closed before Phone Call Finished workflows run. A successful transfer keeps the human call open until it ends.

## Companion and API

Companion can author the same `ivr-incoming-call` workflows and use the Classical IVR node definitions. It can list/upload recordings and assign an active flow to a number. Review the flow before activation and number assignment.

API access uses `workflows:read` for listing recordings, `workflows:write` for uploading, and both `phone:write` and `workflows:write` for number assignment. Use existing workflow endpoints to create versions, validate and activate them.

* [List recordings](/api-reference/call-flows/list-assets)
* [Upload a WAV recording](/api-reference/call-flows/upload-asset)
* [Assign a number](/api-reference/call-flows/set-binding)

## Troubleshooting

If Classical IVR is missing, check both telephony and Classical IVR enablement and your workflow permissions. If a recording will not play, check its preview and the call's workflow run. If a transfer fails, check the destination's team, available membership, business hours and call capacity. Use the session notes and workflow step results to distinguish invalid input, lookup results and transfer failures.
