# Campaign troubleshooting

> A campaign that will not launch, one that stopped mid-flight, a draft you can't edit, recipients that were skipped, and the reason codes behind each.

Source: https://docs.amomic.in/campaigns/troubleshooting

---

Start with the campaign's page. A blocked or stopped campaign names its cause in a banner or in the final check, with what to do and a **What this means** link. This page collects the common cases.

## It will not launch

Most blocks are named by the final check on **Review & send**. A few appear elsewhere: a call script's unknown variable when you press **Continue** on the Message step, and an audience change, used-up credits or a channel no longer on your plan as a toast when you press **Send it**. The ones you'll actually meet:

::: accordion
::: details Nobody in the audience can be messaged
`audience_empty`. The exclusions under the count say what was removed: opt-outs, unusable numbers and missing personalised values are the usual three. See [Why my audience is empty](/campaigns/audiences#why-my-audience-is-empty).
:::
::: details The template is not approved, or its image is missing
`template_not_approved`: Meta reviews templates in minutes, occasionally a day. Check **Channels → WhatsApp → Templates**, or pick one that is already approved.

`template_media_missing`: the template has an image or video header and no file is attached here, usually because it was created in WhatsApp Manager. Upload the file on the template; it needs no new review. See [Image headers](/channels/whatsapp-templates#image-headers).
:::
::: details Your WhatsApp number isn't delivering
`sender_blocked`. The number is connected but Meta is refusing to deliver from it, for example because the WhatsApp Business Account has no valid payment method. The finding says which; fix it in Meta Business Manager or under **Channels**.
:::
::: details Over your plan's recipient limit
`plan_limit`. The message names your limit and your audience size, such as *Your plan allows 5,000 campaign recipients; this audience has 6,214*. Narrow the audience or upgrade. See [Limits & plans](/operate/limits#campaign-recipients).
:::
::: details No calls left today
`voice_daily_cap`. The workspace has placed all its outbound calls for today. Schedule the batch for tomorrow; it starts when calling hours open.
:::
::: details A call script uses a column the list doesn't have
`unknown_variable`, with the token it couldn't fill. It usually follows swapping in a different file. Remove the red chip, or upload a list with that column. See [Call scripts and variables](/campaigns/call-scripts#check-it-before-you-launch).
:::
::: details The audience changed while you were looking at it
`version_conflict`: *This audience now has N recipients, not M.* The launch confirms the count you were shown, so if a tag gained members or someone changed the draft, it refuses rather than messaging a different number of people. Run the check again and launch.
:::
::: details Your plan allowance and credits are used up
`allowance_exhausted`. Checked before anything is staged, so nobody was contacted and the campaign is still a draft. An admin tops up under **Billing**, then you launch again. See [Credits](/operate/credits).
:::
::: details Sending is paused because the workspace is suspended
`workspace_suspended`. A plan invoice is unpaid, so the workspace is suspended. A new launch or a **Resume** is refused. A campaign that was already sending shows *Sending is paused because this workspace is suspended for an unpaid plan invoice.* and stays running without sending. An owner pays the invoice under **Billing**. The campaign then carries on by itself within a few minutes: nobody is skipped and nobody is messaged twice. See [When a payment fails](/operate/plan-changes#when-a-payment-fails).
:::
::: details The channel isn't on your plan any more
`channel_dormant`. A plan change removed this channel. Change plan, or run the campaign on another channel.
:::
:::

## Channel not connected

The campaign needs a sender for its channel and there is none, or the one it named is gone.

- **WhatsApp**: connect a number under **Channels → WhatsApp**. A workspace with no connected number can't broadcast.
- **Voice**: a published agent and a number. See [Numbers & KYC](/channels/phone-numbers).

If a campaign was already sending when its sender was disconnected, it **stops** after the first refusal rather than failing every remaining recipient. The rest stay queued. See below for how to continue it.

## It stopped halfway

Look at the status:

- **Paused**: someone paused it. **Resume** carries on, and nobody already messaged is messaged again.
- **Stopped** (under **Needs attention**): something that affects every recipient went wrong, such as a disconnected sender or a template image that went missing. The red banner names it. The recipients not yet reached are still queued.
- **Sending**, but nothing has moved for a while: check the **Next batch** time. Outside your sending hours it waits for the next open hour. A call batch may read *waiting for a free line*; it carries on as soon as a call ends. See [When a campaign is waiting](/campaigns/results#when-a-campaign-is-waiting).
- **Sending**, and moving slowly: check the pace. At 10 messages a minute, a 2,000-person campaign takes over three hours by design.

::: warning Continuing a Stopped campaign
A Stopped campaign shows a **Resume** button and its banner says to fix the cause and resume, but that button returns an error today: resume only works on paused campaigns. Until that is fixed:

1. Fix the cause the banner names, for example reconnect the WhatsApp number.
2. Press **Retry N failed**. It puts the failed recipients back in the queue and sets the campaign sending again, so the queued recipients go out too. Nobody already messaged is messaged again.

If there's no **Retry** button, don't simply **Duplicate** the campaign: the copy rebuilds the full audience, and the daily limit counts per campaign, so everyone the original already reached would be messaged again (only the weekly cap would hold some back). Instead, open the **Waiting** view, press **Load more** until the table ends, **Export** it, and launch a new campaign to that file. The export carries only phone and name, so map the placeholders again.
:::

## I can't edit my draft

A saved draft can't be reopened in the wizard. From its page you can **Send it** as it was saved, **Duplicate** it, or archive it. To change it, build the campaign again from **Send a campaign**.

A launched campaign can't be edited at all; see [A launched campaign is frozen](/campaigns/overview#a-launched-campaign-is-frozen).

## Recipients that were skipped

**Not sent** isn't an error. A rule left that person out, and the reason is on the row: opted out, already messaged today, over the weekly limit, missing a personalised value. The full list is in [Sending rules](/campaigns/sending-rules#every-refusal-and-what-it-means).

**Retry failed** requeues the recipients that hit a provider or network problem. It deliberately leaves the skipped ones alone: those were rules, and retrying them would be asking the same question for a different answer.

## Provider errors

The report groups failures by the provider's actual code and says whose problem each one is:

- **Affects every message** means an account or number problem, such as a payment issue on the WhatsApp Business Account. The panel says *Retrying will not help until this is fixed*. Fix it, then retry.
- **One person** usually means a wrong number or someone not on WhatsApp. Retrying won't help.
- **Temporary**, such as WhatsApp being busy or messages going out too fast. **Retry these** is the answer.

An unknown failure appears as *The provider rejected it*; known ones have a specific label, explanation and fix. Open a recipient to see the provider's own code and message. Every label is in [Why someone wasn't reached](/campaigns/failure-reasons).

## A campaign is stuck at 99%

Recipients claimed by a sending process that died are returned to the queue after fifteen minutes, so this resolves itself. A recipient that keeps failing is eventually marked failed, so the campaign can finish rather than wait forever on one person.

## The numbers do not add up

The recipient rows are the truth; the counters on the campaign are a summary of them. When a campaign finishes, the counters are rebuilt from the rows, so a finished campaign's numbers are exact. A running one can be a moment behind.

Two things that look odd but are right:

- **Recipients** is the audience after exclusions, so it's smaller than your file.
- A call batch's row on the Campaigns list shows *0% delivered*, because calls aren't "delivered". Open it for **Answered** and **Answer rate**.

## Someone else changed it

`version_conflict` on a pause, resume or cancel means the campaign changed since you loaded the page. Two people acting on the same campaign is normal; the check stops a stale "resume" from restarting something a colleague just cancelled. Reload and act again.

## Still stuck

**History** on the campaign page records who did what and when. Include the campaign's name and id, and any reason code from the error, when you contact support.
