Sender Rotation
Cleanmails automatically rotates between your mailbox accounts when sending campaign emails. This distributes volume, protects reputation, and avoids triggering provider rate limits.
How Rotation Works
When the dispatcher needs to send an email, it selects a mailbox using this algorithm:
- Filter assigned mailboxes — Only mailboxes assigned to this campaign are considered
- Filter active — Skip any mailbox with
is_active = false - Check daily limit — Skip mailboxes that have reached their effective daily limit
- Round-robin selection — Pick the mailbox with the lowest
sent_todaycount
This ensures even distribution across all mailboxes and automatically shifts load away from maxed-out accounts.
Effective Daily Limit
The effective limit depends on whether warmup is active:
| Warmup Status | Effective Limit |
|---|---|
| Warmup disabled | Full configured daily limit |
| Warmup day 1–3 | 5 emails/day |
| Warmup day 4–7 | 15 emails/day |
| Warmup day 8–14 | 30 emails/day |
| Warmup day 15+ | Full configured daily limit |
The sent_today counter resets at midnight via a periodic background task.
Human-Mimicry Delay
Between each email sent, the dispatcher adds a random delay of 30–90 seconds. This simulates human sending patterns and avoids triggering rate limits at the receiving end.
Each dispatcher cycle processes up to 50 leads (using FOR UPDATE SKIP LOCKED to prevent duplicate sends). With 30–90 second delays, a full batch takes ~25–75 minutes.
Best Practices
- Use 3–10 mailboxes per campaign — More mailboxes means lower per-sender volume and better distribution
- Mix domains — Use mailboxes across multiple sending domains for diversity
- Set conservative daily limits — 30–50/day for warmup phase, 100–200/day for established mailboxes
- Monitor in the dashboard — The mailbox health endpoint shows sent_today vs. limit for each account
What Happens When All Mailboxes Are Full
If every assigned mailbox has hit its daily limit, the dispatcher skips that lead for the current cycle. The lead stays in queue and will be sent to in the next cycle (or the next day when limits reset).
Blocklist Check
Before sending, the dispatcher checks the workspace blocklist for both the lead's email and domain. Blocklisted leads are permanently removed from the campaign queue.
Hard bounces automatically blocklist the email and increment the campaign's bounce counter. If bounce rate exceeds 5% (after 100+ sends), the campaign is auto-paused.