Listmonk
Self-hosted newsletter and mailing list manager. Single Go binary, PostgreSQL, no per-subscriber fees, SMTP-agnostic, with a transactional email API for app-triggered messages
Quick Start
docker compose up -d Overview
Listmonk is a self-hosted newsletter and mailing list manager that ships as a single Go binary with PostgreSQL as its only dependency. You configure an SMTP provider, point it at your database, and you have a full campaign sending platform with no per-subscriber fees and no third party holding your list.
The resource footprint is low enough to run alongside other services on a $6 VPS. Production instances handling seven million emails exist on hardware that costs a few dollars a month. The multi-threaded SMTP queue handles rate limiting automatically, and because Listmonk works with any SMTP provider, you can use Amazon SES, Postmark, Mailgun, SendGrid, or whatever you trust. Switching providers does not touch your subscriber data.
Beyond newsletters, Listmonk has a transactional email API. If you run a SaaS or web app, you can send password resets, receipts, and triggered notifications through the same infrastructure using a simple POST request. Your marketing campaigns and your app emails share one setup and one bill.
The gaps are real. There are no automation workflows. No drip sequences, no behaviour-based triggers, no “send this email three days after signup” without wiring something external. Bounce processing also has a notable rough edge: bounce type classification (soft vs hard) currently has no effect on how subscribers are actually treated. You get the data but must act on it manually.
If you send newsletters and want to stop paying per subscriber, this is where to start. If you need a visual workflow builder or hands-off list hygiene, a hosted platform is still easier.
Listmonk: Pros & Cons
| Pros (The Wins) | Cons (The Friction) |
|---|---|
| Cost: Free with no per-subscriber fees; your only costs are hosting and SMTP. | No automation: No drip sequences or behaviour-based triggers; campaigns and API only. |
| Performance: Go binary with multi-threaded queues; handles millions of emails on minimal hardware. | Bounce handling: Bounce type classification exists but has no effect on subscriber treatment. |
| SMTP flexibility: Works with any provider; swap SES for Postmark without touching your list. | Setup required: PostgreSQL, SMTP config, reverse proxy; not a signup-and-send experience. |
| Transactional API: Send app emails (receipts, resets) through the same infrastructure. | Templates: Go template syntax is powerful but steeper to learn than drag-and-drop builders. |
Use Cases
Specific ways to use Listmonk for your workflow.
Deployment Strategy
Recommended ways to host Listmonk in your own environment.