My Hacked-Together, MacGyver-Like Email Production Strategy
MailChimp was starting to get way too expensive, so instead of eating the cost, I hacked up my own email production tool over the weekend using scotch tape, paperclips, Ghost, Markdown, and a whole lot of regular expressions. It’s a little awkward, but it works — and it has me wondering whether email production needs a philosophical rethink.
Throughout the nearly two years I’ve been doing Tedium, my readers have gotten to know a lot of things about me. It’s clear that I’m weirdly obsessed with obscure technical quirks, with bedding, with tales of early internet, and with Hot Pockets.
But perhaps my most obvious obsession is with the process of writing itself. It’s something that I wrote about at length last month, the desire to smooth out the writing and editing process.
Perhaps it’s that desire to have an editor that doesn’t suck that led me to do something really weird over my Labor Day weekend: I replaced MailChimp, the email marketing platform, with Ghost, the blogging platform.
Why the hell did I do that? Well … let me explain. There were two issues at play, really:
Email marketing costs a lot more when you start seeing success. Tedium is growing, and it’s hitting a subscriber level that makes MailChimp a bad choice of provider. If a media outlet gives me an unexpected shout-out, I’m suddenly having to pay a lot of money just to send email to people. MailChimp is a good option for getting started in building a newsletter, but it’s bad when you’re in full growth mode. Not helping matters are the pricing tiers, which start becoming a not-insignificant cost when you top the 2,500-subscriber mark, as I recently did. A $50 charge per month for sending emails is $600 per year, a cost that is pretty high for a side project, no matter how you slice it.
The production process of creating a newsletter is not insignificant. There’s a lot of HTML code, a lot of copying and pasting, and a lot of potential for things to break, and custom templates can be a bit of a minefield. A single out-of-place tag can gum up the whole works. At first, this was OK. But over time, I realized that this process was adding nearly an hour to the production time for the email. I had to pick photos, copy and paste words I’d already written (in HTML format, no less), and double check the HTML to ensure that nothing broke.
Now, Tedium started out as a newsletter-only production, but I eventually started posting issues on a self-hosted Ghost blog — a far less significant expense per year ($60, plus $10 for the domain name) than the MailChimp subscription.
The fact that I’m self-hosting Ghost gives me some advantages over a hosted solution. I can modify the Ghost install to support some special features — specifically, by adding some extensions to the platform’s ShowdownJS implementation. In practice, this allows me to very modestly extend the Markdown spec through shortcodes, allowing me to add some design elements pretty simply.
It can be confusing at first, because Showdown relies on some complex regular expressions to do its magic, but once set up, it works really nicely, and I would love to see Ghost support something like this natively down the line.
Managing Email Like a Blog
So, as you can see, I had two separate approaches to managing content — one very cumbersome process through Mailchimp’s rich-text interface, and a far-simpler approach through Ghost.
The rising cost of MailChimp got me looking for other options, and I found the approach of Email Octopus, which allows you to send messages through Amazon’s servers, attractive. But it’s ultimately better at sending messages than designing them, and so if I was going to use that, I needed another solution to write and design my email. A couple places I looked for inspiration:
Zurb’s Foundation for Emails comes with a flat-file CMS that isn’t really used anywhere else. Foundation is intuitive, but I would be stuck rebuilding my template from scratch, and I found working with the editing tools a little quirky for my use case — I simply wanted to feed it Markdown files and have it spit out a template. It wasn’t a bad approach, though.
Utilizing a static CMS like Jekyll or Middleman appears to be a not-unheard-of way to build email templates, and it would have worked, but it was a little off from what I was used to.
The email provider CakeMail tried something genuinely clever a while back, a test program called CakeDown that effectively combines the two-column Mou/Ghost Markdown layout with Zurb’s Ink framework, the prior version of Foundation for Emails. Like my existing template setup, it uses custom shortcodes that stand in for complex table tags. It was a sly strategy, but it wasn’t really designed to be extensible for other template use cases, and the company had moved away from the Markdown-driven approach. (Too bad. They were onto something.)
Using Ghost for Email Production
On their own, none of these were a good solution for my use case — I effectively needed a system I could run that would turn my article into an email template without forcing me to do much additional copying and pasting. That solution, as it turned out, was Ghost.
I mean, it makes sense, right? If I’m already using [bracketed blocks] in the place of div tags, why not use those same blocks in the place of much more complex tables? And instead of the standard fancy theme, why not have it load my battle-tested HTML designed to fill up thousands of inboxes?
When I broke down the use case, building something minimally viable wasn’t too hard. The regular expressions were a lot more complicated than on the hosted site, but I eventually worked them out. And there’s a lot of potential here: Effectively, by treating the article page as an email template, I can go in, copy and paste the article from my hosted site into my locally-hosted email templater, push out the code, run it through a CSS inliner (which I could eventually set up through Ghost itself), paste it into Email Octopus, and turn the entire email production process into something that takes maybe 5–10 minutes. And unlike a static site, there’s a full-fledged CMS behind me, making it fairly easy to reuse content, tag it, and store it in a database.
When I first tried this on Tuesday night, the unorthodox strategy mostly proved itself, even though there were some hiccups along the way (there was a glitch with the UTM codes I added that I needed Email Octopus to fix for me; fortunately they did — again, they’re awesome). No it wasn’t perfect. Yes, it helped me produce an email with a lot less pain than through MailChimp.
Do We Need a Dedicated CMS for Email Production?
Now, what I did over the weekend is an absurdly janky proof of concept. This idea is currently held together by taped-together code I’m embarrassed to show anyone — and, in fact, I made no effort to modify any pages in the theme besides the post page, because that’s all I needed for now. I’m a writer first, a designer second, and a coder seventh. My non-Githubbed blob of code proves it.
But you know what? There’s still a really great idea here. This rethink of the way I build my emails — well-suited for the chunked-up medium-form essays I send out twice a week — really makes me wonder if people who are better at this than me are missing an opportunity by integrating the writing, design, and distribution of emails into a single process.
Maybe these things should be separate. It might just speed up production and improve the overall results in one fell swoop.
But there needs to be a tool for this that does this properly. I won’t put forth my hacked-together custom code, but I will put forth my crazy idea.
Email should have a content management system and a distribution system. For years, companies like MailChimp have combined these processes.
What if they didn’t? And what if our tools for building emails worked more like Ghost, or Drupal, or WordPress?
Perhaps email production might suck a lot less.