Skip to content

Limits

Email sending quotas, rate limits, and how to request higher limits for production use

Cloudflare Email Service has the following limits to ensure optimal performance and prevent abuse. These limits apply to emails sent via the REST API, the Workers binding, and SMTP unless noted otherwise.

Daily sending limits

New accounts start with a conservative daily quota and scale up over time based on your sending behavior, deliverability rates, and account standing. Limits are applied per account and may be adjusted automatically as your reputation improves.

If you need higher sending limits sooner than automatic adjustment provides, refer to "Need a higher limit?" at the bottom of this page to request an increase.

Verified destination addresses

Before you onboard a sending domain, you can send emails only to verified destination addresses in your account. After you onboard a sending domain, you can send to any recipient immediately.

Sends to verified destination addresses are always free: they do not count toward your monthly quota or your daily sending limits, on any plan, including when only Email Routing is configured. You can only send from your routing domains.

Email content limits

ComponentLimitNotes
Recipients (to, cc, bcc)50 per emailCombined across all recipient fields
Subject line998 charactersRFC 5322 compliant
Total message size5 MiBIncluding attachments
Total message size25 MiBFor verified destination addresses only
Header size16 KBAll custom headers combined

Zone limits

LimitValueNotes
Domains per zone30Combined total of domains configured for Email Routing or Email Sending in a zone, including the apex domain

Email Routing limits

The following limits apply to inbound email handled by Email Routing.

LimitValueNotes
Routing rules per domain200Each rule maps an email pattern to a destination
Destination addresses per account200Verified destination addresses are shared across all domains in the account
Inbound message size25 MiBMessages larger than this are rejected
Reply References entries100If the incoming email has more than 100 References entries, message.reply() throws. Reduces reply loops.

Each routing rule maps one email pattern to one destination address or one Worker. To forward a single email pattern to multiple destinations, use a Worker that calls forward() once per destination. All destinations must be verified beforehand.

Routing to Workers on the Workers Free plan

Workers that handle incoming emails count toward the standard Workers CPU and memory limits. On the Workers Free plan, complex handlers may exceed these limits and fail to process a message. Failed invocations appear in Workers logs with the EXCEEDED_CPU error. Upgrade to the Workers Paid plan for higher CPU and memory limits.

Emails sent from Workers

Emails sent from a Worker using the send_email binding appear in the Email Routing summary as dropped, even when they were delivered successfully. To track outbound send success, use Email sending metrics and logs instead.

Compliance

All email sending must follow applicable anti-spam laws and regulations to maintain good standing and deliverability.

  • CAN-SPAM Act (United States)
  • GDPR (European Union)
  • CASL (Canada)
  • Include proper unsubscribe mechanisms
  • Honor opt-out requests promptly