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

# Inactivity nudge

> Check in on a silent caller, then end the call if they don't respond.

The inactivity nudge keeps a voice conversation from stalling. When the caller goes quiet after the agent speaks, the agent waits a configurable amount of time, then nudges them — "Hello, are you still there?" or a contextual prompt of your choosing. If the caller still doesn't respond after the last nudge, the agent ends the call.

The inactivity nudge runs on **voice calls only** — both inbound/outbound telephone and WebRTC voice. It has no effect on text or chat conversations, where silence is expected.

<Note>
  The inactivity nudge is always on for voice agents. There is no enable/disable toggle — instead, tune the timeout, the gap between nudges, and the nudge wording. To make an agent more patient, raise `timeout_seconds`.
</Note>

## How it works

Silence is detected from the caller's audio: when neither the caller nor the agent has spoken for `timeout_seconds`, the caller is marked **away** and the nudge sequence begins.

```text theme={null}
Agent finishes; caller goes silent
        │
        ▼
timeout_seconds of silence  → caller marked "away"
        │
        ▼
Nudge 1 ──wait nudge_interval_seconds──▶ Nudge 2 ──▶ ... (in order)
        │                                              │
   caller responds?                          last nudge, still silent
        │                                              │
        ▼                                              ▼
 nudges cancelled, conversation resumes            hang up
```

The silence timer only counts while the agent is idle and waiting. A long agent reply, or a tool the agent is running in the background, does not count as caller silence — so the agent never nudges in the middle of its own turn. If the caller speaks at any point, the pending nudges are cancelled and the conversation continues normally.

Nudges play in the order you list them, so you can escalate: a warm check-in first, a firmer "I'll have to let you go" before the final hang-up.

## Configuration

Configure it in the agent builder under **Rules & Boundaries → Inactivity Nudge**, or set `inactivity_nudge` on the agent config directly.

| Field                    | Type   | Default           | Description                                                                                     |
| ------------------------ | ------ | ----------------- | ----------------------------------------------------------------------------------------------- |
| `timeout_seconds`        | number | `30`              | Seconds of silence before the first nudge. Must be greater than `0`.                            |
| `nudge_interval_seconds` | number | `15`              | Seconds between nudges, and the final grace period before hanging up. Must be greater than `0`. |
| `nudges`                 | array  | two-nudge default | Ordered list of nudges, one per attempt. Must contain at least one.                             |

### Nudges

Each entry in `nudges` is one attempt. There are two kinds, mirroring the agent's starting message:

| Type                    | Behaves like                                                             | Field    |
| ----------------------- | ------------------------------------------------------------------------ | -------- |
| `bot_initiates_static`  | **Exact text** — spoken verbatim                                         | `text`   |
| `bot_initiates_dynamic` | **Use instructions** — the LLM generates the line from your instructions | `prompt` |

Both `text` and `prompt` support [template variables](/agents/prompts-and-personas), so a nudge can reference the caller's name or other conversation data. A dynamic nudge is generated in the agent's own voice and language; a static nudge is always the exact words you provide.

The number of nudges is simply the length of the list — the agent makes that many attempts, spaced by `nudge_interval_seconds`, then hangs up.

## Example

```json theme={null}
{
  "inactivity_nudge": {
    "timeout_seconds": 30,
    "nudge_interval_seconds": 15,
    "nudges": [
      {
        "type": "bot_initiates_dynamic",
        "prompt": "The caller has gone quiet. Warmly check if they're still there."
      },
      {
        "type": "bot_initiates_static",
        "text": "I'll let you go for now — feel free to call us back any time. Goodbye!"
      }
    ]
  }
}
```

This agent waits 30 seconds of silence, asks a contextual check-in, waits another 15 seconds, speaks a fixed sign-off, waits 15 more seconds, and then hangs up.

## Tuning

<AccordionGroup>
  <Accordion title="Making the agent more patient">
    Raise `timeout_seconds` so the agent waits longer before its first nudge — useful when callers commonly pause to look something up or read a document. Raising `nudge_interval_seconds` gives them more time to respond between nudges.
  </Accordion>

  <Accordion title="More or fewer chances before hanging up">
    The number of attempts is the length of `nudges`. Add entries for more chances, or use a single nudge to hang up sooner after one unanswered check-in.
  </Accordion>

  <Accordion title="Consistent wording across agents">
    Use `bot_initiates_static` nudges with exact `text` when you want the same words every time — for example a non-English agent, or a sign-off that must match brand voice. Dynamic nudges vary with the agent's persona and language.
  </Accordion>
</AccordionGroup>

## Interaction with other features

* **Voicemail detection.** On outbound calls, [voicemail detection](/agents/voicemail-detection) handles answering machines. The inactivity nudge stays out of the way while voicemail detection is deciding, so the two never talk over each other.
* **Text and chat.** Silence is normal in text conversations, so the inactivity nudge never fires there.

## Related

<CardGroup cols={2}>
  <Card title="Voicemail detection" icon="voicemail" href="/agents/voicemail-detection">
    Detect answering machines on outbound calls and leave a message.
  </Card>

  <Card title="Conversation dynamics" icon="comments" href="/agents/conversation-dynamics">
    Tune turn-taking, interruptions, and how long the agent waits before responding.
  </Card>

  <Card title="Starting message" icon="play" href="/agents/prompts-and-personas">
    The greeting the agent opens with — nudges reuse the same static/dynamic options.
  </Card>

  <Card title="Abilities and actions" icon="bolt" href="/agents/abilities-and-actions">
    How call actions like hang-up are grouped into tools the model calls.
  </Card>
</CardGroup>
