Campaigns
Lifecycle & states
Every campaign moves through a defined state machine. Knowing the states tells you which actions are available and what they actually do.
The states
| State | What it means | Actions available |
|---|---|---|
| Draft | You're still composing. Nothing has been sent. | Edit, Send Test, Schedule / Send, Archive |
| Scheduled | Has a future run time (or a recurrence rule). | Edit content (limited), Pause, Cancel |
| Active | A run is in flight. | Pause, Cancel |
| Paused | A scheduled or active campaign you paused. | Resume, Cancel |
| Complete | All runs finished. Terminal state for non-recurring. | Archive |
| Cancelled | Manually stopped before completion. | Archive |
| Archived | Hidden from the default list, but kept for reporting. | — |
What happens when a run finishes
RCSync auto-updates the campaign state based on what the underlying send returns.
- Immediate and Scheduled campaigns move to Complete when their send finishes successfully.
- Recurring campaigns stay Scheduled between runs and only move to Complete after the final occurrence (set by an end date or send count).
- Open campaigns stay Active — individual inbound triggers don't change the campaign state.
If a run fails or is stopped before it finishes, RCSync pauses the campaign (except for Open campaigns, where only the individual run is marked failed) and emails the campaign creator with a link back to the campaign. Resume after you've reviewed what happened.
Pause and resume
Pause moves the campaign into the Pausedstate. Anything the provider has already accepted will keep delivering — RCSync can't un-fire requests that are in flight. What pause actually stops depends on what hasn't fired yet.
- Recurring campaigns: pausing skips upcoming occurrences until you resume.
- Scheduled campaigns: pausing before the run time defers the run; resuming re-arms it for the same send time.
- Immediate campaigns without a send spread: pause is essentially a status flip. The single send has already been handed to the provider, so resume doesn't re-send anything — it just clears the paused flag.
- Immediate, Scheduled, or Recurring campaigns with a send spread: pause stops the batch chain. Batches the provider has already accepted continue, but any pending batches stay pending; resume picks up at the next pending batch (or asks retry-vs-skip if the most recent batch failed).
Send spread & batching
Large recipient lists are split into smaller batches and sent sequentially across a time window you choose (“spread”). This smooths out downstream load — replies, taps, call-center traffic — instead of spiking it in a single minute. The spread picker lives next to the schedule controls; it applies to Immediate, Scheduled, and Recurring campaigns (not Open).
- Spread drives the batch count. A 60-minute spread on a 10,000-recipient list produces up to 60 batches (one per minute), each carrying ~167 recipients.
- Batches under 100 recipients are folded back in — small lists ship in fewer, larger batches and finish faster than the configured spread.
- A separate hard ceiling further chunks any batch whose payload would exceed the provider's request-size limit. No recipient lands in two batches.
- Each batch shows up as its own row under Runs, tagged “Batch i/N”.
Recurring campaigns produce a fresh batch set per occurrence. The spread window must be shorter than the gap between occurrences; the editor blocks save if it isn't.
Cancel vs. archive
Cancel stops the campaign permanently — no more runs, ever. The numbers still report. Use it for campaigns that should never send again.
Archive hides a finished or cancelled campaign from the default lists, but keeps all of its data accessible in the Archive tab and in analytics. Archiving is the right step for “we're done with this — get it out of my way”.
What can change after activation
Once a campaign leaves Draft, the editable fields shrink. You can still edit the campaign name and add notes, but the audience, message body, and sender are locked. This is a safety thing — we don't want a swap-out mid-run to confuse the analytics.
If you need to change message content after activation, the right path is to cancel and duplicate as a new draft.
