Reply Buttons (Quick Replies)
How to send an interactive message with up to 3 tappable reply buttons (quick replies) on the WhatsApp Cloud API.
On this page
An interactive button message presents the recipient with up to 3 tappable buttons below a
body text. When the customer taps a button, WhatsApp sends that button's id back to your
webhook automatically — no typing required. This is the simplest way to build menu-style or
yes/no interactions.
Sending reply buttons#
{
"messaging_product": "whatsapp",
"to": "919959623255",
"type": "interactive",
"interactive": {
"type": "button",
"body": { "text": "Do you want to continue?" },
"action": {
"buttons": [
{ "type": "reply", "reply": { "id": "yes_button", "title": "Yes" } },
{ "type": "reply", "reply": { "id": "no_button", "title": "No" } }
]
}
}
}Optional header and footer#
{
"type": "interactive",
"interactive": {
"type": "button",
"header": { "type": "text", "text": "Order #1023" },
"body": { "text": "Do you want to confirm this order?" },
"footer": { "text": "You can cancel within 1 hour" },
"action": { "buttons": [] }
}
}Rules#
| Rule | Detail |
|---|---|
| Max buttons | 3 |
| Button title max | 20 characters |
| Button ID max | 256 characters |
| Works inside 24h window | Yes |
| Header type options | text, image, video, document |
Reference image#

Frequently asked#
How do I add tappable buttons to a WhatsApp message?
Use type: "interactive" with interactive.type: "button". Add up to 3 button objects in
action.buttons, each with a type: "reply", an id, and a title.
What happens when the customer taps a button?
WhatsApp sends the button's id back to your webhook as an inbound interactive message.
Your server reads the id to know which button was tapped.
How many buttons can I add?
Maximum 3. For more options, use a list message instead.
Can I add an image above the buttons?
Yes. Add a header object with "type": "image" and an image.link or image.id.
Supports text, image, video, or document headers.
Gotchas & common mistakes#
Was this page helpful?
Still stuck? Open a support ticket and our team will help.