Campaigns
Campaigns are one-time email broadcasts sent to a segment of your subscribers. Use them for announcements, newsletters, promotions, and any communication that goes to multiple people at once. Workspaces with the SMS add-on can also send SMS campaigns: the Campaigns screen gains an Email / SMS switch, and text campaigns follow the same message, recipients, schedule, and review steps. See SMS campaigns for the SMS-specific rules.Campaigns vs Sequences
Campaign States
Safety Review
Scheduling a campaign can put it inwaiting_approval instead of scheduled.
This is an anti-abuse hold, not an error: nothing is sent while a campaign is in
this state, and the campaign is not lost.
This most often happens on new accounts. The checks run against your account
and your sending domain, so a brand-new workspace or a recently registered
domain is the usual reason a first send is held. Once your account and domain
have a track record, later sends normally go straight to scheduled.
A campaign is held when any of these apply:
- New or unverifiable domain. Your sending domain or your company website domain was registered in the last 7 days, has no public registration record, or the website did not respond when we checked it.
- Content that matches known abuse patterns. Business-opportunity, guaranteed income, or high-pressure “act now” language in the subject, preheader, or body.
- Automated content review. Campaigns to more than 10 recipients, or campaigns whose content hits our review watchlist, are checked automatically before the first send.
What happens next
Held campaigns are reviewed by the Sequenzy team. When a review finishes:- Approved - the campaign returns to
scheduledand sends at its original time. If that time has already passed while it waited, it moves straight tosending. - Rejected - the campaign moves to
rejectedand the reason is available inrejectionCommentonGET /api/v1/campaigns/{campaignId},sequenzy campaigns get <id>, and theget_campaignMCP tool.
If you are building an unattended integration, treat
waiting_approval as a
normal outcome of scheduling. Check status in the schedule response, and if
it is waiting_approval, log it and poll the campaign instead of retrying the
schedule call. Retrying will not clear the hold.Creating a Campaign
1. Choose Recipients
Define who receives the campaign: All Subscribers2. Select Email Template
Choose or create the email content:- Use an existing template from your library
- Create new content in the editor
- Duplicate and modify a previous campaign
equals, contains, exists, or numeric comparisons.
Conditions are not limited to profile values: you can also target segment membership, custom events (for example “performed purchase in the last 30 days”), tags, lists, subscription status, engagement (opened or clicked recently), Stripe and store purchases, signup date, email provider, and SMS status - the same filters you use to build segments. These rules are checked against live subscriber data when each email is sent.
For an else branch, use the Conditional (if/else) block, or duplicate the block and invert the rule on the copy. Attribute and variable conditions use the same merge-tag variable names you already use in emails, but without the {{ }} braces.
3. Choose Sender
Select who the email appears to come from:4. Schedule or Send
- Send Now: Queue immediately
- Schedule: Pick a specific date and time
- Spread Over Time: Distribute sends linearly over 1–72 hours
- Start time: Send now or schedule a future start
- Delivery strategy: All at once, Spread Over Time, or Send Time Optimization
Recurring Campaigns
Scheduled campaigns can repeat automatically. When scheduling, set Repeat to “Every week” or “Every month” and the campaign becomes a recurring template:- At each run time, Sequenzy duplicates the template into a normal one-shot campaign and sends it
- The audience is re-evaluated at every run, so new subscribers who match the list or segment are included and removed ones are skipped
- Each run gets its own campaign (named after the template with the run date) with its own stats
- The email content is snapshotted per run - you can edit the template between runs, and the next run picks up your changes without altering past runs
- Cancel the recurring campaign to stop the series; runs already sent are unaffected
If the platform is briefly unavailable at a run time, the run starts as soon
as it recovers. Runs missed by more than the full interval are skipped, not
sent in a burst.
5. Spread Over Time (Optional)
Enable Spread Over Time to distribute your campaign sends gradually over a configurable window, protecting your sender reputation during warmup. How it works:- Choose when the campaign should start sending
- Select “Spread over time” as the delivery strategy
- Use the slider to choose a delivery window (1-72 hours)
- The first batch sends at the chosen start time
- Remaining batches are spaced evenly across the window
- Warming up a new sending domain
- Sending your first large campaign (1,000+ recipients)
- You’ve sent fewer than 10,000 emails total (Sequenzy will recommend this automatically)
Spread Over Time and Send Time Optimization are mutually exclusive. You can
only enable one per campaign.
Pauses and Sending Locks
A manual campaign pause stores the pause on that campaign. You can resume it from the campaign page, and Sequenzy uses the saved spread setting unless you choose a new one on resume. Company sending pauses and real account bans are different. They act as parent sending locks and do not rewrite every campaign row. Running or due scheduled campaigns show Sending paused while the lock is active. When the lock is removed, campaigns that are still sending or already due continue through the normal resume worker; future scheduled campaigns wait for their scheduled start. If you do not want a campaign to continue after company sending is restored, pause that campaign manually. The manual pause remains until you resume it.6. Send Time Optimization (Optional)
Enable Send Time Optimization to deliver emails at each subscriber’s optimal time based on their engagement patterns. How it works:- Toggle “Send Time Optimization” on the schedule step
- Sequenzy analyzes each subscriber’s historical open times (last 90 days)
- Emails are delivered within a 12-hour window at each subscriber’s optimal hour
- Subscribers without enough data receive emails at the scheduled time
- Subscribers need at least 5 email opens in the last 90 days
- The UI shows how many subscribers have computed optimal times
Filtering Options
Status Filters
Tag Filters
Example: Target customers, exclude churned:
Email Filters
is and is_not match the full address and ignore case, so they are the right
choice for explicit allowlists (QA contacts) and exclusions. Use contains when
you want a domain or substring.
Example: Target company emails:
Date Filters
You can use rolling values like
7 days ago, natural language like last week, or fixed dates like 2026-03-01 and Mar 1 2026.
Rolling values update automatically as time passes. Fixed dates stay fixed.
Examples:
Name Filters
Filter Combinations
Filters are combined with AND logic:Sending Process
When a campaign is sent:Personalization
Available Variables
Use these in your email content:Example
|there syntax provides a fallback if the name is missing.
Tracking
Open Tracking
When enabled, Sequenzy tracks email opens via a tracking pixel.Click Tracking
When enabled, links are wrapped to track clicks:You can enable/disable tracking per company in Settings → Tracking.
Analytics
After sending, view campaign performance:Revenue Attribution
If you have goals configured, sent campaigns show revenue attribution metrics:
Attribution uses a 24-hour window from email interaction to conversion. Works automatically with Stripe, Polar, Paddle, and Dodo integrations.
Tracking Over Time
View how engagement changes:Resending to Non-Openers
After a campaign finishes sending, you can resend it to everyone in the same audience who didn’t open it. This is a simple way to recover opens - a second touch, often with a fresh subject line, reaches the people who missed the first send. On a sent campaign, use the Send to non-openers button. Before creating anything, it shows an estimate of how many subscribers haven’t opened the campaign yet, so you know the size of the resend up front. Confirming creates a new draft named<campaign> (Non-openers) that:
- Reuses the original campaign’s audience (all subscribers, lists, a saved segment, or a filtered audience), and
- Adds a “didn’t open this campaign” rule so only people who haven’t opened it yet are targeted.
Resending to non-openers becomes available 6 hours after a campaign finishes
sending. This gives opens time to register, so the estimate and the resend
audience are accurate.
- API:
POST /api/v1/campaigns/{campaignId}/resend-to-non-openers(see the API reference) - CLI:
sequenzy campaigns resend-to-non-openers <id> - MCP: the
resend_campaign_to_non_openerstool
Campaign Types
Newsletter
Regular updates to your entire list:Product Announcement
New feature or product launch:Promotional
Sales, discounts, special offers:Re-engagement
Bring back inactive subscribers:Segmented Updates
Different content for different segments:Best Practices
1. Test Before Sending
- Send a test email to yourself
- Check personalization renders correctly
- Verify links work
2. Segment Thoughtfully
Don’t send everything to everyone:3. Time Your Sends
- B2B: Tuesday-Thursday, 10am-2pm
- B2C: Evenings and weekends
- Consider time zones: Schedule for recipient’s local time
4. Monitor Deliverability
Watch your metrics:5. Respect Unsubscribes
- Process unsubscribes immediately
- Don’t re-add unsubscribed contacts
- Provide easy unsubscribe links
Campaigns vs Transactional
Related
Sequences
Automated multi-step workflows
Subscribers
Managing your contact list
Tags
Segmenting for targeting
Transactional
Per-user triggered emails