Favicon of listmonk

listmonk

listmonk is a self-hosted, single-binary newsletter and mailing list manager backed by PostgreSQL.

Open Source Alternative to:
listmonk website screenshot
listmonk GitHub repository preview

listmonk is a self-hosted newsletter and mailing list manager positioned as an open source alternative to Mailchimp and Brevo. It's written in Go and compiles down to a single binary backed by a PostgreSQL database, aimed at teams that want to run their own campaign infrastructure instead of paying per-subscriber SaaS fees. The project is developed by Kailash Nadh (knadh) and the team at Zerodha, one of India's largest stock brokerages.

Key features

  • Single binary deployment: the entire application, backend and static frontend assets, ships as one compiled Go binary.
  • Campaign management: create, schedule, and send email campaigns to segmented subscriber lists.
  • Subscriber management: import, tag, and segment subscribers, with support for double opt-in confirmation.
  • Rich campaign editor: compose campaigns with a WYSIWYG editor, raw HTML, Markdown, or plain text.
  • Analytics dashboard: track opens, clicks, and bounces per campaign from the built-in dashboard.
  • Public API: manage lists, subscribers, and campaigns programmatically through a REST API.
  • Idempotent installs and upgrades: both the --install and --upgrade commands are safe to run multiple times when setting up or updating the Postgres schema.

Ideal use cases

listmonk fits teams sending recurring newsletters or product announcements to a subscriber list who want to avoid per-contact SaaS pricing and keep subscriber data on their own infrastructure. Because it's a single binary with only a Postgres dependency, it's straightforward to run on a small VPS, and it scales to the kind of high-volume sending a large organization like Zerodha relies on for its own communications. It also suits teams migrating away from Mailchimp or Brevo who want the same core campaign and subscriber management workflows without ongoing per-contact billing.

Getting started

Two installation paths are documented: pulling the docker-compose.yml and running docker compose up -d for a containerized setup with Postgres included, visiting http://localhost:9000 afterward; or downloading the standalone binary from GitHub releases, generating a config with --new-config, editing it, and running --install to set up the database schema before starting the server. A live demo is available at demo.listmonk.app for evaluating the dashboard before installing.

Tech stack

The backend is a single Go binary with no runtime dependency beyond PostgreSQL, and the frontend is a Vue application using the Buefy component library, compiled and embedded into that same binary at build time. Contributing follows a documented developer setup guide covering how to run the Go backend and Vue frontend separately during development, since listmonk is licensed as free and open source software under AGPLv3. Existing installs can be upgraded in place with the same --upgrade flag used during setup, without needing to export and re-import subscriber data, and running it repeatedly against an already-current database is safe and has no side effects.

Frequently asked questions

Share:

Stars
22.4K
Forks
2.4K
Last commit
4 days ago
Repository age
7 years
License
AGPL-3.0
Self-hosted
Yes
Activity score
83/100
View Repository
Ad
Favicon

 

  
 

Similar to listmonk

Favicon

 

  
 
Favicon

 

  
 
Favicon