Sign inGet started

Interactieve antwoorden ontvangen via WhatsApp

Een tik op een antwoordknop, een lijstrij of de snelle antwoordknop van een template komt binnen als een eigen inbound bericht met interactive_reply. De arm geeft je de handle terug die je bij het verzenden hebt ingesteld, zodat een flow vertakt op je eigen identifier in plaats van op het label dat het contact zag.

Wat een inbound interactief antwoord bevat

type geeft het type tik aan, en het veld met dezelfde naam bevat het:
Codevoorbeeld
{
  "id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
  "direction": "inbound",
  "from": { "phone_number": "+14155550100" },
  "to": { "phone_number": "+13124495569" },
  "status": "received",
  "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
  "interactive_reply": {
    "type": "button",
    "button": { "slug": "cancel-booking", "text": "Cancel" }
  },
  "created_at": "2026-08-25T09:04:11Z"
}
typeVeldWat het bevat
buttonbuttonDe slug en text van een antwoordknop, of van de snelle antwoordknop van een template
listlistDe slug en text van de rij die het contact koos, plus de description als die er was
Een lijstrij vervangt button door list en voegt de tweede regel toe die de rij toonde:
Codevoorbeeld
{
  "interactive_reply": {
    "type": "list",
    "list": {
      "slug": "priority_express",
      "text": "Priority Mail Express",
      "description": "Next day to 2 days"
    }
  }
}
slug is de handle die je hebt opgegeven en die het contact nooit zag; text is het label dat ze lazen. Vertakt op slug. Labels worden herformuleerd en vertaald, en bij een tik op de snelle antwoordknop van een template is de slug de payload die dat template heeft opgegeven, die WhatsApp instelt op het eigen label van de knop.
De lijst met typen is open: WhatsApp voegt in de loop van de tijd interactieve typen toe, dus behandel een type die je niet herkent als een toekomstig type in plaats van een fout, en val terug op het loggen van het bericht in plaats van het lezen te laten mislukken.

Een tik koppelen aan wat je verstuurde

in_reply_to_message_id geeft het bericht aan dat de knop of het menu bevatte. Zo weet je bij welke vraag dit antwoord hoort. WhatsApp rapporteert het niet bij elke tik, en de resolutie kan ook missen. In dat geval wordt het veld weggelaten in plaats van leeg gerapporteerd. De hub-pagina geciteerde antwoorden behandelt wat een miss betekent en hoe lang een geciteerd bericht oplosbaar blijft.
Als correlatie betrouwbaar moet zijn, zet je eigen referentie dan in de slug zelf, of in metadata bij het verzenden, in plaats van op het veld te vertrouwen. Zie een bericht citeren voor de verzendzijde.

De twee tikken die elders binnenkomen

Twee interactieve typen beantwoorden zonder enige interactive_reply:
Een linkknop stuurt niets terug: het contact vertrekt naar de URL en er wordt geen inbound bericht van de tik vastgelegd. Een integratie die alleen interactive_reply bewaakt, mist alle drie.

De webhook-payload

whatsapp.received bevat de interactive_reply-arm op de event-envelope, zodat een bot een tik kan beantwoorden zonder het bericht terug te lezen:
Codevoorbeeld
{
  "type": "whatsapp.received",
  "timestamp": "2026-08-25T09:04:11.118Z",
  "data": {
    "whatsapp_id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
    "direction": "inbound",
    "from": { "phone_number": "+14155550100", "display_name": "Alex Rivera" },
    "to": { "phone_number": "+13124495569" },
    "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
    "interactive_reply": {
      "type": "button",
      "button": { "slug": "cancel-booking", "text": "Cancel" }
    },
    "tags": null,
    "metadata": null
  }
}

Aandachtspunten

  • interactive en interactive_reply zijn tegengestelde richtingen. interactive is wat je verstuurde en komt nooit inbound binnen; interactive_reply is wat het contact tikte en verschijnt nooit op een outbound bericht.
  • Een tik herstelt het servicevenster. Het is een inbound bericht, dus het heropent 24 uur vrije antwoorden op dezelfde manier als een tekstbericht.
  • Een contact kan twee keer op dezelfde knop tikken. Tikken worden niet gededupliceerd, dus elke tik is een eigen bericht met een eigen ID. Maak de actie die je op een slug uitvoert idempotent.
  • Een tik op een oud menu komt nog steeds binnen. Een contact dat terugscrollt kan op een knop van dagen geleden tikken. Valideer daarom dat de flow nog open is in plaats van aan te nemen dat de tik je laatste bericht beantwoordt.

Volgende stappen