Sending limits work as a control system with several ceilings. Set the pace at the narrowest constraint you face, then scale through controlled distribution and gradual increases. The provider's headline quota is a poor starting point for cold outreach. Cold recipients can sit under a separate cap, and a per-minute restriction can interrupt a sequence long before the daily allowance is close. Your operating limit is the smallest relevant ceiling across provider, mailbox, minute, and campaign controls.
Read the provider ceiling
Map the limits that apply to cold recipients before setting campaign volume. Write down the account-level cap, the sending-rate cap, and any tenant restriction.
For an Outlook or Microsoft 365 account, the cold-email ceiling is 1,000 recipients per day under the non-relationship recipient cap.1 The cap applies to people with whom the sender has never exchanged email, so every cold prospect falls into that bucket.2, 3
The often quoted 10,000-recipient figure is a theoretical maximum for all recipients combined, including people already in the sender's contact history.4, 5 Use the cold-recipient ceiling when planning outreach. Keep the broader quota in your notes as a provider limit, not as a mailbox target.
TERRL is a tenant-wide external-recipient cap that Microsoft began enforcing in April and was still rolling out to larger tenants.6 Treat tenant rules as a separate ceiling because a mailbox can appear healthy while the wider account reaches a restriction.
Set a mailbox pace
The account ceiling sets the hard boundary. Keep each mailbox below it at a pace that is simple to check every day.
Start each mailbox at 30 to 40 emails per day.7 Sending 50 to 60 emails per mailbox is described as the fastest way to trigger Google and Microsoft spam filters. Treat the lower range as an operating starting point, not a promise from the provider.
Give each mailbox its own daily allowance. Keep the assignment visible in the scheduler, and check the actual sent count against it before adding prospects. If the system cannot show which mailbox will send a message or how many messages it has sent, fix that visibility before increasing volume.
Leave room for the mailbox's other activity. A mailbox that sends at its assigned ceiling every day has less room for retries, other outbound work, or a scheduling mistake.
Distribute volume across mailboxes
Spread activity across controlled sending capacity. Add capacity when you need more volume, while keeping each mailbox at a moderate pace.
Senders getting the best results maintain a moderate sending pace and add mailboxes when they scale, distributing messages so no single inbox accumulates enough negative signals to be flagged.8
Give every mailbox a clear assignment and review the campaign total separately. A campaign-level number can look acceptable while one mailbox carries too much of the load. Increase volume only when you can see both views without manual reconstruction.
Ramp volume gradually
A new sending setup needs a controlled increase because early behavior can determine how much delivery capacity providers allow. Increase sending volume gradually over time,9 and pause when the current level shows instability.
Certain mailbox providers keep daily message-delivery thresholds in place until the sender establishes a reputation.10 Start with a pace you can inspect, then raise it only after the current setting has run cleanly through your checks.
Change one control at a time when possible. If you raise mailbox volume, keep provider segmentation and scheduling behavior steady so you can identify what caused a change in delivery or errors. Hold the increase when a provider lane becomes unstable, and resume only after it returns to its normal behavior.
Segment by provider
Give each provider its own sending lane. This makes a provider-specific reaction visible and keeps one provider's behavior from setting the pace for every mailbox.
Gmail and Outlook often respond differently, so segmenting by provider gives you better control.11 Keep separate records for mailbox assignment, sent volume, delivery errors, and engagement by provider. Review each lane before increasing the campaign total.
A stable lane can continue at its approved pace while an unstable lane is held. This keeps the adjustment local and prevents a problem in one provider from forcing a wider change than the signals justify.
Add controls before launch
Put the controls in the scheduler before the first campaign starts. Manual caution disappears when several tasks run at once, so the system needs to enforce the limits without relying on memory.
Set a mailbox cap, a provider cap, a rate limit, and a concurrency limit. Add spacing between sends when the scheduler can release several messages together. Then test the queue with a small run and confirm that messages are distributed as planned.
Review the queue, the actual sent count, and the provider response after launch. If one task starts consuming the queue, stop it before it changes the behavior of every mailbox. If one provider lane shows a problem, hold that lane and leave the others under their existing controls.
What not to do
These failure modes come from treating one quota as the whole system or letting the scheduler run without a brake.
- Do not read an untouched daily quota as permission to accelerate. Exchange Online has a limit of 30 messages per minute, and that limit can disrupt a sending sequence before the daily quota is close to exhausted.12, 13
- Do not ignore rate-limiting errors. They indicate that sending volume is too high or arriving too soon.14
- Do not flood inboxes with low-engagement messages. Mailbox providers throttle senders that send floods which receive little positive engagement.15
- Do not give one task unrestricted concurrency. Rate limits and concurrency caps prevent a runaway task from consuming the entire quota.16
- Do not release every queued message at once when provider pacing is a concern. A short delay between outbound messages helps keep provider rate limits from being exceeded.17
Before the next launch, write down the mailbox pace, provider lane, ramp condition, and stop condition for each sending group. Keep those controls visible in the scheduler so the campaign can grow only when the sending behavior supports it.