Skip to main content
Run your business · Marketing and publishing
Marketing and publishing

Campaigns

Approve one version, then automation runs entirely inside the rules you set for it.

Updated September 9, 2026 3 min read

Open /admin/campaigns. Each campaign carries a name, a status, a version, and an approved version, and copy that has not been through that approval never sends, regardless of how ready it looks in the editor.

The Campaigns screen in the fictional Northline Roofing workspace, showing active, paused, and in-review campaigns.
Campaigns in the fictional Northline Roofing workspace: Storm inspection availability and Spring roof tune-up, each with its own approval state. Fictional demo data. Select the image to view it full size.

Create and approve

New campaign starts as a draft. Edit audience, cadence, send limits, and stop rules. Activation is propose_campaign_activation if the assistant stages it, or an explicit approve in the UI. Only the approved version runs.

A later edit bumps version. Sends keep using approved_version until you approve again.

Duplicate a campaign

Any campaign card has a Duplicate action. It copies name, audience, steps, sender, schedule, limits, and stop rules into a fresh draft named <name> (copy). No members, sends, receipts, or approvals carry over, so the copy cannot send until it is enrolled and approved. The assistant can propose the same copy for approval through the shared action queue.

The source version is checked before copying. The draft, steps, provenance and audit save together. If the response is interrupted, retry Duplicate: the pending request survives a reload and returns the same copy. A changed source needs a fresh review. The fictional workspace also saves the copied draft, opens its dry run and keeps its recipient list empty.

What stops a send

Stop rules get re-read before every single send, not just when the campaign starts: reply, unsubscribe, suppression, and exhausted retries all check fresh each time. A member who is already stopped stays stopped even if the scheduled job that would have mailed them wakes up on schedule. Each send carries an idempotency key and a provider receipt, and an uncertain provider outcome refuses a blind retry rather than risking a duplicate.

Delivery Runs

/admin/email-sequences is sequence and delivery status for the same memberships. Use it for the receipt trail. Campaigns is the editor.

If the source changes before a copy is saved, the request is refused and the list refreshes. Review the current source, then choose Duplicate again. An interrupted response keeps the original request so a retry checks for the existing draft.

Example: reuse a seasonal campaign

Northline wants to reuse “Spring estimate follow-up” for an autumn audience.

  1. Find the existing campaign and choose Duplicate.
  2. Open “Spring estimate follow-up (copy)”. Confirm it is a draft with an empty recipient list.
  3. Review the copied message steps, sender, schedule, limits and stop rules. Update the seasonal wording before seeking approval.
  4. Stage the intended contacts into the draft from Leads. Check skipped or failed contacts before activating the campaign.
  5. Review and approve the version you intend to run. Copying and enrollment do not approve it for sending.

If the connection drops after Duplicate, reload and retry the pending request. Check for the existing copy before deliberately starting another copy request. If the source campaign changed, review its current version before trying again.