A campaign sends the same message to every contact of a group, wave after wave, at the pace you set. The gateway spreads the messages over your phones, follows each one, and shows live how many left, were delivered or failed.
Everything on this page happens in Campaigns, in the Messages section of the menu.
What campaigns are for
- Announcing a promotion, an opening, a price change to all your customers.
- Reminding a list of people of an appointment or a deadline.
- Informing members of an association, parents of a school, staff of a company.
For one message or a short list typed by hand, use Quick send instead: see Sending messages.
Before you start
- A contact group with the recipients: see Contacts and groups.
- At least one connected phone with SIM cards that can send: see Devices.
- An Operator or Superadmin account. A Read only account sees the campaigns but no button.
Create a campaign
Click New campaign. The Create a campaign window has three steps.
Step 1: Name and recipients
| Option | Allowed values | Effect |
|---|---|---|
| Campaign name | 1 to 120 characters | For you only, never sent |
| Contact group | One of your groups | The recipients. They are frozen at creation: a contact added to the group afterwards receives nothing |
When the campaign is created, the gateway takes the reachable members of the group at that moment:
- contacts who opted out (
STOP) are left out; - a number present twice is only sent once;
- a group with no reachable contact is refused, with an explanation, rather than giving an empty campaign;
- a campaign holds at most 50,000 recipients.
Step 2: Message
| Option | Allowed values | Effect |
|---|---|---|
| Message source | Free text or Saved template | Where the text comes from |
| Message sent | Up to 2000 characters | The text, with Free text. The counter under the box shows the characters and the number of SMS billed per recipient |
| Template | One of your templates | With Saved template. See Templates |
| Shorten and track links | Off (default) or on | On: every http:// or https:// address of the text is replaced, when the campaign starts, by a short link attached to this campaign; each click adds to its Clicks counter. The counter under the text and the summary show the length with the short links. See Short links |
Important: a campaign sends the same text to everyone. Template placeholders are resolved once,
at creation, without any contact's details: {firstname|Dear customer} becomes "Dear customer" for
everyone, and {firstname} without a fallback stays visible as is. Use fallback values, or write
the text without placeholders.
Step 3: Pace and scheduling
| Option | Default | Allowed values | Effect |
|---|---|---|---|
| Pace (messages per minute) | 60 (empty field) | 1 to 600 | How many messages the campaign releases per minute, all phones together |
| Wave size | 20 (empty field) | 1 to 500 | How many recipients are released at once, in each wave |
| Schedule the send | Off | On or off | Off: the button reads Send now and the campaign starts at once. On: the button reads Schedule and a Scheduled start date is required |
| Scheduled start | None | A future date and time | The moment the campaign starts by itself. Read in the platform time zone (Settings > Sending) |
Leave the pace fields empty to use the gateway defaults. The pace of a campaign is a ceiling: the real speed also depends on your phones, the quota of each SIM and the per-SIM limits of the settings, per minute and minimum interval between two SMS (see SIM cadence).
The Summary at the bottom recalls what will happen. Then:
- Send now creates the campaign and starts it immediately.
- Schedule creates it in Scheduled state; it starts by itself at the chosen time. Until then you can edit it, start it earlier with Start, or cancel it.
If the campaign is created but cannot start (no phone online, for instance), the window closes anyway and a message tells you why: the campaign stays in the list as a Draft, with its Start button. Do not create it a second time.
Follow a campaign
Each row of the list shows the status, a progress bar and the counters:
| Counter | Meaning |
|---|---|
| Targets | Recipients frozen at creation |
| Sent | Handed over to the carrier by a phone |
| Delivered | Confirmed received by the recipient's phone (when the carrier reports it) |
| Failed | Given up after the retries allowed in the settings |
| Pending | Not settled yet |
| Cancelled | Never sent because the campaign was cancelled |
| Clicks | Opens of the short links attached to this campaign: the ones made by Shorten and track links, or created in Short links with this campaign. See Short links |
While it runs, the row also shows the pace, the start date and an estimated end, computed from the pace you set.
The Status filter narrows the list to one status:
| Status | Meaning |
|---|---|
| Draft | Created, not started |
| Scheduled | Will start by itself at the scheduled time |
| Running | Releasing waves (possibly waiting for the night or Sunday pause to end) |
| Paused | Stopped by you, can resume |
| Completed | Every recipient is settled |
| Cancelled | Stopped. Can be relaunched for the recipients it did not reach |
| Failed | Reserved for a campaign the gateway could not run; not produced in normal use |
The status is always driven by the gateway: it never changes by hand, only through the buttons below.
Actions
The main button of a row depends on its status (Start, Pause, Resume or Relaunch). The ... menu at the end of the row lists every action, and stays in view even on a narrow screen where the table scrolls sideways. An action you may expect but that the status does not allow yet (deleting a running campaign, for instance) stays in the menu, greyed out, with the reason written under it.
| Action | Available when | What it does |
|---|---|---|
| Start | Draft, Scheduled | Starts now, whatever the scheduled date |
| Pause | Running | Stops releasing new waves. Messages already handed to a phone still leave |
| Resume | Paused | Continues where it stopped, in the same order. No recipient receives twice |
| Relaunch | Cancelled, with recipients left | Sends the message to the recipients the campaign did not reach, now or at a date you choose. See below |
| Rename | Always | Changes the name only. The name is your label and is never sent, so it can change at any time, even while the campaign runs |
| Edit | Draft, Scheduled, never started | Changes the name, text, pace, wave size and scheduled start. Clearing the date turns a scheduled campaign back into a draft |
| Duplicate | Always | Opens the wizard pre-filled: same name followed by "(copy)", same group, same text, same pace. The schedule is left for you to set again, and the recipients are frozen again from the group as it is now |
| Cancel campaign | Draft, Scheduled, Running, Paused | Stops the campaign. Recipients not yet released are abandoned, and queued messages not yet handed to a phone are withdrawn. A message already on a phone cannot be recalled |
| Delete | Draft, Scheduled, Completed, Cancelled, Failed | Removes the campaign. Refused while it is Running or Paused: cancel it first. See below |
To send a completed campaign again to the whole group, Duplicate it.
Relaunch a cancelled campaign
Relaunch picks a cancelled campaign up again, for the recipients who did not receive the message: those it had not reached yet, and those whose message was withdrawn from the queue when you cancelled. The window tells you how many they are. Recipients who already received the message are never sent it a second time.
| Option | Choices | Effect |
|---|---|---|
| When | Relaunch now or Schedule | Now: the campaign is Running again at once. Schedule: it becomes Scheduled and resumes by itself at the date you choose, read in the platform time zone |
The campaign keeps its message, its short links, its pace and its statistics: the counters continue from where they were, and the Cancelled counter goes back to zero as the recipients return to Pending. The night and Sunday pauses apply as usual.
Once a relaunched campaign has started, its text and pace stay frozen, even if you scheduled the relaunch: only Rename remains. Recipients whose message failed are not sent again by a relaunch; to reach them, duplicate the campaign into a new one.
Relaunch is greyed out when nobody is left to send to: every recipient already received the message or failed.
Delete a campaign
Deleting removes the campaign, its list of recipients and its statistics, for good. A confirmation window says so before anything happens.
- Messages already sent stay in the message history and the conversations: they are your record of what left.
- Its short links keep working, since recipients may still open them days later. They are simply no longer attached to a campaign in Short links.
- A Running or Paused campaign cannot be deleted: cancel it first, then delete it.
- Right after a cancellation, a message that was already on a phone may still be on its way. Delete stays greyed out ("Some messages are still on their way") until it has settled, which takes at most a few minutes.
Night and Sunday pauses
In Settings > Sending, the Night pause for campaigns and Pause campaigns on Sunday hold campaigns only. While a pause is active:
- a running campaign stays Running but releases nothing, then continues on its own when the pause ends. You never have to resume it by hand;
- campaign messages already in the queue wait too: a wave released at 19:59 does not leave at 22:00;
- everything else leaves at any hour: quick send, API calls, conversation replies, automatic replies.
The pauses are read in the platform time zone. See Settings.
What else affects a campaign
| Setting or event | Effect on the campaign |
|---|---|
| Retries (Settings > Sending) | A failed message is retried like any other before it counts as Failed |
| Routing and SIM quotas | Decide which phone and SIM sends each message. A SIM at its daily quota is skipped. See Routing |
| No phone online | Messages wait in the queue; the campaign progresses when a phone comes back |
| Opt-out received during the campaign | Recipients were frozen at creation; a STOP received later is still honoured by the queue, which refuses the number |
| Deleting the group | Refused while a campaign using it is Running or Scheduled |
With the API
| Method | Path | What it does |
|---|---|---|
GET |
/api/v1/campaigns |
List, ?status= filters |
POST |
/api/v1/campaigns |
Creates. name, groupId, then body or templateId, optional throttlePerMinute, waveSize, scheduledAt, shortenLinks |
GET |
/api/v1/campaigns/{campaignId} |
One campaign |
PATCH |
/api/v1/campaigns/{campaignId} |
With name alone, renames the campaign in any status. Any other field edits a draft or scheduled campaign that never started. "scheduledAt": null turns it back into a draft |
DELETE |
/api/v1/campaigns/{campaignId} |
Deletes a campaign that is not running or paused |
POST |
/api/v1/campaigns/{campaignId}/start |
Starts |
POST |
/api/v1/campaigns/{campaignId}/pause |
Pauses |
POST |
/api/v1/campaigns/{campaignId}/resume |
Resumes |
POST |
/api/v1/campaigns/{campaignId}/cancel |
Cancels |
POST |
/api/v1/campaigns/{campaignId}/relaunch |
Relaunches a cancelled campaign for the recipients it did not reach. Optional scheduledAt for a future date |
GET |
/api/v1/campaigns/{campaignId}/stats |
Live counters and estimated end |
With an API key, reading needs the read scope and every change needs the admin scope. See
API keys.
Without scheduledAt, the campaign is created as a draft and waits for /start; with a future
scheduledAt, it is scheduled. A date in the past is refused (SCHEDULED_AT_IN_PAST). The
campaign.completed event can notify your tools: see Webhooks.
A relaunch keeps the same campaign identifier. Relaunching a campaign that is not cancelled returns
403 VALIDATION_ERROR; relaunching one with nobody left returns 422 VALIDATION_ERROR. Deleting a
running or paused campaign, or a cancelled one with a message still on its way, returns
403 CAMPAIGN_NOT_DELETABLE. Editing anything else than the name of a campaign that has started
returns 403 CAMPAIGN_NOT_EDITABLE.
Troubleshooting
| What you see | Why, and what to do |
|---|---|
| "Running" but nothing leaves | A night or Sunday pause is active, no phone is online, or every SIM reached its quota. Check Devices and Settings > Sending |
| The campaign was created but stayed a draft | It could not start (reason shown in the message). Fix the cause, then Start from the list |
| Creation refused because of the group | The group is empty, or all its contacts opted out |
| A contact added yesterday received nothing | The recipients were frozen when the campaign was created. Duplicate it for the new members |
Recipients received {firstname} |
Campaigns are not personalised. Add a fallback value in the template, or use free text |
| Edit is missing | The campaign has started. Its text and pace are frozen; Rename, Pause, Cancel campaign and Duplicate remain |
| Delete is greyed out | The campaign is running or paused: cancel it first. Just after a cancellation, wait for the last messages on their way to settle |
| Relaunch is greyed out | Every recipient already received the message or failed. Duplicate the campaign to send again |
| Failures pile up | Open the Activity log: each failure has its cause and what to do |