# Recebendo reações do WhatsApp

Inscreva-se nas alterações de reação para saber quando um contato adiciona um emoji a uma de suas mensagens, altera ou retira. Reações anotam uma mensagem existente e chegam pelo `whatsapp.reacted`.

## Pré-requisitos

Configure um [endpoint de webhook](/docs/guides/webhooks) para o seu espaço de trabalho. Para recuperar as reações atuais ou o histórico delas, use uma chave API com permissão de leitura WhatsApp.

## 1. Inscreva-se nas alterações de reação

Adicione `whatsapp.reacted` à sua assinatura de webhook. Uma assinatura de `whatsapp.received` não inclui reações. Siga o [guia de webhooks](/docs/guides/webhooks) para verificação de assinatura, tentativas de entrega e configuração de endpoint.

Reações não criam uma nova mensagem na lista de mensagens nem abrem uma janela de atendimento. Se você precisar responder, verifique as [regras de janela de atendimento](/docs/guides/whatsapp/sending-whatsapp) antes de enviar uma mensagem de formato livre.

## 2. Identifique a mensagem e a alteração

Leia o `data.whatsapp_id` do evento para encontrar a mensagem à qual o contato reagiu. Este é o ID de mensagem Bird original (`wam_…`), e não um ID de reação separado.

Use `data.from` para identificar o contato e `data.to` para identificar o seu remetente WhatsApp. Esses são objetos de endereço WhatsApp; trate [IDs de usuário com escopo de negócio](/docs/guides/whatsapp/business-scoped-user-ids) quando o endereço do contato não tem número de telefone.

Um contato adicionando uma reação de polegar para cima produz este webhook:

```json
{
  "data": {
    "emoji": "👍",
    "from": { "phone_number": "+14155550100" },
    "to": { "phone_number": "+13124495569" },
    "whatsapp_id": "wam_01ky8b3xq4gd7pmzn2ka51f7te",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b"
  },
  "timestamp": "2026-08-28T19:01:10.000Z",
  "type": "whatsapp.reacted"
}
```

Interprete `data.emoji` da seguinte forma:

- Um emoji não nulo adiciona ou substitui a reação daquele contato na mensagem referenciada.
- Um emoji `null` remove a reação daquele contato. O campo está presente em um evento de remoção.

Uma substituição chega como um único evento contendo o novo emoji; não há um evento de remoção separado para o emoji antigo. Preserve a string exata: `❤` e `❤️` são valores distintos no payload.

## 3. Recupere as reações atuais

Se a sua aplicação exibe a reação atualmente vinculada a uma mensagem, [recupere a mensagem](/docs/api/reference/get-whatsapp-message) e leia o `reactions`. A lista contém uma reação vigente por remetente e é omitida quando não há reações vigentes.

Para `GET /v1/whatsapp/messages/wam_01ky8b3xq4gd7pmzn2ka51f7te`, os campos relacionados a reação têm este formato (outros campos da mensagem omitidos):

```json
{
  "id": "wam_01ky8b3xq4gd7pmzn2ka51f7te",
  "reactions": [
    {
      "emoji": "👍",
      "from": { "phone_number": "+14155550100" }
    }
  ]
}
```

A mensagem mantém seu conteúdo, direção e status de entrega originais. `reactions[].from` identifica a pessoa que reagiu.

Não trate o último webhook recebido como o estado atual. WhatsApp informa os horários de reação com precisão de segundo, então alterações podem compartilhar o mesmo timestamp, e tentativas de entrega de webhook podem mudar a ordem de chegada. Use webhooks para disparar uma atualização das reações atuais da mensagem.

## 4. Inspecione o histórico de reações

[Liste eventos de reação](/docs/api/reference/list-whatsapp-message-reaction-events) para inspecionar alterações na mensagem referenciada. Alterações recebidas de contatos têm status `received`; uma remoção contém `emoji: null`. A lista também inclui resultados de [reações enviadas pelo seu espaço de trabalho](/docs/guides/whatsapp/reactions).

O API de eventos de reação retorna uma resposta paginada. Este exemplo mostra uma reação de negócio rejeitada e uma reação de contato recebida anteriormente:

```json
{
  "data": [
    {
      "id": "war_01krdgeqcxet5s7t44vh8rt9mh",
      "emoji": "🎉",
      "status": "rejected",
      "from": {
        "phone_number": "+13124495569"
      },
      "error": {
        "code": "internal_error",
        "description": "the receiving number is no longer connected",
        "occurred_at": "2026-08-28T19:04:22Z"
      },
      "occurred_at": "2026-08-28T19:04:22Z"
    },
    {
      "id": "war_01krdgeqcxet5s7t44vh8rt9mg",
      "emoji": "👍",
      "status": "received",
      "from": {
        "phone_number": "+14155550100",
        "bsuid": "US.13491208655302741918"
      },
      "occurred_at": "2026-08-28T19:01:10Z"
    }
  ],
  "next_cursor": null,
  "prev_cursor": null,
  "refresh_cursor": "eyJ2IjoxLCJzIjoiMjAyNi0wOC0yOFQxOTowNDoyMloiLCJpIjoiMDE5ZTFiMDctNWQ5ZC03NjhiLTkzZTgtODRkYzUxOGQyNjkxIn0"
}
```

O histórico de reações é separado dos eventos de entrega da mensagem. O endpoint de eventos de mensagem não contém alterações de `whatsapp.reacted`. Para retenção e paginação, consulte a [referência do log de reações](/docs/api/reference/list-whatsapp-message-reaction-events).

## Solução de problemas

- **Nenhum webhook de reação**: Verifique se a assinatura inclui `whatsapp.reacted`. Uma reação a uma mensagem antiga cuja referência do provedor não pode mais ser resolvida não produz reação correspondente, entrada de log ou webhook.
- **Reação ausente na lista de mensagens**: Consulte a mensagem original. A reação está vinculada a ela e não possui uma linha de mensagem separada.
- **Estado da reação muda inesperadamente**: Atualize o `reactions` da mensagem original em vez de ordenar eventos de webhook por horário de chegada ou timestamp.

## Próximos passos

- [Enviar ou remover uma reação](/docs/guides/whatsapp/reactions)
- [Ler payloads de eventos WhatsApp](/docs/guides/whatsapp/events)
- [Receber mensagens WhatsApp](/docs/guides/whatsapp/receiving-whatsapp)

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/products/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
