Log WhatsApp delivery and read status in Google Sheets with message.ack
Track Sent, Delivered and Read states for messages you send, in Google Sheets, from WavesFlo's message.ack events, and why one message has several rows.
- Written by
- By WavesFlo team
- Published
- Published
- Reading time
- 2 min read
The message.ack event fires when an acknowledgement state changes for a message you sent. It carries the message id, the new state, per-state recipient counts and a timestamp. One message produces several events as it moves from sent to delivered to read, so a sheet that appends a row for each ends up with a history, and a sheet that updates one row per message ends up with the latest state.
Do you want the history or the latest state?
| Approach | Match column | Result | Use for |
|---|---|---|---|
| Append every event | None | One row per state change | Measuring how long delivery and reading take |
| Update one row per message | Message id | The latest state, with the time it was reached | A status board for important sends |
How should you read the numbers?
- Delivered is the sturdier figure. It means the message reached a phone or a linked device.
- Read is a floor. People can turn read receipts off in one-to-one chats, a first message may not send a receipt, and a message read only in a notification is not counted.
- In a group, the per-state recipient counts matter more than the label, because a group message is read by some members and not others.
- Events can arrive out of order. Use the event's own time to decide which state is latest.
How do you find slow reads?
With one row per state change, put Message id in A, State in B and Time in C. Then the time from delivered to read for one message is =MINIFS(C:C,A:A,A2,B:B,"read")-MINIFS(C:C,A:A,A2,B:B,"delivered"). Wrap it in IFERROR for messages never read, and report the median.
Agents do not need the sheet to check one message: the WavesFlo inbox shows each one's state, from sending and delivered to read, or failed with its error. The log earns its place when you want the timing across thousands of messages.
Questions
What does message.ack tell me?
That an acknowledgement state changed for a message you sent, with the message id, the state, per-state recipient counts and a timestamp.
Why does one message appear several times?
Each state change is its own event, so a message that is sent, delivered and read produces three.
Is a read rate exact?
No. It is a floor, because people can turn read receipts off.