---
title: Campaigns
description: "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.

<Callout type="info" title="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](/guides/deliverability/).
</Callout>

## Create a campaign

**Campaigns** > **New campaign** opens a four-step wizard: **Basics** (name, description), **Schedule** (timezone, days, hours), **Sender pool** (which mailboxes), and **First email**. Only a name is required; everything else can be filled in later from settings.

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.

<Callout type="info" title="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.
</Callout>

| 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.

<Callout type="warn" title="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.
</Callout>

**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.

### 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, and **paused, trial expired** when a trial ends. 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.

## 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.

A practical band is `30` to `50`/day for warmed mailboxes, starting newer ones at `10` to `20`.

<Callout type="warn" title="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.
</Callout>

## Related guides

<Cards>
  <Card title="Personalization & expressions" href="/guides/expressions/">
    Merge fields, fallbacks, conditionals, and spintax.
  </Card>
  <Card title="Deliverability" href="/guides/deliverability/">
    Warmup, authentication, tracking, and sender reputation.
  </Card>
  <Card title="Sequences" href="/guides/sequences/">
    Multi-step follow-ups with delays and branching.
  </Card>
</Cards>
