Learn about Email Service limits and quotas.
Cloudflare Email Service
Send transactional emails and route incoming emails to Workers or email addresses
Cloudflare Email Service provides powerful email capabilities:
- Email Sending for outbound transactional emails
- Email Routing for handling incoming emails with Workers or routing to email addresses
Together, these two features make it possible for you to send and receive emails from your applications. For example, you can use Email Service for:
- Transactional emails (welcome messages, password resets, order confirmations)
- Authentication flows (magic links, email verification, two-factor authentication)
- Notifications and alerts
- Custom email addresses (support@, contact@, orders@)
- Emails as a mode of interaction for agents, such as send an email to create an issue in ticket tracking
Access Email Service using the REST API from any platform, or directly from Cloudflare Workers using bindings:
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/email/sending/send" \ --header "Authorization: Bearer <API_TOKEN>" \ --header "Content-Type: application/json" \ --data '{ "to": "user@example.com", "from": "welcome@yourdomain.com", "subject": "Welcome to our service!", "html": "<h1>Welcome!</h1><p>Thanks for signing up.</p>", "text": "Welcome! Thanks for signing up." }'export default { // Handle HTTP requests (Email Sending) async fetch(request, env, ctx): Promise<Response> { // Send a welcome email await env.EMAIL.send({ to: "user@example.com", from: "welcome@yourdomain.com", subject: "Welcome to our service!", html: "<h1>Welcome!</h1><p>Thanks for signing up.</p>", text: "Welcome! Thanks for signing up." });
return new Response("Email sent successfully"); },
// Handle incoming emails (Email Routing) async email(message, env, ctx): Promise<void> { // Forward to support team if (message.to.includes("support@yourdomain.com")) { await message.forward("team@yourdomain.com"); }
// Send auto-reply await env.EMAIL.send({ to: message.from, from: "noreply@yourdomain.com", subject: "We received your message", html: "<h1>Thank you!</h1><p>We'll get back to you soon.</p>" }); }
} satisfies ExportedHandler<{ EMAIL: SendEmail }>;{ "$schema": "node_modules/wrangler/config-schema.json", "name": "<ENTER_WORKER_NAME>", "main": "src/index.ts", "compatibility_date": "2024-01-01",
// Email sending "send_email": [ { "name": "EMAIL" } ],
// Email routing "email": [ { "name": "EMAIL_HANDLER" } ]}See the full API reference for the REST API and Workers binding.
Get startedEmail Sending
Send transactional emails with high deliverability and global performance.
Email Routing
Route incoming emails to custom addresses, Workers, or external destinations.
Deliverability
Automatic IP reputation management and deliverability optimization.
Analytics & Observability
Monitor email performance with comprehensive metrics and alerting.
Build serverless applications that can send emails directly from the edge.
Process email events asynchronously with Workers Queues integration.
Store and analyze custom email metrics with Workers Analytics Engine.