A campaign is a batch notification job. It wraps a template with a list of recipients, supports scheduling, and tracks delivery through a status lifecycle. Use campaigns when you need to send the same notification to many users with full lifecycle visibility.

What is the campaign lifecycle?

Campaigns progress through five statuses:
StatusDescription
draftInitial state. Add recipients and configure settings.
scheduledSend has been scheduled for a future time.
sendingDelivery is in progress.
sentAll recipients have been processed.
failedDelivery encountered an error.
draft → scheduled → sending → sent
                  ↘ sending → failed
You can only modify a campaign while it is in draft status. Once scheduled or sent, the campaign is locked.

How do I add recipients?

There are two ways to target users: Manual — Post an array of user IDs to the add recipients endpoint. CSV upload — Upload a CSV file with a userId column and optional variable columns via the upload endpoint. This is ideal for large recipient lists with per-user variable values.
CSV uploads support variable columns that map to the template’s variableSchema. Each row can have unique variable values for personalized delivery.

How does scheduling work?

When you call the send campaign endpoint, you can include an optional scheduledAt timestamp (ISO 8601). If provided, the campaign moves to scheduled status and delivery begins at the specified time. If omitted, delivery starts immediately.

What is the deliveryMode?

Campaigns support two delivery modes:
ModeDescription
realtimeDelivers notifications immediately per target
batchQueues notifications for bulk processing
Realtime mode is designed for single-target sends. For campaigns with many recipients, use batch mode to avoid rate limiting.

How do campaigns differ from one-call notifications?

FeatureCampaignOne-call notification
RecipientsUp to 100,000 via CSVUp to 10,000 targets per call
SchedulingSupports future schedulingImmediate only
LifecycleFull status trackingFire-and-forget
Variable valuesPer-user via CSV columnsSingle set for all targets
Use caseMarketing, announcementsTransactional, real-time alerts
See Notifications for the one-call alternative.