Reaction added or removed
Webhook
A reaction was added to or removed from a chat message the app can see.
Event name: chat.reaction
Required scope: chat:history
Delivered inside the standard event envelope;
the schema below shows the full delivery body with this event's payload
under data.
Like chat.message, this is delivered for any message in a chat the app
participates in or can see (Slack reaction_added / reaction_removed
parity) — not only the app's own messages. The reacted message's author is
in messageAuthorId, so an app can filter to reactions on its own
messages. Membership matrix: Chat.
One event is delivered per reaction change: action says whether the
reaction was added or removed, name is the single reaction that changed,
and userId is the user who changed it. There is no batching or
debouncing — an add followed by a remove delivers two events.
Delivery is at-least-once; use the envelope's eventId to deduplicate
retries. Event ordering is not guaranteed — use the envelope's
timestamp when reconstructing a sequence. To fetch a message's current
reaction set, call /reaction.list.
Filter on webhook.subscribe.
Omit filter to receive every reaction in chats you can see.
{
"url": "https://example.com/hooks/reactions",
"event": "chat.reaction",
"filter": { "names": ["wave", "heart"] }
}
names matches the name field of /reaction.add
and /reaction.list (plain shortcode, no colons).
There is no chatType or mention filter on this event.
Note: the legacy v0 chat:message:reaction event instead delivers the
message's full reaction snapshot, debounced per message, with tagged IDs
(chat / recipient / messageSender) — and its filter key is codes.
Both actors are typed inline. userType describes userId, while
messageAuthorType describes messageAuthorId; each equals
user.info.type under the same credentials.
These fields are additive on both supported webhook versions. Baseline
(2026-06-01) includes them in the bare payload; Latest nests them under
data:
{ "userId": "ad1e9cc0-...", "userType": "user", "messageAuthorId": "709b8a57-...", "messageAuthorType": "bot" }
{ "type": "chat.reaction", "data": { "userId": "ad1e9cc0-...", "userType": "user", "messageAuthorId": "709b8a57-...", "messageAuthorType": "bot" } }
A malformed event whose actor or message author cannot be resolved is not delivered as a partially typed payload.
Request
Responses
- 200
Return a 200 status to indicate that the data was received successfully