When this matters
Interactive replies are critical for:- Routing customers to different support flows (e.g. Sales vs Support).
- Confirming transaction actions (e.g., tapping “Confirm Order” or “Reschedule”).
- Implementing automated chatbot menus and FAQ navigators.
Processing flow
Handling an interactive choice involves three steps:1. Receive interactive webhook
Wazapin POSTs a lightweightmessage.new webhook containing msg_type: "interactive".
Here is an example webhook payload:
Interactive webhook payload
2. Fetch selection details
Call GET /v1/messages/ using themessage_id from the payload. The API response will contain an interactive object within the content block detailing the user’s input.
Interactive structures
Depending on the message type, the returned details will have one of two shapes:Quick-reply buttons (button_reply)
If the user tapped a button, the interactive block will have a type of "button_reply":
List menu row (list_reply)
If the user picked an option from a list menu, the interactive block will have a type of "list_reply":
Code example
Here is how to handle the webhook and process the user’s choice:Troubleshooting
Webhook arrives but interactive is empty
Ensure you query the message by ID via GET /v1/messages/{messageID}. Webhook bodies are intentionally slimmed down and do not include the interactive reply block inline.
User pressed multiple buttons
WhatsApp does not allow multiple choice selections on a single message. Tap events are atomic and arrive as individual webhooks. If a user tries to tap buttons on older messages, your system will receive a new webhook event with a uniquemessage_id. You can track the original message ID via the conversation timeline or message parent headers if applicable.