Skip to main content
Phone menus vary wildly - fast menus, slow menus, hold queues, account-number gates. The engine gives your agent the tools (the three menu tags); this page is about using them well. Every pattern here comes from live testing against real menu systems. The one rule above all: the prompt is the map. An agent that knows the road ahead navigates it; an agent guessing at a menu presses the wrong keys or waits on dead ends.

1. Script the journey

Tell the agent the whole road before it dials: which menu answers first, which key at each level, what comes after. A working prompt from our own test line:
Every step is named: the menu, each key, and the human moment. Nothing is left for the agent to guess.

2. Tell it how to recognise a person

The handover moment matters most, so put it in the prompt explicitly: a real person greets you or asks you something - “hello”, “reception speaking”, “how can I help”. A machine states and confirms - “please hold”, “you have reached support”, “I have your account number”. Read-backs are still the machine.
Tie [IVR_END] to the greeting, not to a press - after a press you are still inside the menu.

3. Slow your digits when menus miss them

Some menus buffer audio and miss fast key tones. Put pauses between digits: w is half a second, W a full second.
Start plain, add w pauses on a retry, W only if digits are still missed.

4. Send multi-digit entries in one tag

Account numbers, extensions, and by-name entries go in a single press tag, in order, with the terminator if the menu wants one:
Separate presses can arrive too slowly and be read as separate answers.

5. Hold queues: script the patience

Queues speak every 30 seconds - “your call is important to us” - and an unprepared agent treats that as a person or a dead line. Name it:
A prepared agent sits a multi-minute queue silently and greets only the human. Raise ivr_timeout_seconds for queue-heavy lines so the wait does not expire mid-queue.

6. Dead ends: say so and leave

If the menu might not have what you need, script the exit - otherwise the agent improvises (often reasonably, by finding a human who can route it - but that may not be what you want):

7. Size the menu wait

ivr_timeout_seconds (default 240) is the maximum the agent stays inside menus - reaching a person always cancels it early. Size it to the line: 120s for a menu that answers straight away, 600s+ for lines with long queues. If it expires with no person reached, the agent says a brief goodbye and the call ends with ended_reason: ivr_timeout - a clean signal in your call data that the menu, not the conversation, was the problem.