# Use read acknowledgements, typing and reactions

Make service exchanges responsive while preserving message and reaction semantics.

## Prerequisites

A received message, permission to operate the sender and a supported service interaction.

## 1. Decide what the signal means

Mark an incoming message read when your team has taken the conversation into its service workflow. WhatsApp also marks earlier messages in that conversation as read, so this action acknowledges more than the referenced message. Use typing while preparing an answer rather than as a permanent indicator.

## 2. Use the published operation

Use [Mark a message read](/docs/api/reference/send-whatsapp-read-receipt), `POST /v1/whatsapp/messages/{message_id}/read`, for a received message. WhatsApp marks that message and every earlier message in the conversation as read. Set `typing_indicator` when you are preparing a reply. A `202` confirms that the acknowledgement was accepted for processing; it does not prove that the customer saw the indicator. There is no acknowledgement delivery webhook or separate message to poll.

After Meta accepts the acknowledgement, the received message can show `read_at` while keeping its `received` status. The acknowledgement creates no billable outbound message. Follow the published read-receipt operation for typing expiry and eligible message age.

## 3. Handle reaction changes

Subscribe to `whatsapp.reacted` for incoming reaction changes. A reaction annotates a referenced message; it is not another `whatsapp.received` text message. A null emoji can represent removal. Preserve the exact emoji rather than normalizing distinct values.

## 4. Keep history and current state separate

Use the reaction log for changes and the message’s reactions for the current per-sender state. An unresolved older provider reference can leave no matched reaction, so absence of an entry does not prove the customer never reacted.

## 5. Test the end of the interaction

Rehearse added, replaced and removed reactions, delayed processing and an interrupted reply. Ensure the actual answer or human handoff follows the signal.

## Troubleshooting

If a reaction is missing from the message list, inspect the reaction event and referenced-message log instead. If typing lingers in your application state, review its expiry separately from read state. See [WhatsApp events](/docs/guides/whatsapp/events#reactions) for the published webhook shape.

## Next steps

- [Explore the related WhatsApp capability](/products/whatsapp/two-way).
- [Find all WhatsApp guides and explained answers](/products/whatsapp/resources).
- [Prepare your first complete exchange](/products/whatsapp/getting-started).

## 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)
