Listmonk is great for developers who love raw HTML. Punchmail is for everyone else who wants a block editor, automation, A/B testing, and enterprise features — self-hosted.
Punchmail isn't a hobby project with a queue bolted on. It's a multi-layered sending engine designed from day one to handle millions of emails without breaking a sweat.
7 priority queues — tracking, sending, campaigns, automations, bounces, imports, default. Each with dedicated workers via Laravel Horizon.
Campaigns split into 500-subscriber batches. Multiple workers process batches simultaneously. Template compiled once, cached in Redis, reused across all batches.
Every open, click, bounce, and unsubscribe stored in ClickHouse with 6 materialized views for instant aggregation. No more slow MySQL GROUP BY on millions of rows.
Redis SETNX locks → MySQL unique index with INSERT IGNORE → job idempotency. Three layers guarantee zero duplicate sends, even during crashes and restarts.
Enterprise email marketing features without the enterprise price tag. Built by someone who's been sending email since before Gmail existed.
Drag-and-drop email builder with 10 block types. Compiles to bulletproof HTML via MJML. Looks perfect in every client — yes, even Outlook.
Nested AND/OR conditions across subscriber fields, tags, engagement history, and campaign activity. "Opened campaign X but didn't click in 90 days" — milliseconds.
Trigger-based workflows with conditions, delays, and actions. Welcome series, re-engagement, cart abandonment. Set it and forget it.
Connect any SMTP provider. Create pools with weighted distribution for IP warmup. Automatic failover. Per-campaign throttling. This is what enterprise ESPs charge thousands for.
Event tracking powered by ClickHouse. Millions of events, instant queries. Full per-campaign reports and per-subscriber activity timeline.
Test subject lines and content with 2-3 variants. Auto-send the winner based on opens or clicks. Data-driven sending.
IMAP/POP3 mailbox polling plus webhook receivers for SES, Postmark, and SendGrid. Automatic hard/soft classification with configurable thresholds.
Multiple suppression lists with email AND domain blocking. Platform-wide suppression for spamtraps and global unsubscribes. Three-layer dedup prevents duplicate sends.
RFC 8058 one-click unsubscribe (Gmail/Yahoo required), in-body unsubscribe, and full preference center. List-Unsubscribe headers automatic on every send.
Listmonk is a solid piece of engineering — a lightweight Go binary that handles newsletters with a clean API. But it was designed as a newsletter sender, not a full email marketing platform. There's no visual email editor. You write raw HTML or use plain text. For developers who live in code, that's fine. For everyone else, it's a dealbreaker.
The segmentation in Listmonk is basic: you can filter by subscriber attributes and list membership, but there's no engagement-based segmentation. You can't build a segment like "opened my last 3 campaigns but hasn't clicked in 60 days." There are no automation workflows, no A/B testing, no SMTP pools with weighted distribution or failover.
Listmonk handles bounce processing via webhooks and POP3/IMAP mailbox scanning, but it lacks advanced bounce intelligence — there's no automatic hard/soft classification with configurable thresholds, no multi-layer suppression list management, and no platform-wide spamtrap protection. If you're sending at scale, keeping your sender reputation intact requires more manual oversight.
Punchmail gives you everything Listmonk does — self-hosted, unlimited subscribers, your own SMTP — plus a drag-and-drop block editor, automation engine, A/B testing, ClickHouse analytics, bounce intelligence, and SMTP pools. It's the platform Listmonk would be if it kept building for another three years.
Drag-and-drop email builder with 10 block types, compiled to bulletproof HTML via MJML. No more writing raw HTML for every campaign.
Welcome series, re-engagement flows, cart abandonment — trigger-based workflows that Listmonk simply doesn't offer.
Test subject lines and content with 2-3 variants. Automatically send the winner. Listmonk has no A/B testing at all.
Connect multiple SMTP providers with weighted distribution for IP warmup. Automatic failover if one provider goes down.
We're not competing with Mailchimp's marketing budget. We're competing with their feature set.
| Punchmail | Listmonk | Mautic | Mailchimp | |
|---|---|---|---|---|
| Self-hosted | ✓ | ✓ | ✓ | ✗ |
| Unlimited subscribers | ✓ | ✓ | ✓ | ✗ |
| Block email editor | ✓ | ✗ | Basic | ✓ |
| Advanced segmentation | ✓ | Basic | ✓ | ✓ |
| Automation workflows | ✓ | ✗ | ✓ | ✓ |
| A/B testing | ✓ | ✗ | Basic | ✓ |
| SMTP pools + warmup | ✓ | ✗ | ✗ | ✗ |
| ClickHouse analytics | ✓ | ✗ | ✗ | ✗ |
| Bounce processing | ✓ | ✓ | ✓ | ✓ |
| One-time pricing | ✓ | Free | Free | $350+/mo |
No PhD required. If you can copy-paste three commands, you can run Punchmail.
Clone the repo, copy the environment file, set your admin credentials.
git clone https://github.com/punchmail/punchmail && cp .env.example .env
One command spins up all 7 containers — app, database, analytics, queue, cache, email renderer. Done.
docker compose up -d
Add your SMTP provider in settings — Amazon SES, Postmark, your own Postfix, whatever. Create pools, set weights, configure failover.
Import subscribers, build your first campaign with the block editor, hit send. Welcome to email freedom.
No subscriber tiers. No send limits. No "contact sales." Just a price that makes sense.
🚀 Launch price for the first 100 customers. Then €99.
I ran Listmonk for two years. It's a great tool, but I spent more time writing HTML emails and manually managing bounces than actually growing my list. Punchmail gave me the self-hosted control I wanted with the features I needed.
Your subscribers. Your data. Your server. One price, forever.