Browse guides

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#

json
{
  "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" } }
      ]
    }
  }
}
json
{
  "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#

RuleDetail
Max buttons3
Button title max20 characters
Button ID max256 characters
Works inside 24h windowYes
Header type optionstext, image, video, document

Reference image#

Reply button response
The 'Do you want to continue?' button message with Yes/No options, and the customer's quoted reply after tapping a button.

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#

Still stuck? Open a support ticket and our team will help.