Skip to main content
When making outbound phone calls, voice agents often encounter IVR (Interactive Voice Response) systems. The agent needs to navigate the IVR to reach the right department or person, or to enter necessary information. There are two types of IVR systems:
  • Audio input IVR: Accepts spoken responses. Your agent can navigate these through standard prompting.
  • DTMF input IVR: Requires pressing digits on the phone keypad (Dual-Tone Multi-Frequency signals).
This guide shows you how to configure your agent to navigate DTMF-based IVR systems by pressing digits.

Steps

1

Add a Press Digit Tool

Give your agent the ability to press digits. The tool description is optional—you can specify when and what digits to press if desired.
2

Add Navigation Prompts

Provide clear instructions on when and what digits to press. Include preferred keywords/phrases, keywords to avoid, and guidance for uncertain situations.Example prompt:
    ## IVR Navigation
    When interacting with automated systems, menus, or IVR prompts:

    Your goal is to reach the scheduling or appointments department.

    Preferred navigation keywords:
    • Scheduling
    • Appointments
    • New patients
    • Front desk

    Avoid:
    • Billing
    • Referrals
    • Medical records
    • Clinical departments

    If you are unsure which IVR option is correct:
    Choose the option most closely related to scheduling or appointments.
Alternative approach: If you know the exact digit sequence beforehand, you can provide direct instructions:
    Press digit 1 to reach the support department.
3

Add Interaction Rules

Provide detailed instructions on when to press digits and how to handle edge cases, such as reaching the wrong person or needing to hang up.Example prompt:
    ## IVR Interaction Rules
    1) If the IVR allows you to speak a department name or short phrase:
        - Speak the appropriate department name clearly.

    2) If the IVR explicitly instructs you to press a number:
       - Use the press_digit function with the instructed digit.

    3) If the IVR does not accept speech and requires numeric input:
       - Use the press_digit function to select the best option.

    4) If the IVR indicates that you have reached the wrong company:
       - Immediately call end_call.

    5) If you are transferred:
       - Wait silently or respond with NO_RESPONSE_NEEDED if prompted to hold.
       - Resume navigation or follow the live agent flow once connected.
4

Extract IVR Post-Call Data (Optional)

Extract IVR navigation data for deeper insights. Below are field-by-field extraction prompts you can add in your agent’s Post-Call Data Extraction settings:
Was an IVR or automated phone system encountered at any point before reaching a human? Count menus, “press 1”, speech menus, automated routing, or virtual assistants as IVR. Do NOT count hold music after a human answers. Output ONLY true or false.
Did the caller speak with a real human staff member at any point during the call (not an automated system, recording, voicemail, or virtual assistant)? Output ONLY true or false.
Did the IVR appear to loop or repeat the same menu/prompt due to misunderstanding or invalid input (e.g., repeated “I’m sorry, I didn’t get that” or returning to the main menu multiple times)? Output ONLY true or false.
Allowed values: none | basic_menu | speech_ivr | voicemail_greeting_only | after_hours_message_onlyClassify the type of automated system encountered:
  • none: no automation, human answered directly
  • basic_menu: “press 1/2/3” style DTMF menu
  • speech_ivr: system asks spoken questions like “tell me why you’re calling” and responds conversationally
  • voicemail_greeting_only: immediately reached voicemail greeting/leave-a-message flow (no menus)
  • after_hours_message_only: only an after-hours closed message (may mention hours), without offering routing to staff
Allowed values: reached_human | left_voicemail | hung_up | blocked_by_ivr | callback_required | transferred | ivr_loop_detected | invalid_extension | after_hours_info_onlyWhat was the final outcome of the IVR/automated navigation portion of the call?
  • reached_human: successfully got to a human
  • left_voicemail: reached voicemail and a message was left or the voicemail prompt occurred as the end state
  • hung_up: call ended before any resolution (caller or system disconnected)
  • blocked_by_ivr: could not proceed due to IVR requirements or no matching menu option
  • callback_required: system instructed to call back later or offered callback as the only option
  • transferred: IVR transferred to a line/department (even if later hold)
  • ivr_loop_detected: looping prevented progress
  • invalid_extension: extension entry failed (invalid/not recognized)
  • after_hours_info_only: ended at after-hours info message with no human reached
How many distinct IVR steps occurred (menu prompts or bot questions that required an input/response) before reaching a human or ending? Output ONLY an integer. If none, output 0.
How many times did the IVR/bot request the same input again or say it didn’t understand (e.g., “please repeat”, “invalid entry”, returning to same menu)? Output ONLY an integer. If none, output 0.
Summarize the IVR navigation path as a breadcrumb using > separators, capturing the main menu choices or intents.Example: Main Menu > Providers > Authorizations > Hold
In 1–2 sentences, summarize the key IVR insights that matter operationally (e.g., required identifiers, department options heard, barriers like “portal only”, after-hours).
Create a concise step-by-step IVR tree in numbered lines. Each line must be:N. Prompt: "<summary>" | Action: "<pressed/said>" | Result: "<next state>".Include only steps that occurred.
5

Test Your Configuration

After saving your agent, test it by:
  • Placing an outbound call to a number with an IVR system, or
  • Calling yourself and mimicking an IVR system by saying phrases like “Press 1 for customer service”