Sign inGet Started

WhatsApp reaction webhooks

whatsapp.reacted fires when a contact reacts to one of your messages, changes their emoji, or takes it back. Reactions sent by your business number do not emit it. A subscription to whatsapp.received does not include reactions, and a reaction does not open a customer service window.
A reaction is an annotation on a message rather than a message of its own, so it is not part of the delivery timeline and does not carry the fields every message event carries.

The payload

whatsapp_id names the message that was reacted to, not the reaction, and emoji is the change the user made. A user who reacts, changes their emoji, then takes the reaction back produces three events on that one message. WhatsApp sends no removal between the first two, so a change arrives as a single event carrying the new emoji.
Codevoorbeeld
{
  "data": {
    "emoji": "👍",
    "from": { "phone_number": "+14155550100" },
    "to": { "phone_number": "+13124495569" },
    "whatsapp_id": "wam_01ky8b3xq4gd7pmzn2ka51f7te",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b"
  },
  "timestamp": "2026-07-23T14:52:11.000Z",
  "type": "whatsapp.reacted"
}
WhatsApp reports the reaction time to the second, so two of those three events can share one timestamp. Sorting them by it will not order them, and neither will delivery order, which retries make unreliable. Act on the reaction each event carries, as the change it describes. Do not reconstruct the sequence from the events or treat the last one to arrive as the message's standing reaction, because neither the timestamps nor the arrival order support it. Read the message back for the reactions that stand: GET /v1/whatsapp/messages/{message_id} returns one entry per sender in reactions, and the message's reaction log has every change.
emoji is present and null when the user took their reaction back, so a null is the removal itself rather than a missing value. The emoji is delivered exactly as WhatsApp sent it and is not normalized, so and ❤️ reach you as different strings.
  • from is the contact and to is your WhatsApp number. Handle business-scoped user IDs when the contact's address has no phone number.

Next steps