You sent a broadcast to 200 customers. WhatsApp showed a tick. Nobody replied, and when you asked one of them, they never received it.
This has two completely different sets of causes depending on how you sent it, and most guides mix them together. Work out which you are on first, because the fixes share nothing.
Broadcast list - you used the New broadcast option in the WhatsApp or WhatsApp Business app on your phone.
Business API - you sent from a platform or dashboard, using an approved template.
If you used a broadcast list
The saved-contact rule explains most failures
A broadcast list only delivers to people who have saved your number in their phone. Not people you have saved. Them saving you.
This one rule accounts for the majority of "nobody got my broadcast" reports, and it is invisible - WhatsApp shows the message as sent on your side regardless. A list of 200 customers where 30 have saved your number reaches 30 people.
There is no workaround inside the app. Either ask customers to save your number, or move to the Business API, which has no such requirement.
The 256 limit
A broadcast list caps at 256 contacts. Beyond that you need multiple lists, and sending the same message across several lists in quick succession is exactly the pattern that triggers spam heuristics.
Rate limiting after reports
If enough recipients report or block you, WhatsApp quietly restricts the number. Messages appear to send and simply do not arrive. There is no notification. Reduced delivery after a campaign that generated complaints is usually this.
The recovery is slow and behavioural: send less, send only to people who expect it, and give it weeks.
If you used the Business API
Here "sent" means something narrower than people assume: Meta accepted your API call. It is not a delivery confirmation. A message can be accepted and then never delivered, with nothing in the response to indicate it.
Run these four checks in order.
1. Billing on the WhatsApp Business Account
A payment problem stops delivery while leaving everything else looking healthy. Meta's health endpoint will report the WABA and business as available, quality rating green, and still deliver nothing.
The signal usually arrives by email - "Your WhatsApp messages aren't being delivered", naming a payment or account setup issue - rather than through the API. Check the payment method on the business that owns the WABA, and confirm it is attached as the funding source for the WhatsApp account specifically, not merely present on the business.
This is worth checking first precisely because it is invisible everywhere else.
2. The template
Business-initiated messages must use a template Meta approved in advance. Common failures:
- The template was rejected and the campaign was built on it anyway
- It is approved in one language but sent with a different language code
- Its category does not match the content, and it was throttled or refused
- Variables have no sample values, so it never cleared review
3. The 24-hour window
If the recipient has not messaged you in the last 24 hours, only a template will go through. Free-form text is refused, usually with an error that does not say so plainly.
From 1 October 2026 Meta also charges for utility and service messages sent inside that window, after the first 1,000 service messages per number per month - so the window now affects your bill as well as deliverability.
4. Whether the recipient number is itself an API number
An unusual one, but it happens more than you would expect when businesses test with their own numbers: a number registered to the WhatsApp Business API no longer receives messages in the WhatsApp app. They route to the API instead.
If that registration is stale or nothing is listening, messages vanish. Meta accepts them, returns a message ID, and they arrive nowhere a human will see.
The tell is that everything on the sending side checks out and messages to other numbers work fine.
The check most people are missing
Almost every hard-to-diagnose delivery problem comes back to the same gap: no delivery webhook configured.
Without delivery-status callbacks you have no way to distinguish "Meta accepted it" from "the recipient's phone received it". You are left inferring from WABA analytics, which lag by several hours, or waiting for a customer to tell you.
With webhooks configured, each message moves through sent, delivered and read, and failures arrive with an error code attached - in seconds. It converts a multi-hour investigation into a status field.
If you take one thing from this post: configure the webhook before you need it.
Quick reference
| Symptom | Most likely cause |
|---|---|
| Broadcast list, some received it | Recipients who did not save your number |
| Broadcast list, nobody received it | Number rate-limited after spam reports |
| API, "sent" but never delivered | Billing block on the WABA |
| API, rejected immediately | Unapproved template, or wrong language code |
| API, free-form text refused | Outside the 24-hour window |
| API, one specific number never receives | That number is registered to a Business API account |
| Cannot tell what happened at all | No delivery webhook configured |
Before your next broadcast
Send one message to a number you can physically check, and confirm it arrives - not that the API returned success. Those are different claims, and only the second one matters to your customers.
Two tools that help:
- WhatsApp broadcast message generator - write the message and check it against template rules before submitting
- WhatsApp message preview - see exactly how formatting and buttons render before you send
And if you are still on broadcast lists and hitting the saved-contact rule, WhatsApp business message templates covers what the API route requires instead.