| Where it runs | An application on Workers, D1 and R2 in your account. Email Service is its mail transport. | Cloudflare’s sending and routing service, called from your own Worker or application. There is no extra application to run. [1] |
|---|
| Send application mail | HTTP API, typed JavaScript SDK and CLI, with idempotency keys, versioned templates and a per-message log. Sending needs Workers Paid. | The Workers binding (`env.EMAIL.send`), the REST API, or authenticated SMTP. Templates and idempotency keys are not part of the API; your code supplies them. [2] |
|---|
| Keep an SMTP integration | The app exposes an HTTP API, not an SMTP submission server. Plan an integration change. | Authenticated SMTP at smtp.mx.cloudflare.net, with an API token as the password. [2] |
|---|
| Credentials | Domain keys act on one domain with listed permissions, optional sender and recipient allowlists, a rate limit and a daily send budget. Management keys mint them and cannot send. | A Cloudflare API token with Email Sending: Edit. It can send from any domain the account has onboarded. [2] |
|---|
| Read and reply to mail | Threaded browser inbox, compose, search, and sent-mail copies. Free is receiving-only. | Email Routing hands each incoming message to your Worker as raw MIME, or forwards it to a verified address. There is no inbox: storing, parsing and threading are your code. [3] |
|---|
| Handle incoming mail | Routes mail into addresses and conversations, stores it in R2 and D1, checks sender authentication and spam, and raises inbound webhooks. | Your Worker receives the envelope, headers and a raw stream and can forward, reply within DMARC rules, or reject. Inbound messages are limited to 25 MiB. [3] |
|---|
| Agent access | Built-in OAuth/MCP and a grant-limited agent API. Give agents mailbox access with revocation and sending caps. | No agent-specific access. An agent would hold the same account token, or call a Worker you write. [2] |
|---|
| Delivery events | Message logs with the event timeline, Standard Webhooks signatures to your endpoints, and suppressions updated from bounces and complaints. | Six lifecycle events per sending domain through Queues event subscriptions, an Activity log in the dashboard, and automatic bounce and complaint suppressions. [5] [6] [7] |
|---|
| Sending scope | The same terms apply: Box Ox sends through Email Service and adds no other transport. | Transactional messages tied to a customer interaction or transaction, under Cloudflare’s service terms. [8] |
|---|
| What you maintain | Your installation, access policies, DNS, backups, updates, and Cloudflare usage. Cloudflare handles the mail transport. | Your own Worker code for sending, receiving, storage and events, plus DNS and your Cloudflare usage. Nothing to upgrade but your code. [1] |
|---|
| What you pay for | No Box Ox subscription. The same Email Service rates, plus Workers, D1 and R2 usage for the app itself. | Workers Paid: 3,000 emails a month included, then $0.35 per 1,000. Receiving is unlimited on both plans; routing Workers bill as Workers. [4] |
|---|