Campaigns
Send a template to a segment — now or on a schedule — with server-enforced safety gates.
A campaign is a one-to-many send: a template (content) + a segment (audience) + a from-address on a verified domain, sent immediately or scheduled. Campaigns are the end of the contacts → segments → campaigns pipeline.
Send-readiness gates
Before a campaign sends, every one of these must hold — and they're enforced on the server, so they apply equally to the dashboard and a direct API call:
- The from-domain is verified and sending-allowed (re-checked at send, not just at create).
- There's a non-empty subject (from the campaign or the template default).
- The template is a publishable marketing template — not transactional, not an archived/draft template.
- The segment is not archived and has at least one subscribed member.
- Any schedule is within bounds — not in the past, and no further than 90 days out.
When a send is blocked, the validation dialog lists exactly which gate failed and how to fix it, rather than failing opaquely. The API returns the same reasons as a structured 409/422.
Lifecycle & archiving
A campaign moves through draft → scheduled → sending → sent (or canceled/failed). Terminal campaigns (sent, canceled, failed) can be archived directly; a non-terminal campaign must be canceled before it can be archived, so you never archive a send that's still in flight. As with segments, archived campaigns are restorable and auto-pruned after ~30 days.
Scheduling semantics
A schedule in the past is treated as "send now"; a schedule beyond 90 days is rejected at both create and send time. These bounds are consistent across the dashboard and the v1 API.