Skip to main content
message_status é o recibo do WhatsApp para mensagens enviadas pelo número (pela API ou pelo celular). É o equivalente aos ticks cinza e azuis.

Status

Os status não são cumulativos nem garantidos. Um contato com confirmação de leitura desligada nunca gera READ, e um contato offline pode pular de SENT direto para READ dias depois.

Um recibo por aparelho

O WhatsApp confirma a mensagem em cada aparelho do contato, e o Wabox repassa cada recibo como um evento próprio, sem consolidar. Uma mensagem para um contato com celular + WhatsApp Web gera dois RECEIVED (e depois dois READ), com o mesmo ids e status, phone_device diferente e event_id diferente. São eventos distintos, não reentregas. Não há ordem entre esses recibos nem entre eles e o delivery. O contato pode confirmar antes do seu celular mandar o SENT, e uma reentrega chega depois de eventos mais novos. Para mostrar os ticks:
  • Trate o status como uma escada por message_id: delivery sem erro = ✓, RECEIVED = ✓✓, READ/PLAYED = ✓✓ azul. Aplique só o que sobe de degrau e ignore o resto. O primeiro RECEIVED já marca entregue, os dos outros aparelhos não mudam nada.
  • SENT nunca rebaixa o status, porque pode chegar depois de RECEIVED/READ.
  • Ignore phone_device, a não ser que você queira status por aparelho.

Casando com o envio

ids contém o message_id devolvido por POST /send-* (e pelo delivery). Guarde message_id → seu registro na hora do envio e atualize o status a cada evento.

Volume

Em grupos grandes, cada participante gera recibos próprios. Uma mensagem para 200 pessoas pode render centenas de eventos. Se você só precisa de recibos de conversas individuais, filtre por is_group no seu lado ou desligue o tipo com ignore_message_status_callback. Não há filtro de grupo específico para este webhook.