A campaign is a directed flow over a segment of contacts: sends, waits, conditions (for example “opened email?”), tags, and end nodes. Each contact moves through executions step by step; the system tracks partial progress when something blocks the run.

Triggers

Campaigns can start on a schedule, on an event, manually from the UI, or via API—depending on workspace configuration. API-triggered flows let your backend start or advance automation without a marketer clicking “launch.”

When runs pause

If the provider is unhealthy (circuit breaker) or balance is insufficient, the campaign can move to a paused state while pending executions wait. Operators resolve the root cause, then call POST /v1/campaigns/{id}/resume to continue from the next pending contact—see Campaigns API.

Idempotency

Per contact and flow node, the system uses idempotency keys so retries after crashes do not double-send. Completed steps are not re-executed on resume.

Observability

The dashboard shows counts sent, failed, and pending, plus estimated remaining cost. Combine that with Billing and Webhooks for automated monitoring.