How MakiSend runs on Cloudflare

One Worker, one database, one queue and a durable workflow. Nothing to keep running, all of it on your own Cloudflare account.

Follow one email

Pick what happens at your SMTP provider, then send. Each stop is a Cloudflare product.

  1. Your appPOST /send-email
  2. WorkerWorkers
  3. DatabaseD1
  4. QueueQueues
  5. WorkflowWorkflows
  6. Your SMTPTCP sockets
  7. InboxDelivered
  1. Dead lettersQueues (DLQ)
Ready

Press Send to follow one email.

The Cloudflare products behind it

What runs on a schedule

Every day, 03:17 UTC
Tests every SMTP configuration and records the result, then checks GitHub for a new MakiSend release (unless UPDATE_CHECK is off).
Every hour, minute 17
Key rotation: re-encrypts stored data still under a previous ENCRYPTION_KEY, in small batches.

What to know before you rely on it

  • No fixed outbound IP: a provider that requires IP allow-listing will refuse sends from a Worker.
  • Sending is asynchronous: the 202 means queued, not delivered. The outcome is in the logs and the dashboard.
  • One SMTP provider per configuration, no automatic failover. No bounce, open or click tracking yet.
  • Deliverability depends on your sender domain (SPF, DKIM, DMARC) and your provider, not on Cloudflare.

The full design, data model and diagrams are in the README and docs/ARCHITECTURE.md.