Skip to content
RESOURCES

Everything else

The deploy guide, what changed lately, the deliverability words nobody explains, how security works when there’s no vendor in the path, and a map of every page.

DEPLOY TO CLOUDFLARE

One click, your account,
about a minute.

The button creates the D1 database, the KV namespaces and the R2 bucket, then builds and deploys. Queues and the analytics datasets are one command it cannot run for you, so we say so. Nothing needs configuring to boot: the instance migrates its own schema, generates its own signing secret and learns its own public URL on the first request. Nothing is sent to us — there is no us in the path.

FROM THE BROWSER

Press the button and pick your Cloudflare account. The form has no fields on it at all, because there is nothing you have to know yet. D1, KV and R2 are created for you; queues and the analytics datasets need one command afterwards, and the app tells you when it needs it. Your claim code is printed in the deploy log; /setup asks for it.

Deploy to Cloudflare1-CLICK
FROM YOUR TERMINAL
DEPLOY
$ npx mailysend provision
✓ queues · analytics datasets
$ npx mailysend deploy
✓ workers · do · d1 · kv · r2
✓ schema migrated on first request
ready https://mailysend.<you>.workers.dev ~40–90s

Or clone the repo and run pnpm run deploy:cf with your own wrangler config — it builds both Workers and hands the upload to wrangler. Reviewable, scriptable, CI-friendly. Budget about a minute end to end — most of it DNS propagation, which is out of anyone’s hands.

Prerequisites
A Cloudflare account with Workers Paid ($5/mo, required for sending) and a domain you control.
Updates
npx mailysend upgrade — migrations run in order, with a dry run first.
Rollback
Worker versions are immutable; rollback flips traffic back in about a second.
Leaving
Export everything to R2 and delete the Worker. Your data was always yours.
One thing the Worker cannot do

smtp.your-domain.com:587 cannot run on Workers — there is no inbound TCP listener — so the optional SMTP relay ships as an OCI container image you run yourself, on Cloudflare Containers, Fly, or any VM. Nothing else here needs it. SMTP relay docs →

Changelog

v0.1.0
  1. · v0.1.0
    First public release

    The API, the dashboard, the four transports, the CLI and the one-click deploy. Every tagged release →

Deliverability glossary

The eight terms that decide whether your email arrives. In plain language, with what to actually do.

SPF
A DNS record listing who may send as your domain. One record, no more than ten lookups deep.
DKIM
A cryptographic signature proving the message wasn’t altered. Use 2048-bit keys and rotate yearly.
DMARC
Tells inboxes what to do when SPF and DKIM disagree. Start at p=none, read reports, then quarantine.
BIMI
Your logo in the inbox, once DMARC is enforced. Needs a VMC certificate; nice-to-have, not urgent.
Hard vs soft bounce
Hard means the address is dead — never retry, suppress immediately. Soft is temporary and worth retrying.
Complaint rate
Spam-button presses over sends. Keep under 0.1%; above 0.3% and providers start blocking you.
Inbox placement
The number that matters: delivered and not in spam. Only seed testing and provider signals reveal it.
Stream separation
Keep OTPs away from newsletters — different tags, ideally different subdomains, so marketing can’t sink auth.

Guides

Task-shaped, and several of them run the product's own code in the page rather than describing what it would do.

All 26 guides →

Security, privacy & terms

MailySend is software, not a service, which changes the security story: your mail never touches infrastructure we operate. What we owe you is safe defaults and readable code.

Data path
Your Workers, your Durable Objects, your R2, your region. We have no production access, no telemetry on message content.
Auth
Dashboard behind Cloudflare Access (SSO, MFA, device posture). API keys are scoped, hashed and revocable.
Compliance
Cloudflare’s own certifications cover the infrastructure. As the operator, you’re the data controller — the repo ships a DPA template and sub-processor list.
GDPR erase
Deleting a contact cascades through D1, KV suppressions, R2 attachments and the event stream.
Disclosure
Report vulnerabilities through the repo’s security policy; fixes ship as a patch release with an advisory.
Licence & terms
MIT. Use it commercially, fork it, resell it. No warranty, no support obligation — the honest trade for $0. Terms →

Status

All dependencies operational

Your instance’s uptime is Cloudflare’s uptime — there’s no MailySend service to go down. This page tracks the Cloudflare products MailySend depends on, plus the health of the SDK registries and the docs.

  • Workersoperational
  • Email Serviceoperational
  • Email Routingoperational
  • Queues · DO · D1 · R2operational
  • Workflowsoperational
  • SDK registriesoperational
YOUR ACCOUNT, YOUR MAIL

Nothing to sign up for. Just deploy it.

One command, about a minute end to end — most of it DNS propagation, which is out of anyone’s hands.