The short answer
Queue your list, send with a delay between each message, and respect your plan’s rate limits. Never fire all emails simultaneously — even a few hundred emails sent in seconds looks like a spam campaign to ISPs. Spread sends over time: a 100ms delay between sends caps you at 10 emails per second, which is safe even during warmup.Why blasting fails
Sending your entire list at once creates a sudden volume spike. ISPs monitor for exactly this pattern — not just content, but volumetric anomalies. SPF, DKIM, and DMARC records don’t protect you here. A new domain sending 500 emails in 30 seconds will land in spam regardless of how clean the content is. The volume shape is the signal. ISPs compare your current send rate against your domain’s historical average. A spike that deviates sharply from that baseline triggers bulk filtering, and once filtered, the whole batch is affected — not just the excess. The fix is simple: slow down.The right pattern: controlled loop
Iterate over your recipient list and insert a delay between each send. 100ms per send = 10 emails per second, which is appropriate for warmed domains and conservative enough for new ones.Respect warmup limits
During the first 14 days, every inbox has a daily send cap that increases incrementally each day. Sending over this cap doesn’t just bounce — it can damage the domain’s reputation score and slow down the warmup curve. Checkinbox.health.currentDailyLimit before starting your batch, then stop the loop when you’ve reached it. Queue the remainder for the next day.
Handle errors in the loop
Never let one failed send abort the entire batch. Wrap each send in a try/catch, log the failure, and continue. For429 rate limit responses, back off and retry before moving on.
Tracking progress
Maintain a simple sent/failed count across the loop. For long-running batches, persist state to your database so you can resume after interruptions without re-sending to recipients who already received the email.Segmenting large lists
If your recipient list exceeds your inbox’s daily limit, split it into daily segments and schedule each segment for the next available day. Never exceed the daily cap in a single run.currentDailyLimit before sending, since the limit increases during warmup.
Related
How do I warm up a new domain?
Warmup ramp schedule and strategy for safely building domain reputation before scale.
What happens if an agent sends too many emails?
How 429 rate limit responses work and how to implement exponential backoff.
Agent Email at Scale
Architecture patterns for running high-volume agent email sends reliably.

