Read campaign metrics as a chain. Each stage helps explain where delivery, attention, or action was lost.
Separate message statuses
Track attempted, sent, delivered, and failed messages separately. The official status available from your integration should determine which label you display.
These values diagnose sending and phone-number quality. A sent status is not delivery, and delivery does not prove that the message was understood.
- Delivery rate: delivered divided by sent.
- Failure rate: failed divided by attempted.
- Read rate: read divided by delivered.
- Always show the denominator.
Treat read status as a signal
A read status indicates recorded attention, subject to the status data available from the messaging service. Write “recorded as read,” not “definitely seen.”
Compare read rate over time across similar campaigns. A change may reflect timing, sender recognition, targeting, or excessive frequency.
Make replies qualitative
Reply rate shows that a conversation opened, but not whether it was useful. Classify replies as interest, question, refusal, support request, or unrelated response.
Count unique recipients as well as reply messages. One person can send several messages. Median time to first reply also helps teams plan staffing.
Connect the channel to the goal
If the goal is a booking, attributable bookings are the final KPI—not reads. Define attribution before launch using a tracked link, code, reply, or updated status.
State the conversion denominator. Conversion from delivered messages answers a different question from conversion across the original contact group.
Use recipient-level detail carefully
Campaign totals reveal the pattern. Recipient-level events help resolve invalid numbers, failures, untreated replies, and contacts who already converted.
Limit access and retention to what the team needs. Operational usefulness is not a reason to keep detailed personal data indefinitely.