When delivery drops, the first instinct is to suspect the platform. It is nearly always something closer to home, and working through in the right order finds it in minutes rather than days.
Establish the shape first
Before investigating causes, characterise the failure:
- Sudden or gradual?
- All sends, or one campaign or sequence?
- All countries, or one?
- All contacts, or a specific import or segment?
- Did anything change — a new list, a new template, a code deploy, a provider change?
A sudden drop confined to one segment is a data problem. A gradual drop across everything is list decay. Those need completely different responses, and guessing wrong wastes a day.
Work through in this order
- Number formatting. The most common cause by a distance. Missing country codes, doubled country codes, leading zeros retained, spaces and dashes, numbers stored as numeric types that dropped a leading digit.
- Contacts without WhatsApp. Not every mobile number has an account. A new list from a source that never verified this will show a structurally lower ceiling.
- Invalid or disconnected numbers. Ordinary decay, worse on older lists.
- Blocked by recipients. Messages to people who blocked you are accepted and never delivered. A rising count here is a quality warning, not merely a delivery one.
- Template or category problems. A paused or disabled template fails at send.
- Quality rating and limits. If you are at your cap, sends beyond it fail.
- Genuine platform issues. Real, rare, and usually visible across many senders at once.
Check formatting before anything else
Normalise every number to a single canonical international format on write, and validate on import. This one discipline eliminates the largest category of delivery failure permanently, and it also fixes the duplicate-contact problems that break suppression.
Read the error codes
Failures come back with reasons. Group them and count. A single dominant reason points straight at the cause, and the distribution is far more informative than the headline rate. If your reporting only shows a percentage, get access to the underlying reasons — you cannot diagnose without them.
The gradual case
Lists decay: people change numbers, abandon accounts, block senders. A few percent a year is normal. If your delivery rate has slid slowly over a year, the fix is list hygiene rather than debugging.
Remove contacts that have failed repeatedly across several campaigns, and re-permission anyone long dormant. Both lower cost and raise measured delivery at the same time.
Prevent rather than diagnose
- Validate and normalise at the point of capture, not at send time.
- Reject obviously malformed numbers at the form.
- Retire contacts after a defined number of consecutive failures.
- Alert on delivery rate falling below your normal band, per campaign.
- Never bulk-import without checking a sample of the formatting first.