How to set up a booster for a new campaign
Intro
Attach a booster to a draft campaign before sending it, so non-openers or non-clickers automatically receive a follow-up after a configurable delay. The booster is auto-scheduled the moment the parent campaign is sent — no additional API call is needed to trigger it.
See API reference: Campaigns — Booster Campaigns
Prerequisites
- An API key with
campaigns.writescope (addcampaigns.readto verify campaign status), or an OAuth token with the same scopes - A parent campaign still in
draftstatus (not yet sent) - Sufficient email sends or SMS credits for the booster audience (pricing plans | SMS credits)
- Each parent supports only one active booster. Delete the existing booster before creating a replacement (a canceled booster still occupies the slot)
- (Email boosters) A verified sender domain if using a custom sender address (verify in Store Settings → Sender Domains)
Step 1: Create the booster campaign
Create a campaign with type: "booster" and boosterSettings.campaignID pointing to the draft parent. Instead of sendingSettings, provide boosterSettings.delay to specify how long after the parent sends the booster should go out.
For email boosters, content falls back to the parent's snapshot — you only need to provide fields you want to override (typically the subject line). For SMS boosters, content.sms is always required.
See endpoint: Create campaign
curl -X POST 'https://api.omnisend.com/api/campaigns' \
-H 'Authorization: Omnisend-API-Key YOUR-API-KEY' \
-H 'Omnisend-Version: 2026-preview' \
-H 'Content-Type: application/json' \
-d '{
"type": "booster",
"channel": "email",
"boosterSettings": {
"campaignID": "PARENT_CAMPAIGN_ID",
"sendTo": "nonClickers",
"delay": {
"amount": 48,
"unit": "h"
}
},
"content": {
"email": {
"subject": "Still interested? Here'\''s another look"
}
}
}'Warning: Do not provide
sendingSettingswhen the parent is in draft — the API returns409 sending-settings-not-allowed. The maximum delay is 240 hours (10 days).
The response returns the booster in draft status with an id.
Step 2: Send the parent campaign
Send the parent campaign. The booster is automatically scheduled at parent.sentAt + delay — no separate send call for the booster is needed.
See endpoint: Send campaign
curl -X POST 'https://api.omnisend.com/api/campaigns/PARENT_CAMPAIGN_ID/send' \
-H 'Authorization: Omnisend-API-Key YOUR-API-KEY' \
-H 'Omnisend-Version: 2026-preview'A 204 response confirms the parent send was initiated. Once the parent finishes sending, the booster status changes from draft to scheduled automatically.
Verify results
Retrieve the booster campaign to confirm it was auto-scheduled.
See endpoint: Get campaign
curl -X GET 'https://api.omnisend.com/api/campaigns/BOOSTER_CAMPAIGN_ID' \
-H 'Authorization: Omnisend-API-Key YOUR-API-KEY' \
-H 'Omnisend-Version: 2026-preview'| Status | Meaning |
|---|---|
| draft | Booster is created but parent hasn't been sent yet |
| scheduled | Booster is queued — parent was sent, delay countdown began |
| started | Booster is actively sending |
| sent | Booster has finished sending |
| canceled | Booster was canceled via the cancel endpoint |
You can also list all boosters for a specific parent campaign.
See endpoint: List campaigns
curl -X GET 'https://api.omnisend.com/api/campaigns?type=booster&parentCampaignID=PARENT_CAMPAIGN_ID' \
-H 'Authorization: Omnisend-API-Key YOUR-API-KEY' \
-H 'Omnisend-Version: 2026-preview'Troubleshooting
- 409 Conflict on create — duplicate booster: Each parent supports only one active booster — even a
canceledbooster counts. Delete the existing booster first (DELETE /campaigns/{id}), then create a new one. Content of the deleted booster is not preserved. - 409 Conflict on send —
sender_domain_unverified: For email boosters, the sender domain must be verified before sending. Verify in Store Settings → Sender Domains. - 409 on create with
sendingSettingsand draft parent: Sending settings can only be provided when the parent campaign is already sent. UseboosterSettings.delayinstead. - 404 on create: The parent
campaignIDdoes not exist. Verify the ID is correct. - 402 Payment Required on send: The campaign audience exceeds your plan's email or SMS credit limits. Upgrade your plan or ensure sufficient credits.