Listmonk
Free and open source tool for sending email campaigns and transactional emails with high performance and rich features. Ideal for developers and privacy-conscious users.

listmonk is a high-performance, self-hosted newsletter and mailing list manager designed for sending both email campaigns and transactional emails. Built as a single binary application, it offers robust features while maintaining minimal resource usage.
Key Features
- High Performance: Multi-threaded, multi-SMTP email queues with sliding window rate limiting for fine-grained control. Single binary with minimal CPU and memory footprint.
- Campaign Management: Create and manage one-way mailing lists with millions of subscribers. Supports single and double opt-in lists with SQL-based querying and segmentation.
- Analytics Dashboard: Built-in analytics to visualize campaign performance, bounces, top links, and more across campaigns.
- Flexible Templating: Powerful dynamic email templates using Go templating language. Supports HTML drag-and-drop builder, WYSIWYG editor, Markdown, raw HTML, or plain text.
- Transactional Emails: Simple API to send arbitrary transactional messages using pre-defined templates. Supports multiple delivery mediums including SMS and WhatsApp via webhooks.
- Extensible Architecture: Messenger HTTP webhooks enable integration with SMS, WhatsApp, FCM notifications, or any custom messaging interface. Extensive API coverage for all features.
- Privacy Controls: Full privacy control for subscribers with granular subscriber management.
- Authentication: OIDC SSO authentication with fine-grained role-based access control.
Tech / Self-Hosting
listmonk is a single binary application that can be deployed anywhere. It requires PostgreSQL for data storage and supports installation via:
- Direct binary downloads for Linux, macOS, Windows, FreeBSD, NetBSD, and OpenBSD
- Docker containers with provided docker-compose.yml
- One-click deployments on multiple hosting providers including Nodion, Kloudbean, Northflank, Railway, Zenith, PikaPods, Elestio, Zeabur, Cloudzy, and LumaDock
Installation involves generating a configuration file, setting up the database, and running the binary. The application runs on port 9000 by default.