# Message reaction added

**Event:** `chat.message.reaction`

## Description

A reaction on a chat message changed.

**Event name:** `chat:message:reaction`

Delivered when the set of reactions on a message changes (a reaction is added
or removed) in a chat where the app is a participant. The payload is a
**snapshot of every reaction currently on the message** — see the schema
below — not a single "reaction added" event. Rapid changes are debounced
(~10 seconds) per message and coalesced into one delivery.

If you subscribed with a `codes` filter, the webhook only fires when the
message carries at least one matching reaction, but the payload still lists
every reaction on the message. Inspect `reactions[].code` in your handler to
isolate the codes you care about.

## Webhook Payload

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `type` | string | Yes | Always `"reaction"`. |
| `chat` | TaggedUUID | Yes | The chat containing the message that was reacted to. |
| `recipient` | TaggedUUID | No | The app address (bot or sender profile) this webhook was delivered to. |
| `messageId` | string | Yes | ID of the message that was reacted to. |
| `messageTimestamp` | integer | Yes | Timestamp of the message that was reacted to. |
| `threadTimestamp` | integer | No | Timestamp of the thread root, when the message is in a thread. Omitted for top-level messages. |
| `messageSender` | TaggedUUID | Yes | The author of the message that was reacted to (not the person who added the reaction). Provided so you can filter deliveries client-side.  |
| `chatType` | string | Yes | The type of chat the message is in (e.g. `dm`, `channel`). |
| `reactions` | object[] | Yes | The full set of reactions currently on the message. |

**TaggedUUID**:

A UUID prefixed by a tag identifying the specific type of object
**TaggedUUID**:

*See TaggedUUID above*

**TaggedUUID**:

*See TaggedUUID above*

**reactions** (array item):

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `code` | string | Yes | The reaction shortcode, delivered colon-wrapped (e.g. `:thumbs_up:`, `:white_check_mark:`, `:heart:`). Custom emoji use the form `:name::fileId:`. When comparing against a `codes` subscription filter, |
| `emojiText` | string | No | The rendered emoji character (e.g. `👍`). May be empty for non-emoji reactions such as poll votes. |
| `reactors` | TaggedUUID[] | Yes | The users who added this reaction. |

---

*Machine-readable API documentation.*
*Full documentation: https://developer.ro.am/docs/webhooks-v0-dev/chat-message-reaction*
