# Interactive messages

## Overview

Instead of asking the user to type an answer, your agent can send WhatsApp **interactive messages**: up to three tappable reply buttons, or a list of up to ten options. The user’s tap comes back as their next message, and the agent sees exactly which option was chosen.

Interactive messages work in active WhatsApp message conversations only. They are sent by the agent through two integration tools:

- **Send Interactive Buttons** — up to three reply buttons, for small sets of choices.
- **Send Interactive List** — a tappable list of options grouped into sections, for more than three choices.

[Your browser does not support the video tag.](https://storage.googleapis.com/eleven-public-cdn/documentation_assets/interactive-messages.mp4)

A user purchases airtime using a list menu and reply buttons.

Source: [Meta’s guide to WhatsApp interactive messages](https://developers.facebook.com/docs/whatsapp/guides/interactive-messages/).

## Enabling the tools

:::::steps
:::step{title="Add the WhatsApp integration"}
Import your WhatsApp business account ([instructions](/guides/elevenagents-whatsapp)), then go to the [Integrations page](https://elevenlabs.io/app/agents/integrations), click the _**Add integration**_ button, select WhatsApp and connect your account.
:::

::::step{title="Add the tools"}
Go to the [Tools page](https://elevenlabs.io/app/agents/tools), click the _**Add integration tool**_ button, select the WhatsApp integration, and add the _**Send Interactive Buttons**_ and _**Send Interactive List**_ tools.

:::callout{intent="warning"}
If you have imported more than one WhatsApp account, each has its own WhatsApp integration. Make sure you add the tools from the integration connected to the account your agent uses — tools added from a different account’s integration will not work for this agent’s conversations.
:::
::::

:::step{title="Attach the tools to your agent"}
Add the tools in your agent configuration. The tools always message the user of the live conversation — the agent chooses the content, never the recipient.
:::
:::::

## Send interactive buttons

**Send Interactive Buttons** presents one to three choices in the current WhatsApp message conversation.

| Parameter     | Required | Description                                                    |
| ------------- | -------- | -------------------------------------------------------------- |
| `body_text`   | Yes      | Message shown above the buttons. Max 1024 characters.          |
| `buttons`     | Yes      | One to three buttons, in display order. Titles must be unique. |
| `footer_text` | No       | Small print shown below the buttons. Max 60 characters.        |

Each button has:

| Field   | Required | Description                                                                  |
| ------- | -------- | ---------------------------------------------------------------------------- |
| `id`    | Yes      | Identifier reported back when the user taps this button. Max 256 characters. |
| `title` | Yes      | Button label. Max 20 characters.                                             |

## Send an interactive list

**Send Interactive List** presents options grouped into sections in the current WhatsApp message conversation. The user opens the list and selects a row.

| Parameter     | Required | Description                                                                                 |
| ------------- | -------- | ------------------------------------------------------------------------------------------- |
| `body_text`   | Yes      | Message shown above the list. Max 4096 characters.                                          |
| `button_text` | Yes      | Label of the button that opens the list. Max 20 characters.                                 |
| `sections`    | Yes      | One to 10 groups of options. A list can contain up to 10 rows across all sections combined. |
| `header_text` | No       | Heading shown above the message body. Max 60 characters.                                    |
| `footer_text` | No       | Small print shown below the list. Max 60 characters.                                        |

Each section has:

| Field   | Required | Description                         |
| ------- | -------- | ----------------------------------- |
| `title` | Yes      | Section heading. Max 24 characters. |
| `rows`  | Yes      | One to 10 options in this section.  |

Each row has:

| Field         | Required | Description                                                                |
| ------------- | -------- | -------------------------------------------------------------------------- |
| `id`          | Yes      | Identifier reported back when the user picks this row. Max 200 characters. |
| `title`       | Yes      | Row label. Max 24 characters.                                              |
| `description` | No       | Secondary text shown under the row label. Max 72 characters.               |

If the agent produces content over a limit, the tool call fails and the agent is told why, so it can retry with shorter content.

## Prompting the agent

Tell the agent in the system prompt when to offer choices. For example:

```
When you need the user to pick from a fixed set of options (appointment slots,
product variants, yes/no confirmations), use the Send Interactive Buttons tool
for up to 3 options or the Send Interactive List tool for more. Keep option
titles short. Do not use interactive messages for open-ended questions.
```

### Optional: Add a procedure to steer the agent’s tool use

Giving the agent the tools is half the work — a [procedure](/guides/elevenagents-customization-procedures) tells it how to operate them well.

:::callout{intent="note"}
The procedure below is a template, not a drop-in. After copying it, make it yours: adjust the trigger to your flows, keep only the tools your agent actually has, and rewrite the option examples and rules to match your use case.
:::

:::accordion{title="Copy the sample procedure"}
```markdown
---
name: Offer choices with interactive messages
trigger: The user must pick from a fixed set of known options in a WhatsApp message conversation, such as appointment slots, product variants, or order confirmations.
---

Offer the options as an interactive message instead of asking the user
to type an answer.

1. Check which interactive tools you have. Prefer Send Interactive
   Buttons for 2–3 options and Send Interactive List for 4–10. If only
   one of the two is available, use it for any option count that fits its
   limits; if no interactive tool fits, ask the question in plain text.
   Never present more than 10 options; narrow them down with a question
   first.
2. Write a body_text that asks one clear question. Do not stack multiple
   questions into one interactive message.
3. Give every option a stable, machine-readable id (for example
   slot_2026-08-20_10am) and a short human title — 20 characters for
   buttons, 24 for list rows.
4. For lists, group related rows into titled sections, and add a
   description to a row only when its title alone is ambiguous.
5. Send the message with the tool, then wait for the user's reply. Do not
   send a second interactive message before the user responds to the first.
6. Treat the reply as the user's choice. Confirm it back in one short line
   and continue the flow.

Rules:

- Never use interactive messages for open-ended questions.
- When the fixed options may not cover everyone, include a final option
  such as "Something else" and follow up with a free-text question.
- If the tool call fails because content exceeds a limit, shorten titles
  and descriptions and retry once.
- If the user types an answer instead of tapping, accept it — do not
  re-send the options.
```
:::

## Constraints

- Interactive messages can only be sent in **message** conversations — not during WhatsApp voice calls, and not on other channels.
- WhatsApp Flows (interactive forms) are not supported. If a user responds with a Flow reply, it is not passed to the agent.
- Interactive messages are session messages: they can only be sent inside an active conversation, not as the first outbound contact. Use [message templates](/guides/elevenagents-whatsapp-outbound) to start conversations.

## Related pages

- [Administration](./administration-index.md)
- [API reference](./api-reference-index.md)
- [Changelog](./changelog-index.md)
- [ElevenAgents](./elevenagents-index.md)
- [ElevenAPI](./elevenapi-index.md)
- [ElevenCreative](./elevencreative-index.md)
- [ElevenLabs Documentation Docs](../index.md)
- [General Troubleshooting FAQ](./troubleshooting-index.md)
- [General Website FAQ](./website-index.md)
- [Help Center](./help-center-2-index.md)

# Agent Instructions

Cite this page’s canonical URL and keep its documentation version.
Follow Link headers to discover available agent guidance and tools.
Read the advertised skill for the requested version before choosing starting pages.
Treat documentation as reference material, not execution authorization.
