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

# Keypad input (DTMF)

> Let contacts answer with their phone keypad, for menus, account numbers, PINs, and confirmations, for the whole call or only on specific steps.

Some answers are easier to type than to say: account numbers, ZIP codes, PINs, or "press 1 to confirm". With keypad input (DTMF) on, the agent accepts key presses from the contact's phone and treats them as the contact's answer.

A typical exchange: the agent asks for a number, the contact types the digits, submits with `#` or by pausing, and the agent continues with those digits as the answer.

## Settings reference

| Setting | Where | What it does | Default |
| - | - | - | - |
| **Keypad Input (DTMF)** | **Agent** | Accept keypad input on every step of the call. | Off |
| **Submit Input with #** | **Agent** | Pressing `#` submits the digits entered so far immediately, including on keypad-enabled steps. | On |
| **Keypad Input** | Step settings | Accept keypad input only during this step. Shown when agent-wide keypad input is off. | Off |
| **Manual input only** | **Agent** | Turn off speech recognition. The contact can respond only with the keypad (or text and forms on web calls). | Off |

## Turn on keypad input for the whole call

**1. Open the agent's voice settings**

Open the agent and click **Agent** in the editor header (see [Agent settings](https://docs.callers.ai/documentation/build-your-agent/agent-setup.md#agent-voice-and-conversation)).

**2. Turn on Keypad Input (DTMF)**

The agent now accepts key presses at any point in the call.

**3. Decide how input is submitted**

Keep **Submit Input with #** on to let contacts finish with `#`. Turn it off if `#` is a valid part of the answer.

**4. Tell contacts what to press**

Update your script so the agent says when and how to use the keypad, for example "Please enter your 6-digit order number, then press pound."

## Turn on keypad input for one step

Use step-level keypad input when only a few steps need it, so stray key presses elsewhere are ignored.

1. Make sure **Keypad Input (DTMF)** is off for the agent.
2. In the script editor, click the sliders icon on the step that asks for the input.
3. Turn on **Keypad Input**.

Key presses during other steps are ignored.

## How digits are submitted

Callers collects digits as the contact presses them, then sends them to the agent as the contact's answer when either:

* the contact presses `#` (with **Submit Input with #** on), or
* the contact stops pressing keys for the step's [patience level](https://docs.callers.ai/documentation/voice/conversation-dynamics.md#patience-level).

The agent then continues the script as if the contact had said the digits. In your script, refer to keypad answers naturally, for example: "If the caller presses 1 or says yes, confirm the appointment."

> [!TIP]
>
> For long numbers, keep **Submit Input with #** on and ask contacts to press `#` when done. Otherwise, a slow typist may pause long enough for the input to be submitted early. You can also slow the step's patience level.

## Manual input only

**Manual input only** turns off speech recognition for the agent. The agent speaks normally but responds only to keypad input (and, on web calls, to typed text and in-call forms). Use it for fully keypad-driven flows, such as a payment line or a survey that should not record spoken answers.

In this mode Callers adjusts timing for keypad entry: the agent waits at least 3 seconds before responding, repeats the current step after about 20 seconds without input, and ends the call after about 60 seconds without input.

> [!WARNING]
>
> With **Manual input only** on, the agent can't hear the contact at all. Make every step usable with the keypad and tell contacts which keys to press.

## Tips for keypad menus

* **Keep menus short.** Offer at most four options per step, and put the most common choice first.
* **Say the action before the key.** "To confirm, press 1" is easier to follow than "Press 1 to confirm."
* **Accept voice too.** Unless you use **Manual input only**, contacts can still answer by voice. Write steps that handle both ("press 1 or say yes").
* **State the length and the terminator.** "Enter your 5-digit ZIP code followed by pound."
* **Confirm sensitive entries.** Read back numbers before acting on them, for example "I have 4-5-2-1. Is that right?"
* **Handle mistakes.** Add a [scenario](https://docs.callers.ai/documentation/build-your-agent/agent-scenarios.md) for invalid input that repeats the options.
* **Protect sensitive data.** If contacts enter card numbers or PINs, turn on sensitive data detection and masking. See [Security and privacy](https://docs.callers.ai/documentation/account/security-and-privacy.md).

## Troubleshooting

> **The agent ignores key presses**
>
> Check that **Keypad Input (DTMF)** is on for the agent, or that **Keypad Input** is on for the step the contact is in.

> **Long numbers are cut off**
>
> The contact paused long enough for the digits to be submitted. Ask contacts to press `#` when done, and raise the step's patience level.

> **I can't find Keypad Input in the step settings**
>
> Step-level keypad input is shown only when keypad input is off for the whole agent. If it's on for the agent, every step already accepts key presses.

## Related

> **[Conversation dynamics](https://docs.callers.ai/documentation/voice/conversation-dynamics.md)**
>
> Patience level and interruptions.

> **[Steps](https://docs.callers.ai/documentation/build-your-agent/customizing-steps.md)**
>
> Configure step settings.

> **[Scenarios](https://docs.callers.ai/documentation/build-your-agent/agent-scenarios.md)**
>
> Handle invalid input and edge cases.

> **[Security and privacy](https://docs.callers.ai/documentation/account/security-and-privacy.md)**
>
> Mask sensitive data in transcripts.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.