AISARAISAR
All webhooks

Messages

Message reaction updated

message.reaction.updated

Fires when a reaction is added to or removed from a message. Carries the emoji, the action (added/removed) and the actor. WhatsApp allows one reaction per sender per message — a new reaction replaces the previous one; when a reaction is removed, emoji is null.

HTTP request

AISAR sends a signed POST request to your webhook_url:

http
POST {webhook_url}
Content-Type: application/json
X-AISAR-Signature: sha256=...

{
  "event": "message.reaction.updated",
  "event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
  "timestamp": "2026-03-26T12:00:00.000000Z",
  "company_id": 1,
  "data": {
    "message_id": 123,
    "conversation_id": 45,
    "channel_id": 2,
    "reaction": {
      "emoji": "👍",
      "action": "added",
      "actor": {
        "type": "contact",
        "contact_id": 10,
        "user_id": null,
        "name": "John Doe"
      }
    }
  }
}

The X-AISAR-Signature header carries an HMAC-SHA256 signature of the request body — use it to verify the request came from AISAR.

Example payload

json
{
  "event": "message.reaction.updated",
  "event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
  "timestamp": "2026-03-26T12:00:00.000000Z",
  "company_id": 1,
  "data": {
    "message_id": 123,
    "conversation_id": 45,
    "channel_id": 2,
    "reaction": {
      "emoji": "👍",
      "action": "added",
      "actor": {
        "type": "contact",
        "contact_id": 10,
        "user_id": null,
        "name": "John Doe"
      }
    }
  }
}

Payload fields

FieldTypeDescription
message_idintegerID of the message that received or lost a reaction
conversation_idintegerConversation ID
channel_idintegerChannel ID
reaction.emojistring|nullReaction emoji. null when action is removed
reaction.actionstringadded or removed
reaction.actorobjectWho added or removed the reaction
reaction.actor.typestringuser or contact
reaction.actor.contact_idinteger|nullContact ID (when the reaction is from the contact)
reaction.actor.user_idinteger|nullUser ID (when the reaction is from a user/operator)
reaction.actor.namestringActor display name