> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaigns hub

> Map of the /campaigns dashboard surfaces — the list, create wizard, journey builder, and per-campaign detail — with role gates, lifecycle, and cross-links to outbound and messages hubs.

# 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

| Surface | Dashboard route | What it is |
| - | - | - |
| **List** | `/campaigns` | The campaign landing page — browse every campaign by status (draft, scheduled, sending, paused, completed, cancelled), search, filter, and open any row into its detail page. |
| **Create wizard** | `/campaigns/create` | The five-step guided flow for blast and drip campaigns: setup, audience, message, schedule, and review. It also saves drafts and resumes them later. |
| **Journey builder** | `/campaigns/journey` | The visual canvas for event-driven journeys — draw triggers, sends, waits, conditions, A/B splits, and goals, then simulate and activate the graph. |
| **Campaign detail** | `/campaigns/[id]` | The per-campaign read page with live stats, drip analytics, holdout lift, ROAS, pause/resume/cancel controls, and the launch review panel. |

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:

| If you want… | Open | Why |
| - | - | - |
| One scheduled send to a list or segment, now or later | **Create wizard** → blast | The audience is resolved once at launch and every eligible contact gets the same message in the same window. |
| A fixed multi-step sequence on a shared clock | **Create wizard** → drip | Onboarding series, nurture cadences, and re-engagement waves where every enrolled contact moves through the same steps on the same schedule. |
| A behavior-triggered flow that enrolls contacts one at a time | **Journey builder** | Signup welcomes, cart reminders, win-back flows, and any "when X happens, start this contact here" automation. |
| To review, pause, resume, or cancel a live campaign | **List** → click the row | The detail page owns lifecycle controls and per-campaign analytics. |

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](/guides/campaign-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:

```bash theme={null}
curl -X POST "https://api.orbit.devotel.io/api/v1/campaigns" \
  -H "X-API-Key: $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Summer sale blast",
    "type": "blast",
    "channel": "sms",
    "audience_type": "list",
    "audience_id": "list_summerVIPs",
    "message_template": "Hi {{first_name}}, early access to our summer sale: 25% off through Sunday. Reply STOP to opt out."
  }'
```

Then launch it:

```bash theme={null}
curl -X POST "https://api.orbit.devotel.io/api/v1/campaigns/cmp_abc123/send" \
  -H "X-API-Key: $ORBIT_API_KEY"
```

For the full lifecycle — audience preview, dry-run, drip steps, and analytics — see [Send a campaign end-to-end](/guides/campaign-end-to-end). The complete endpoint reference is at [Campaigns API reference](/api-reference/endpoints/campaigns).

### 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](/guides/campaign-journey-builder) walks the canvas, node types, validation rules, and conversion goals end to end.

## Cross-links

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](/guides/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](/guides/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](/guides/outbound-dialer-campaign) and [Voice broadcasts](/guides/voice-broadcasts) for agent-assisted and automated voice campaigns that live outside the campaigns hub.

## Related reading

* [Build a blast or drip campaign with the create wizard](/guides/campaign-create-wizard)
* [Campaign journey builder](/guides/campaign-journey-builder)
* [Send a campaign end-to-end](/guides/campaign-end-to-end)
* [Campaigns API reference](/api-reference/endpoints/campaigns)
* [A/B testing campaigns](/guides/campaign-ab-testing)
* [Campaign lifecycle](/concepts/campaign-lifecycle)
* [Campaign journey pipeline](/concepts/campaign-journey-pipeline)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.