Skip to main content

Campaigns hub

The Campaigns hub is the landing surface at /campaigns that groups every outbound-campaign console into one tile set. It answers “where do I go to launch or manage a send?” when you open the sidebar’s Campaigns entry. Three working surfaces ship under the route: the list is the default landing page, the create wizard builds blast and drip campaigns, and the journey builder draws event-driven automation graphs. Each surface writes to the same campaign record, so a draft started in the wizard can be reviewed on the list and launched from the detail page, and a journey built on the canvas runs through the same scheduler and analytics pipeline as a blast.

What the hub surfaces

The list and detail are read surfaces first; the wizard and journey builder are authoring surfaces. All four share the same campaign lifecycle and role gates.

When to open which

Start from the shape of the send, not the tile: The split between the create wizard and the journey builder is the split between schedule-driven and event-driven enrollment. A blast or drip resolves its audience at launch; a journey keeps accepting enrollments for as long as it is running.

Campaign lifecycle

Every campaign walks the same status track, regardless of which surface created it:
  1. Draft — the campaign row exists but has not been sent. Drafts appear in the list’s Drafts tab and reopen in the wizard or journey builder for editing.
  2. Scheduled — a future scheduled_at is set and the launch call succeeded, but dispatch has not started. The scheduler flips it to sending at the configured time.
  3. Sending / running — messages are dispatching. Blast and drip campaigns show sending; journeys show running because they continuously enroll contacts.
  4. Paused — dispatch stopped on operator action or a spent credit cap. Resume continues from where it stopped.
  5. Completed — the campaign finished its send or journey naturally.
  6. Cancelled — the operator terminated the campaign. In-flight sends complete; no new sends start.
The detail page at /campaigns/[id] renders the lifecycle controls and charts:
  • Stats panel — live totals for sent, delivered, failed, opened, clicked, and replied.
  • Drip analytics — per-step sent/delivered/read/failed for drip campaigns.
  • Holdout lift — treatment vs. control conversion-rate delta when a holdout is configured.
  • ROAS — attributed revenue and touchpoints when conversion goals are set.
  • Pause / resume / cancel — operator controls that mirror the API lifecycle endpoints.

Role gating

The hub itself renders the tiles to every member role; the gating lives on the destination surface and on the API calls it makes:
  • Read access. The campaign list, detail page, and analytics render for every authenticated member, including viewers. The underlying read endpoints gate to the workspace role plus the relevant scope.
  • Compose access. Opening the create wizard or journey builder and saving drafts works for owner, admin, developer, and supervisor roles.
  • Launch access. Sending, scheduling, or activating a campaign requires an owner, admin, or developer seat. A supervisor or billing seat can compose a campaign, but the launch call returns 403 INSUFFICIENT_PERMISSIONS; the wizard preserves the draft so an owner can finish the send.
The same gate is enforced server-side on POST /campaigns/:id/send, so a direct API call respects the same role boundary as the dashboard button.

Worked examples

Start a campaign from the create wizard

  1. Open Campaigns → Create campaign (/campaigns/create).
  2. Setup: pick type blast, name the campaign, and choose sms as the primary channel.
  3. Audience: select a contact list or segment, or use the manual contact picker.
  4. Message: write the body with personalization tokens ({{first_name}}) and, for SMS-family channels, include carrier-accepted opt-out language such as “Reply STOP to opt out.”
  5. Schedule: choose Send now or a future time with optional recurrence.
  6. Review: confirm the readiness panel, tick the compliance attestations, and click Launch.
For the full step-by-step guide, including drip steps, A/B tests, locale variants, and the API field mapping, see Build a blast or drip campaign with the create wizard.

Start a campaign from the API

The wizard is a client of the public campaigns API. The same blast can be provisioned programmatically:
Then launch it:
For the full lifecycle — audience preview, dry-run, drip steps, and analytics — see Send a campaign end-to-end. The complete endpoint reference is at Campaigns API reference.

Build a journey

For event-driven flows, open Campaigns → Journey (/campaigns/journey). Create a campaign with type: "journey", draw the trigger and message nodes, validate the graph, simulate the projection, and activate. The Campaign journey builder guide walks the canvas, node types, validation rules, and conversion goals end to end. Campaigns are one of several outbound surfaces. Use these links when the task is better handled elsewhere:
  • Broadcast-style sends and audience management — the Outbound hub orientation explains how campaigns, direct sends, templates, and audiences relate under the Outbound section.
  • Channel consoles and sender setup — the Messages hub orientation covers the per-channel configuration, sender pools, opt-out lists, and messaging services that campaigns rely on.
  • Voice broadcasts and dialer campaigns — see Outbound dialer campaign and Voice broadcasts for agent-assisted and automated voice campaigns that live outside the campaigns hub.