Skip to content
AISARAISAR
Messages

Messages

Message reaction updated

message.reaction.updated

Fires when a reaction is added to or removed from a message — both inbound (from the contact) and outbound (`POST`/`DELETE /messages/{message}/reactions`). Carries the emoji, the action (added/removed) and the actor. Each sender can have only one reaction per message — a new reaction replaces the previous one. When an inbound (contact) reaction is removed, reaction.emoji is null; when an outbound reaction is removed via DELETE /messages/{message}/reactions, reaction.emoji carries the emoji that was removed.

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. When action is removed: null for an inbound (contact) reaction; for an outbound reaction removed via DELETE /messages/{message}/reactions, carries the emoji that was 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