Hacker News new | ask | show | jobs
by knadh 2540 days ago
Author here. To give some context on why listmonk was built, at work (regulated financial business), we have to deliver e-mails, mostly important updates, to 1.5mn+ customers regularly. We used phpList for the longest time and then tried MailTrain and Sendy before finally deciding to reinvent the wheel after running into a number of issues, of which, a few important ones are mentioned below.

- Performance. Unreasonably long amounts of time to send out e-mails. phpList degraded to the point of taking several days to process a campaign. listmonk can spawn N goroutines (~threads) and push e-mails to multiple SMTP servers. On a commodity ec2 instance, we're able to send 1.5mn+ e-mails in a couple hours.

- Subscriber imports were extremely slow. Direct integration to keep subscribers in sync with external CRMs was cumbersome. Direct DB inserts were complicated due to the complex table structures. listmonk imports 10k records/sec into a Postgres DB on a commidty ec2 instance.

- Segmentation. Often, we have to rapidly segment users by custom attributes and conditions and relay an update to them. listmonk supports SQL expressions to segment users on their attributes that are defined as arbitrary JSON maps (thanks to Postgres JSONB type).

- Unavailability of dynamic templates. listmonk templates support Go template expressions so it's possible to write logic in messages to make them dynamic.

I would like to add that listmonk is still work in progress and requires a number of essential features before it can come out of alpha.

2 comments

Amazing work, congratulations! I'm gonna give it a try, we have been using Phplist so far (we send like 500k daily emails).

Are you guys using returnpath' senderscore or a similar certification to send that amount of emails ?

Thank you. We aren't. We just have dedicated IPs and proper DKIM and SPF records.
Could you please elaborate on how to use returnpath to deliver large quantities of emails? Isn’t it solely informational service?
Return Path has a certification service that certain providers use as a signal to the “legitimacy” of the sender (don’t know if that was the best phrasing...).

https://returnpath.com/solutions/email-deliverability-optimi...

> - Segmentation. Often, we have to rapidly segment users by custom attributes and conditions and relay an update to them. listmonk supports SQL expressions to segment users on their attributes that are defined as arbitrary JSON maps (thanks to Postgres JSONB type).

So, is it connected to some kind of CRM ?

Out of the box, it isn't, but it's straight forward to do it with APIs (for individual entries and for bulk CSV imports) or with direct inserts to the DB (the table schema is simple). In production, we've made a small daemon that listens to a PubSub queue published by our CRM to keep the mailing list up to date.

About attributes, every subscriber entry in listmonk can take a JSON map of attributes that can be queried.