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 doisRECEIVED (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:deliverysem erro = ✓,RECEIVED= ✓✓,READ/PLAYED= ✓✓ azul. Aplique só o que sobe de degrau e ignore o resto. O primeiroRECEIVEDjá marca entregue, os dos outros aparelhos não mudam nada. SENTnunca rebaixa o status, porque pode chegar depois deRECEIVED/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 poris_group no seu lado ou desligue o tipo com ignore_message_status_callback. Não há filtro de grupo específico para este webhook.