Sign inGet Started

Webhooks de reação do WhatsApp

whatsapp.reacted é disparado quando um contato reage a uma das suas mensagens, troca o emoji ou remove a reação. Reações enviadas pelo seu número comercial não geram esse evento. Uma assinatura de whatsapp.received não inclui reações, e uma reação não abre uma janela de atendimento ao cliente.
Uma reação é uma anotação em uma mensagem, não uma mensagem própria, então não faz parte da linha do tempo de entrega e não contém os campos que todo evento de mensagem contém.

O payload

whatsapp_id identifica a mensagem que recebeu a reação, não a reação em si, e emoji é a alteração feita pelo usuário. Um usuário que reage, troca o emoji e depois remove a reação produz três eventos naquela mesma mensagem. WhatsApp não envia uma remoção entre os dois primeiros, então uma troca chega como um único evento com o novo emoji.
Exemplo de código
{
  "data": {
    "emoji": "👍",
    "from": { "phone_number": "+14155550100" },
    "to": { "phone_number": "+13124495569" },
    "whatsapp_id": "wam_01ky8b3xq4gd7pmzn2ka51f7te",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b"
  },
  "timestamp": "2026-07-23T14:52:11.000Z",
  "type": "whatsapp.reacted"
}
WhatsApp registra o horário da reação com precisão de segundo, então dois desses três eventos podem compartilhar o mesmo timestamp. Ordená-los por esse valor não vai sequenciá-los, e a ordem de entrega também não, já que retentativas a tornam não confiável. Trate a reação que cada evento carrega como a alteração que ele descreve. Não reconstrua a sequência a partir dos eventos nem considere o último a chegar como a reação vigente da mensagem, porque nem os timestamps nem a ordem de chegada sustentam isso. Consulte a mensagem para ver as reações que permanecem: GET /v1/whatsapp/messages/{message_id} retorna uma entrada por remetente em reactions, e o log de reações da mensagem contém todas as alterações.
emoji está presente e é null quando o usuário removeu sua reação, então um null é a remoção em si, não um valor ausente. O emoji é entregue exatamente como WhatsApp o enviou e não é normalizado, então e ❤️ chegam como strings diferentes.

Próximos passos