How to send transactional email from your Cloudflare custom domain
Why most transactional-email providers are overkill for a Cloudflare-native team, and how Cloudflare Email Services + a Worker gets you there in a day.
Journal
Long-form writing about self-hosted email in D1, Workers-native routing, the REST API, and the parts of the platform that show up in the security review.
Categories
Tags
9 of 22 posts match
Why most transactional-email providers are overkill for a Cloudflare-native team, and how Cloudflare Email Services + a Worker gets you there in a day.
Why a catch-all isn't always enough, how Flowmails route tables replace it with explicit literal-matcher rules, and how to switch safely.
The shape of the Flowmails API, when to use webhooks vs polling, and a worked example of inbound-to-ticket automation in 30 lines.
Running your own Postfix / Exim / Dovecot stack is a real ops burden. Cloudflare Email Routing + a Worker gives you a self-hosted email platform without running an MTA — the runtime is the same one as the rest of your stack.
Cloudflare Email Routing handles inbound. For sending, you need Email Services + a Worker. Here's the REST API contract for outbound send, how the threading shape works, and how Flowmails wraps it.
Cloudflare Email Routing + a small Worker + a D1 schema is enough to route inbound mail into a ticket pipeline. Here's the minimum viable ticket system and the schema behind it.
The Resend → Flowmails migration is mostly swap-the-SDK, but DNS, webhook fan-out, and template portability all have to land in the same PR. Here's the 8-step order that keeps the cutover reversible.
Receive email events in a Cloudflare Worker: HMAC-SHA256 signature verification, retry schedule, idempotency key (SMTP Message-ID), and the failure modes that catch teams out.
Cloudflare Email Routing auto-signs DKIM for the zone. You still publish SPF and DMARC yourself. Here's what each record does, the exact strings to use, and how to monitor your alignment.