Update: I've since switched from Sendy to using Mailcoach, a beautiful alternative to self-host your newsletters. Modern looking, clean code and easy to extend by some of the smartest people in the Laravel (PHP) ecosystem.
I'd recommend giving Mailcoach a try if you're just starting out. If you're curious about the process, I wrote a post about how I use Mailcoach to send a weekly newsletter to more than 10.000 users.
I’m leaving the original post available here for those interested in using Sendy.
Quick recap; I launched cron.weekly 50 weeks ago, it’s a weekly newsletter about Linux and open source and everything that relates to it. And last week, I sent the 50th issue in a row!
It’s grown from a handful of subscribers to over 2.500 now – some are even angry when the mail doesn’t arrive on time. I’m extremely happy with the growth and feedback I’ve received!
If it sounds interesting to you, go to cronweekly.com or scroll to the bottom of this post to sign up.
Convenience is costly
I first signed up for MailChimp to start the cron.weekly newsletter because it was the easiest option. For the newsletter, I wanted an online archive, so the best method to me seemed to be a website to host the archive, and a mailing tool that could read the RSS feed from that and automatically mail the content to everyone who signed up.
I set that up in less than 2 hours, with a couple of clicks;
- WordPress website with a random theme
- The MailChimp plugin for WordPress
- An RSS campaign in MailChimp
Every time I posted something in WordPress, Mailchimp would pick it up over RSS (thanks, Aaron!) and send it to everyone who subscribed, using the simple WordPress plugin.
Convenience for lazy folks hackers.
It’s all about the money
Convenience comes at a cost though, and it isn’t immediately clear with MailChimp. You can have up to 2.000 subscribers in your mailing list and still send mails for free. Awesome, right?!
Well, things get expensive pretty quickly though.
Signups for cron.weekly are actually going pretty strong, which landed me in the 50$/month plan. That’s 600$ per year.
For a hobby that isn’t making any money (yet), I’m not going to spend 600$ a year.
In fact, with the current growing rate, I would soon be landing in a 75$/month plan, for almost 900$ per year.
The sysadmin hacker in me disagrees with those pricing. I can do that for less, right?
Enter Sendy and Amazon
There are a couple of alternatives for self-hosting a newsletter, the most popular seem to be Sendy (PHP) and Mailtrain (NodeJS). I chose Sendy as it’s the easiest to get running, as all it requires is a webserver and PHP. And I had that already for this blog and the variety of other sites I run.
It isn’t free though, but at a one-time fee of 59$ it’s good enough.
Once you have the application installed, there are 2 ways to send your newsletter;
- From the local server, using the local MTA (go postfix!)
- Using Amazon’s Simple Email Service (SES)
There’s this old saying that friends don’t let friends run mailservers, so instead of sending mails locally, I decided to use Amazon SES.
After all, I send a little over 12.000 mails per month, nothing a local server can’t handle – but e-mail delivery gets tricky at volume (DKIM, MARC, IP reputation, SPF records, handling bounces, …). None of those things I wanted to manage.
But the biggest motivation to me was saving money, so here’s my Amazon SES bill (forecasted for October):
From 50$ per month to 1.38$ per month. Score!
But, there’s a catch.
Responsive mobile e-mail layouts
There’s a big plus about MailChimp: for the monthly fee, you get well designed, tested, responsive e-mail layouts.
And as it turns out, creating decent e-mail layouts is like designing for IE6: it’s effing frustrating.
I played around with both, but Cerberus seemed to fit my use case best. So I wrote a little e-mail parser to generate the HTML and TXT versions for the newsletter (which is up on GitHub, if you’re interested). This probably took most of the time to finetune, test and process reader feedback.
Doing things like this makes you value MailChimps’ pricing, but in hindsight I still made a good decision going self-hosted + Amazon SES.
MailChimp is expensive, Sendy is intensive
You spend more time setting up Sendy & Amazon SES (their ‘getting started’ guide is perfect by the way), but it’ll save quite a bit of money in the long run.
My Sendy setup: 59$ one time fee + roughly 2$ a month = around 80$ for the first year and 20$ recurring costs per year.
With MailChimp, I was already at 600$ a year and things were only going to increase.
If you’re on MailChimp now: spend some time checking out Sendy (or alternatives) and use SES to send out e-mails. Your wallet will thank me later.