Messages stopped sending: a diagnostic order of operations
Diagnose in this order: is it everything or some things, then the number, the session, the recipient, the window, and the payload last. Most time lost on this is spent debugging the payload when the answer was at step one.
Step 0: everything, or some things?
This single question halves the search space and takes ten seconds. Nothing is going out at all, or some are failing while others succeed?
| Symptom | Look at |
|---|---|
| Everything, all at once | The number, the session, the token, your own quota |
| Some fail, most succeed | The recipients, the windows, the payloads |
| Everything, gradually | Rate limiting, or a queue that has stopped draining |
Step 1: is the number alright?
Open WhatsApp on the number's own phone. A restriction or ban says so in the app, and that is the fastest place to see it. If that is the answer, no amount of code changes will help - go and read what causes it before sending anything from a replacement.
Step 2: is the session alive?
On the Web protocol, sending depends on a linked device. Sessions end when the phone is reset, when somebody taps log out all devices, when the number is registered on another handset, or when the phone has been offline long enough. The symptom is everything queueing and nothing leaving.
On the Cloud API the equivalent is the token: expired, revoked, or belonging to somebody who lost admin on the asset. Meta returns code 190 or subcodes in the 458 to 467 range, which all mean reconnect rather than retry.
Step 3: is it the recipient?
Scattered failures among successes are usually per recipient: the number is not on WhatsApp at all, is not in E.164, has a typo, or has blocked you. Check whether the failures share anything - a country code, an import batch, a source form.
A cluster of failures that all came from one import is a data problem, not a messaging problem. The most common single cause is local numbers stored without a country code, which fail consistently and look like an outage if the batch is big enough.
Step 4: is the window shut?
On Facebook and Instagram this is code 10, subcode 2018278. On the WhatsApp Cloud API it is a free-form message where a template was needed. Both mean the same thing: the customer has not written recently enough. The window in detail.
Step 5: now look at the payload
Only now. Media that is the wrong format - WebP being the classic - a template whose variable count does not match what was registered, a body over the length limit, or a URL that failed review.
The one to fix permanently
Whatever it was this time, the durable fix is that the failure reason reached a human. A send that fails into a log nobody reads is an outage that lasts until a customer complains. Surface the reason on the conversation, in words, where the person who can act on it will see it.
Questions people actually ask
Why did all my WhatsApp messages suddenly stop?
An all-at-once stop is almost always the number or the session, not the messages: a ban or restriction, a logged-out linked device, or an expired token. Individual failures scattered among successes point at recipients or payloads instead.
Does one failing message mean my number is banned?
No. Single failures are usually the recipient - not on WhatsApp, blocked you, or a bad number. A ban stops everything at once, which is the distinction to check first.
Njiwa
One inbox for WhatsApp, Facebook and Instagram, and an API that sends over either WhatsApp rail. 7 days free, no card.