Campaigns
Create and send cold outreach campaigns safely.
A campaign sends a sequence of emails to a list of contacts, spread across your connected mailboxes. Warmbly handles timing, volume limits, and mailbox rotation so sending looks natural and stays safe.
Before you start
You need at least one active mailbox and a contact list. Warm new mailboxes before running cold campaigns from them. See Deliverability.
Create a campaign
Campaigns > New campaign opens a four-step wizard: Basics (name, description), Schedule (timezone, sending days, hours), Sending (mailbox tags, daily limit per mailbox, stop on reply, open and click tracking, unsubscribe header), and First email (subject, body, optional follow-ups). Only a name is required; the first email can be skipped and written in the full editor on the Steps tab, and everything else can be changed later from settings. Closing a wizard with unsaved edits asks before discarding them.
The campaign starts as a draft. Nothing sends until you start it.
Senders and rotation
Pick mailboxes in Sending accounts three ways, and the first two combine:
- By tag: every active mailbox with that tag, including ones you tag later.
- Individually: specific mailboxes by hand.
- All active mailboxes: the default when you pick neither.
Follow-ups stay on the same mailbox
Each mailbox stays within its own daily limit, and follow-ups always send from the mailbox that sent the first email to that contact, so threads stay consistent.
| Rotation | Behavior |
|---|---|
| Even spacing (recommended) | Picks the mailbox idle longest, the most natural pattern |
| Round-robin | Cycles in order: A, B, C, back to A |
| Weighted | Sends more from healthier, higher-limit mailboxes |
ESP matching optionally aligns sender and recipient providers (Gmail to Gmail). Prefer same falls back to any mailbox when no same-provider one is free; Strict same makes the contact wait instead. An unknown recipient provider never blocks a send.
Sending limits
Warmbly is mailbox-first: safe volume is the sum of each mailbox's budget, not one global limit. Limits stack, and the smallest always wins.
| Limit | Default | What it does |
|---|---|---|
| Per-mailbox cold cap | 50/day | Hard ceiling for cold mail from one mailbox |
| Minimum gap | 600s | Shortest spacing between two sends from one mailbox, always enforced |
| Campaign daily limit | Per campaign | A per-mailbox cap for this campaign, validated 3 to 100 |
The campaign daily limit applies as a minimum against the cold cap, so it can lower a mailbox's volume but never raise it above 50/day.
Don't push past the defaults casually
Anything above 50/day per cold mailbox needs positive reputation signals and a low complaint rate behind it. Adding mailboxes is safer than forcing a few to send more.
Daily ramp-up grows volume gradually instead of starting at full limit: ramp start (default 10), ramp increment (default 5), and ramp ceiling (default 50). It applies as another minimum, so it only lowers today's volume while ramping. This is separate from mailbox warmup; the two work together.
Lead flow throttles new contacts with Max new leads per day (0 for unlimited, up to 1000). At the cap, follow-ups to in-flight contacts continue and new leads resume tomorrow. You can prioritize new leads over follow-ups, and choose whether to attempt addresses verification flagged risky.
Adding leads
The Leads tab takes contacts four ways. From contacts opens a picker over the workspace contact list: search by name, email or company, filter by category, tick individual people or Select loaded, or Select all matching to add everyone the search returns (up to 1,000 per batch; repeat for the rest). Contacts already in the campaign are marked as leads and skipped. Import runs the file import wizard with this campaign preselected, Sheet sync attaches a Google Sheet, and Add lead creates a single new contact in the campaign. Any workspace member with contact access can add leads to any campaign in the workspace, whoever created it.
Lead statuses
| Status | Meaning |
|---|---|
| Queued | In the campaign, not emailed yet |
| Processing | Some but not all steps sent, still moving |
| Done | Every step sent, no reply or bounce |
| Replied | Contact replied; sending stops |
| Bounced | A send hard-bounced |
| Unsubscribed | Unsubscribed or suppressed |
A lead is Processing only while steps remain, so a finished campaign reads as done rather than stuck mid-flight.
Scheduling
Campaigns send only inside the weekly sending windows you define, in the campaign's timezone. Each day is independent, with different hours or several windows per day, set from presets like Mon-Fri 9-5 or by dragging on the grid (which is Monday-first).
Within a window Warmbly spreads the day's emails evenly, adds random jitter, and rounds to natural send times so nothing arrives in obvious bursts. A mailbox with its own timezone is also kept inside its local business hours (8am to 8pm).
Optional campaign dates bound when it may send. Leave both blank to run open-ended.
Start and stop
The play and pause buttons work from the list row or the detail view. Starting moves the campaign to active and begins scheduling inside your windows and limits; pausing stops new scheduling immediately and resumes from where it left off.
A campaign can pause itself: paused, no accounts when it loses every sender, paused, trial expired when a trial ends, and auto-paused when a guardrail trips. It moves to finished once every contact completes the sequence. Configured to do so, it also stops following up with a contact the moment they reply.
Auto-pause guardrails
Preferences > Auto-pause stops a campaign the moment its rates leave the band you set, instead of waiting for a mailbox provider to react. Off by default.
| Rule | Direction | Default | Why |
|---|---|---|---|
| Bounce rate | pause at or above | 5% | Amazon SES puts an account under review at 5% and can pause sending at 10% |
| Complaint rate | pause at or above | 0.10% | Google asks senders to stay under 0.10% and never reach 0.30% |
| Reply rate | pause below | off | A campaign at volume that nobody answers is spending reputation for nothing |
Two more controls keep the rules honest:
- Only after is the sample floor. No rule fires below this many sends in the window, because one bounce out of four is not a
25%bounce rate. Default50. - Measured over the last is the rolling window in days.
0measures the campaign's whole history. Default7.
Setting a rate to 0 turns that rule off. The check runs every 15 minutes, and when several bands are breached at once the campaign is paused with the most damaging reason attached: complaints first, then bounces, then replies.
A paused campaign shows the reason and the numbers behind it on the Auto-pause section, and everyone on the team who can see campaigns gets a notification. Starting the campaign again clears the marker, but the next check re-evaluates from scratch, so fix the underlying problem first.
Live activity
The detail view streams sends, opens, clicks, replies, bounces, and skips as they happen, for every teammate at once. A Needs attention panel above it surfaces failures such as a step that could not be scheduled; these retry automatically and stay visible so nothing fails silently.
If scheduling stalls on a transient infrastructure hiccup, Warmbly re-seeds within a few minutes. Pausing and resuming forces a fresh start.
Safety posture
Defaults are deliberately conservative, aiming at a low complaint rate rather than maximum throughput:
- Spacing over bursts: the minimum gap and even distribution keep a natural cadence.
- Spread, don't concentrate: volume splits across many mailboxes and worker IPs.
- Ramp gradually: raise volume only while performance stays healthy.
- Health gating: a mailbox in deliverability trouble has its cold volume cut or paused automatically.
- Human timing: mailboxes with sending behavior enabled keep randomized working hours, volume, and spacing in their own timezone.
A practical band is 30 to 50/day for warmed mailboxes, starting newer ones at 10 to 20.
Keep warmup running
Warmbly limits a campaign mailbox to at most five warmup messages per day, so campaign traffic stays primary. Warmup cannot compensate for one repetitive template sent to a poorly targeted list: personalize, test meaningful A/B variants, and honor suppression and unsubscribe signals.