Idle messages
Overview
Idle messages automatically prompt users during periods of inactivity to maintain engagement and reduce call abandonment. They are set up using Assistant Hooks to trigger on customer silence timeout, and can be configured to say exact messages or use a model-generated message based on the conversation history.
Idle messages help you:
- Re-engage users who become distracted or experience audio delays
- Reduce call abandonment rates during silent periods
- Provide proactive assistance when users hesitate or need guidance
Idle messages are automatically disabled during tool calls and warm transfers to avoid interrupting system processes.
How idle messages work
When a user stops speaking, Vapi starts a timer. Based on the configured timeout periods in customer.speech.timeout
hooks, the assistant will trigger the action, which can be configured to say messages to the user.
Timer starts when user stops speaking
Fetches a message to say to the user
Counter resets when user responds (optional)
Configuration
Configure idle messages using Assistant Hooks. Use the customer.speech.timeout
hook to send a message when the user is silent for a specified period:
Learn more about hook options and actions in Assistant hooks.
Configuration options
Timeout and triggering
Message action
Advanced configuration
Basic setup (single timeout)
With reset counter
End call after 30s of silence
Multilingual support
Handle multiple languages by creating language-specific assistants or dynamically configuring hook messages:
Language-specific assistants
Dynamic updates
Best practices
Message content guidelines
- Keep messages concise - Users may be distracted, so shorter is better
- Use encouraging tone - Avoid demanding or impatient language
- Offer specific help - Guide users toward productive next steps
Good examples: - “Are you still there?” - “Is there anything specific you need help with?” - “I’m here whenever you’re ready to continue.”
Avoid: - “Why aren’t you responding?” - “Hello? Hello? Are you there?” - Long explanations or complex questions
Timing recommendations
Choose timeout duration based on your use case:
5-10 seconds For transactional or time-sensitive interactions
10-20 seconds For general customer service and assistance
20-30 seconds For problem-solving or decision-making conversations
Troubleshooting
Messages not triggering
Common issues and solutions
Messages trigger too frequently
Solution: Increase the timeout duration
Max count reached too quickly
Solution: Enable reset on user speech and increase max count
Messages interrupt processing
Solution: This shouldn’t happen - all hooks are automatically disabled during tool calls and transfers. If it persists, contact support.
Limitations
- Generative variability: Using
say.prompt
produces model-generated text that may vary; usesay.exact
for strict control - Trigger limits:
triggerMaxCount
caps how many times the timeout hook fires per call (1-10) - Timeout range:
timeoutSeconds
supports 1-1000 seconds (default ~7.5s); account for processing delays - Processing delays: Allow 2-3 seconds of audio processing time when choosing timeout values
Next steps
Now that you have idle messages configured:
- Background messages: Add contextual information silently
- Assistant hooks: Handle call events and state changes
- Voice formatting plan: Control speech patterns and delivery