Skip to content

Self-hosted alternatives to Postmark

Postmark is a hosted email delivery service with an API and SMTP for transactional mail. One listed app does its main job and runs in your own Cloudflare account.

Each answer comes from the app’s README and source code, compared with the features Postmark describes on its own site.

  • EmailFlare Inbox landing page with a mockup of the conversation list and a contact thread

    Transactional email API and shared team inbox built on Cloudflare Email Sending, Email Routing and D1

    Deploy
    CLI
    License
    MIT
    GitHub stars
    252 stars
    Last commit

Postmark features, app by app

FeatureEmailFlare
Send mail through an APIYes
SMTPNo
Responsive templatesYes
Open, click and delivery trackingPartly
Bounce handling in a dashboardPartly
Webhooks for bounces and other eventsNo
Searchable email historyYes
Message streams that separate transactional and broadcast mailNo

Transactional email API and shared team inbox built on Cloudflare Email Sending, Email Routing and D1

What a Postmark user would miss
No SMTP relay, outbound webhooks, open or click tracking or message streams.
What it adds
API keys can be limited to chosen domains and come as test or live keys, and the same project adds a shared team inbox.
  • Yes Send mail through an API. POST /v1/send with an API key, an Idempotency-Key header and rate limiting.
  • No SMTP. No SMTP service in the source or docs.
  • Yes Responsive templates. 50 built-in React Email layouts and custom Handlebars templates referenced by templateSlug.
  • Partly Open, click and delivery tracking. Delivery statuses only, no open or click tracking listed.
  • Partly Bounce handling in a dashboard. Bounced and complained statuses and a suppression list, parsing needs an Email Routing rule for the return-path address.
  • No Webhooks for bounces and other events. No outbound webhooks, the bounce webhook route only receives reports.
  • Yes Searchable email history. Send logs page with the status and error of each message.
  • No Message streams that separate transactional and broadcast mail. No message streams, audience lists add unsubscribe headers instead.

Sources:github.com/0xdps/emailflare#emailflare-api--email-sending-apigithub.com/0xdps/emailflare/blob/trunk/packages/email-core/src/index.tsgithub.com/0xdps/emailflare/blob/trunk/docs/TEMPLATES.mdworkersnative.directory/api/apps/emailflare