> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ycloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# messenger.message_reaction.updated

> Occurs when a customer reacts to or removes a reaction from a Messenger message.

Use `messenger.message_reaction.updated` to handle this event at your webhook endpoint.

## Triggers

Occurs when a customer reacts to or removes a reaction from a Messenger message.

Subscribe to `messenger.message_reaction.updated` when you [configure your webhook endpoint](https://docs.ycloud.com/en/api-reference/guides/api-fundamentals/configure-webhooks.md).

Use `action` to distinguish a reaction from its withdrawal. A withdrawal can omit `reaction` and `emoji`. The target Meta message does not need a local YCloud message record. The event envelope’s `createTime` is the source interaction time.

## Syntax

YCloud sends an HTTP `POST` request to your configured webhook URL. The following shape shows one payload variant. Angle-bracket values are placeholders; their types are listed under **Parameters**. Optional fields and other variants are described below.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "<ID>",
  "type": "messenger.message_reaction.updated",
  "apiVersion": "<API_VERSION>",
  "createTime": "<CREATE_TIME>",
  "messengerMessageReaction": {
    "pageId": "<PAGE_ID>",
    "psid": "<PSID>",
    "metaMessageId": "<META_MESSAGE_ID>",
    "action": "<ACTION>",
    "reaction": "<REACTION>",
    "emoji": "<EMOJI>"
  }
}
```

## Parameters

Validate the `YCloud-Signature` HTTP header before you process the JSON body. See [signature validation](https://docs.ycloud.com/en/api-reference/guides/api-fundamentals/configure-webhooks.md).

### Event envelope

| Parameter | Type | Required | Description |
| - | - | - | - |
| `id` | string | Yes | Unique ID for the event. Minimum length: `6`. Maximum length: `128`. |
| `type` | string | Yes | Always `messenger.message_reaction.updated`. |
| `apiVersion` | string | Yes | The API version used to render this event. |
| `createTime` | string (date-time) | Yes | The time at which this event was created, formatted in [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). e.g., `2022-06-01T12:00:00.000Z`. |

### Event payload

| Parameter | Type | Required | Description |
| - | - | - | - |
| `messengerMessageReaction` | object | No | Event-specific `messengerMessageReaction` payload. |

The four common envelope fields are required. Payload fields depend on the event variant. In each object table, **Required** applies when its parent object is present. Optional fields can be omitted; a sample does not make a field required.

#### messengerMessageReaction

| Parameter | Type | Required | Description |
| - | - | - | - |
| `pageId` | string | Yes | Facebook Page ID that scopes this conversation. |
| `psid` | string | Yes | Page-scoped ID of the customer who reacted. |
| `metaMessageId` | string | Yes | Meta ID of the message being reacted to. |
| `action` | string | Yes | Use react to apply a reaction and unreact to withdraw it. |
| `reaction` | string | No | Reaction name when provided by Meta. May be omitted, including on withdrawal. |
| `emoji` | string | No | Reaction emoji when provided by Meta. May be omitted, including on withdrawal. |

## Example

The following JSON is the body delivered to your receiver. IDs, phone numbers, and other account values are illustrative.

> [accordion] Messenger message reaction
>
> The target Meta message need not have a local YCloud message record.
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_abcdef0123456789abcdef01",
>   "type": "messenger.message_reaction.updated",
>   "apiVersion": "v2",
>   "createTime": "2026-10-20T02:00:04.000Z",
>   "messengerMessageReaction": {
>     "pageId": "422500000000000",
>     "psid": "100800000000000",
>     "metaMessageId": "m_EXAMPLE_OUT_001",
>     "action": "react",
>     "reaction": "love",
>     "emoji": "❤️"
>   }
> }
> ```

> [accordion] Messenger message reaction withdrawn
>
> Withdrawals can omit the reaction name and emoji.
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_bcdef0123456789abcdef012",
>   "type": "messenger.message_reaction.updated",
>   "apiVersion": "v2",
>   "createTime": "2026-10-20T02:00:05.000Z",
>   "messengerMessageReaction": {
>     "pageId": "422500000000000",
>     "psid": "100800000000000",
>     "metaMessageId": "m_EXAMPLE_OUT_001",
>     "action": "unreact"
>   }
> }
> ```

After verifying the signature and durably accepting the event, return a `2xx` response. Process slow work asynchronously.

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
HTTP/1.1 200 OK
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.