All webhooks
Messages
Message reaction updated
message.reaction.updatedFires 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
| Field | Type | Description |
|---|---|---|
message_id | integer | ID of the message that received or lost a reaction |
conversation_id | integer | Conversation ID |
channel_id | integer | Channel ID |
reaction.emoji | string|null | Reaction emoji. null when action is removed |
reaction.action | string | added or removed |
reaction.actor | object | Who added or removed the reaction |
reaction.actor.type | string | user or contact |
reaction.actor.contact_id | integer|null | Contact ID (when the reaction is from the contact) |
reaction.actor.user_id | integer|null | User ID (when the reaction is from a user/operator) |
reaction.actor.name | string | Actor display name |