
You sent a WhatsApp broadcast to 5,000 contacts through the Cloud API. The API returned success for every request, yet delivery reports say far fewer were delivered. Here are the usual causes.
1. The number isn’t on WhatsApp
The API accepts the request, then the status webhook returns a failure. Flag these numbers so you don’t keep paying to retry them.
2. Meta’s per-user marketing limit
Meta limits how many marketing messages a person receives from businesses within a period. If a user has hit that limit, your message fails with a specific error code. That isn’t a bug in your code. Look at the error code in the webhook payload, not just the “failed” status.
3. Messaging limit tier reached
Each business number can only start conversations with a limited number of unique users per 24 hours. Large audiences on a new number will hit this. Spread the campaign across days.
4. Template paused for low quality
If recipients block or report a template, Meta can pause it. Every send then fails until you fix or replace it. Watch template status webhooks.
5. The contact never opted in
This isn’t an API error, but it is the root cause of points 2 and 4 over time. Don’t put contacts without consent records into marketing sends.
6. Bad phone formatting
“+91 98765-43210”, “098765 43210” and “9876543210” are the same person. Normalise to digits with the country code before sending, or you’ll see failures and duplicates.
Debug checklist
Store the message ID returned for every send.
Log every status webhook with its error code.
Group failures by error code after each campaign.
Wabbiyo, a WordPress plugin on the official Cloud API, handles queueing, delivery tracking and opt-outs for broadcasts if you’d rather not build this yourself: Click here to know more
Top comments (0)