Find out why someone did not get your campaign
A campaign almost never reaches everyone. Some numbers are not on WhatsApp, some contacts are missing a field the template needed, some sends failed once and are waiting to try again. The campaign console tells you which is which, and most of them you can fix and retry yourself.
Before you start — open the campaign: Messaging → Campaigns, then click the row. The console opens as a panel on a desktop, a sheet on a phone.
Steps
Go to the recipient list
In the console, tap Recipients (N). Each person gets a row with three
columns: Recipient, Engagement and Actions. The list pages at 20
recipients, and the search field above it — Search recipients… — matches a name
or a number.
Every pill carries its own count, and a pill with nothing in it is hidden.
Filter to the people you care about
The pills above the list each carry their own count, so you can see the shape of the problem before clicking anything. A pill with a count of zero is hidden unless it is the one currently applied, and All is always there as the reset.
| Pill | Who is in it |
|---|---|
| Delivered | Arrived on the phone — read or not |
| Scheduled | Queued, not sent yet |
| Retrying | Failed once on a recoverable error and waiting for another attempt |
| Processing | Going out right now |
| Stopped | Paused, by you or by a bulk stop |
| Skipped | Not sent, because a template variable had no value on that contact |
| Unreachable | WhatsApp refused the number |
| Gave up | Retried to the limit and still refused |
Skipped is not the same as Unreachable. Skipped means a field was empty on that contact — fix the field and retry, and it will send. Unreachable means WhatsApp would not take the number, which no amount of retrying changes.
Read what the row says
The Engagement column is a sentence, not a code. These are all of them:
| What the row says | What happened |
|---|---|
Delivered — not opened yet | It arrived; they have not opened WhatsApp on it |
Opened 2:14 PM | They read it |
Opened 2:14 PM · replied 2:19 PM | They read it and wrote back |
Sending… | In flight right now |
Scheduled for 9:00 AM | Still queued |
Retrying at 10:00 AM · attempt 2 of N | Failed once, waiting to try again. WhatsApp’s own reason sits beneath it in amber |
Paused | Stopped before it went out |
Not sent — missing info | A template variable had no value on this contact. The line beneath names the field |
Couldn't reach | WhatsApp refused it, with the reason and error code beneath |
Couldn't reach after N attempts | Same, after it had been retried |
Retrying is the one that answers the most common question about campaigns. A
send that fails on a recoverable error goes back into the queue with a later due
time, so a campaign can look like it is simply sitting there when in fact it is
working through attempts. The row is the honest picture: it names which attempt
this is and how many that recipient is allowed. Read both numbers off the row —
the allowance is set per recipient, not per campaign.
Fix a skipped contact and retry
A Skipped row names the field that was empty. Open that contact’s record, fill
the field in, then come back and use the retry control on the row. Its tooltip
tells you the order:
Fill in the missing field on this contact, then retry.
For everything else that failed once, the control’s tooltip is just
Retry send, and the toast confirms Retrying send.
A Gave up row cannot be retried. Its retry control is there but greyed
out — the send has already been attempted to the ceiling and refused, and
pressing again would only fail again. Treat those numbers as bad data.
Restart or stop what is still pending
While anything is still waiting, the console header carries two bulk controls. On a desktop they are Resume All and Stop All; on a phone they live behind a kebab as Resume all pending and Stop all pending. For a one-person send they lose the word: Resume and Stop.
These appear only while something is still pending — a finished campaign shows neither.
Stop All asks twice. The first click relabels it Confirm stop all? in red;
the second performs it. The toasts are All pending events stopped. and
Resumed all pending events.
To resume one person rather than all of them, use the play control on their row —
its tooltip reads Resume this recipient, and the toast is
Recipient resumed.
For a one-person send, read the detail block
A campaign sent to a single contact has no recipient table. Instead the console
shows a block headed by what happened —
Rescheduled after a failed attempt, Not sent — missing info, or
Couldn't reach — followed by Reason, Attempts and Next try.
One recipient, so the console names the reason directly instead of listing rows.
When WhatsApp gave no reason of its own, the block says
WhatsApp didn't give a reason. For a skipped send it says
A template variable had no value on this contact.
The unreachable block
When a campaign has failures, the top of Recipients carries an
Unreachable (N) summary with the line
Mostly invalid numbers or not on WhatsApp — housekeeping, not a to-do.
Take that literally. These are usually typed-wrong numbers and people who do not
use WhatsApp, and there is nothing to chase. The Clean up list button beside
it is permanently greyed out — it cannot be pressed. Hover it and it says why:
Not built yet — what “clean up” should do to these contacts is still being decided.
Deleting a campaign
The kebab on a campaign’s row offers Delete campaign — Delete on a
one-person send — and the confirmation is honest about what it does and does not
do:
“<message preview>” and any pending events will be removed. Already-delivered messages stay in WhatsApp.
Deleting a campaign does not unsend anything. Messages that already reached someone stay in their WhatsApp. Deleting removes the campaign from Raion Hub and cancels whatever had not gone out yet.
If something goes wrong
| What you see | Why | What to do |
|---|---|---|
| A campaign stuck on In progress | A recipient is retrying, with a due time later than the original | Filter to Retrying and read the attempt count |
Not sent — missing info on several rows | The template has a variable bound to a field those contacts do not have filled | Fill the field on each contact, then retry each row |
| A retry control that is greyed out | The row is Gave up — retried to the limit and refused | Nothing will change it. Remove or correct the number in your database |
| No Resume All or Stop All in the header | Everyone has finished, one way or another, so there is nothing left to resume or stop | Nothing to do |
| The bulk controls are there but will not press | No channel access to this number — ask a workspace owner to grant it in Settings → Channel access. | Ask a workspace owner to grant you channel access to that number |
| Stop All did nothing on the first click | It asks twice on purpose | Click Confirm stop all? to go through with it |
Failed to retry send. or Failed to resume recipient. | The request did not reach the server | Try once more; if it repeats, contact WhatsApp support |
| The recipient counts do not match the list’s ticks | The list counts exclusive buckets; the console’s ladder is a funnel | See Track how a campaign performed |
Next
- Track how a campaign performedEvery campaign you send lands on the Campaigns list, and the list updates
- Send a WhatsApp campaignA campaign sends one approved WhatsApp template to a list of people — numbers
- Find a template and check whether Meta approved itTemplates belong to a WhatsApp number, and none of them can be used in a campaign