Skip to content

Five9 IVR · reference

Five9 IVR modules, one at a time

A Five9 IVR script is a graph of modules. Here is what the modules that do most of the work are for, in Five9's own words, what to watch for, and how to check each one before callers reach it.

Five9's descriptions are from its IVR Administrator's Guide (April 2026 edition), with page numbers. Each module is an XML element of the same name in a .five9ivr export — reading a Five9 export by hand shows the format.

Incoming Call incomingCall

In Five9: In the guide's words, “the first module of all IVR scripts.” It is already on the canvas when you create a script and cannot be removed or given properties. (p. 100)

In ivrloom: Every reachability check starts here: a module no path from Incoming Call reaches is flagged as unreachable in the Issues panel.

Play play

In Five9: Plays “prompts and greetings anywhere in the script.” (p. 204)

In ivrloom: A simulated call lists every prompt the caller hears, and the editor plays a prompt's recording from your bundle. ivrloom also models an announcement module, which the first post below compares with Play.

  • announcement and play: the difference that shows up in the flow — on the blog January 19, 2027
  • Prompt libraries: naming, reuse, and the duplicate problem — on the blog November 24, 2026

Get Digits getDigits

In Five9: Routes the call “by using digits entered by the caller into a variable”; the result can go to a string or an integer variable. (p. 135)

In ivrloom: In step mode you type the caller's digits or choose “No input”, and you can make the module fail with one of the error codes Five9 lists for it.

If/Else ifElse

In Five9: Two branches: If when the condition is true, Else when it is false. “If you need more than two branches, use the Case module.” (p. 143)

In ivrloom: Conditions are edited in the property panel, dates, times and yes/no values included, and saved as the same kind of value Five9 uses. A branch the simulator cannot decide is flagged in the trace.

Case case

In Five9: “As many branches as you need”, one per possible value, plus No Match for everything else — the guide's example routes a Get Digits result to Sales or Support. (p. 111)

In ivrloom: The simulator takes the matching branch and says so in the trace; a value that matches no branch, with no No Match to catch it, ends the simulated call as a dead end.

  • ifElse or case: choosing how to branch — on the blog November 3, 2026
  • Holiday schedules: the annual maintenance nobody owns — on the blog October 20, 2026

Set Variable setVariable

In Five9: Assigns values to variables, typically for a later If/Else, Case, web request or routing decision. Script variables hold up to 1M characters, call variables 2,040. (p. 238)

In ivrloom: The simulator evaluates the assignments it can, in order. The script's own JavaScript functions and RANDOM are never run: in step mode it asks you for the value instead.

  • Variables in a call flow: scope, lifetime, and the blank-value bug — on the blog October 27, 2026
  • The emergency message path, and why it is always broken — on the blog January 5, 2027

Query and Lookup Contact Record query

In Five9: Query obtains data “from an external Web site”, a third-party web service or another source of contact data. Lookup Contact Record (p. 178) reads the caller's contact record. (p. 214)

In ivrloom: The simulator never calls the service. The values it would return are the ones you set before the run (unset, they are empty), and you can make the module fail with one of Five9's error codes to walk its error branch.

  • CRM lookups in the flow: latency, failure, and the branch you forgot — on the blog January 26, 2027

Skill Transfer skillTransfer

In Five9: Transfers the call to one or more skills and configures the queue; “after the call transfers to an agent, the IVR script is complete.” (p. 250)

In ivrloom: The simulator offers the outcomes the module's settings allow — an agent answers, a queue callback, voicemail, a queue timeout, a transfer error — and the Issues panel flags a transfer with nowhere to go if it fails.

  • Skill transfers and the overflow paths you hope never run — on the blog October 13, 2026
  • Callback offers: the queue decision you make on the caller's behalf — on the blog February 2, 2027

Foreign Script foreignScript

In Five9: Runs another IVR script from this one and returns its variables — “you can use the same search script in multiple scripts.” (p. 132)

In ivrloom: When the called script is in the bundle you imported, the simulator steps into it and comes back; otherwise the trace says the sub-script was skipped.

  • Subscripts: when to split a flow and when not to — on the blog November 10, 2026

Hangup hangup

In Five9: Disconnects the call and ends the script — or, “if the script was started from another IVR script,” returns the call to it. Start on Hangup (p. 102) starts another process when a caller hangs up before the script ends. (p. 100)

In ivrloom: The modules that run on hangup are a second flow in the export; the reachability check knows about it, so they are not reported as orphans.

  • Subscripts: when to split a flow and when not to — on the blog November 10, 2026
  • Dead branches: finding the paths nobody can reach — on the blog November 17, 2026

Test every module without a call

ivrloom's simulator runs a Five9 script in your browser: you supply what the file cannot know — the caller's digits, the clock, what a transfer or lookup returned — and saved scenarios re-check the paths after every edit. Testing a Five9 IVR without placing a call shows how, and the comparison with Five9's IVR Script Designer shows the editor. ivrloom is an independent product, not affiliated with Five9, Inc.