A look behind Dense Discovery: creating a fully customised weekly newsletter


I’m the publisher of Dense Discovery, a weekly newsletter with a densely curated mix of practical and inspirational links at the intersection of tech, design, and culture. One of the most frequently asked questions I get is: What tools do you use to create and send the newsletter? Here’s a quick rundown of how I built Dense Discovery.

Choosing an email platform

I’ve been a happy customer of both MailChimp and Campaign Monitor for a long time. They are easy to use and extremely reliable, but once your subscriber count grows to about 15,000 subscribers, you’re looking at a few hundred dollars every month. With the recent redesign of Dense Discovery (it was previously part of my other project, Offscreen) I decided to make a move to a cheaper alternative. There are plenty of other email platforms out there. After some shopping around I settled on Mailblast.io.*

Mailblast’s interface and feature set is inferior to that of Mailchimp and Campaign Monitor but because I knew I’d hand-code my own emails I didn’t really care about having a fancy editor. I also don’t make use of complex segmentation, merge-tags, or automations. I’m currently on Mailblast’s second-tier plan for $35/month. By using Amazon servers to deliver emails I get an additional bill from Amazon for a couple of bucks at the end of the month. All up, I’m currently spending ~$40/month to send a weekly email to currently 15,500 subscribers.

Building the template

Dense Discovery emails are quite long. Composing such a long email with MailChimp’s editor you’d quickly hit the size limit (MailChimp injects a lot of code to ensure your email looks good in every client). To prevent this from happening I needed to create my own, light-weight template.

I went looking for a barebone, responsive email template and found one in Antwort. It took lots of fiddling around and a bit of cross-client testing to arrive at the current layout. Dense Discovery still looks odd in Outlook and in some of the less popular web and native clients, but I haven’t had the time or patience to fix it.

Using a custom template

With a 100% custom template I have to edit my emails offline and then basically just upload each issue of the newsletter when I’m ready to send. I use Atom do to this. This isn’t the most elegant or user-friendly workflow but it has a few advantages:

  • I can upload each issue to my website and thereby build my own archive.
  • I have full control over the template and can make tweaks or fix bugs or completely change the look of a section whenever I feel like it.
  • If I detect a mistake after sending out the newsletter (happens quite a bit), I can still fix it in my archival version, so when readers view it online or browse the archive the mistakes are gone.

Creating the website/sign up page

For the website itself I chose to keep it very simple, at least for now. It’s just a bunch of static PHP pages that allow people to sign up and offers more info on my sponsorship slots and classified ads.

Creating the archive

I always appreciate it when newsletters make an archive of past issues available. Not only does this offer new visitors a preview of what they sign up for, the emails I send out take quite a bit of effort to compose and it’d be shame not to have this publicly accessible record of the work that already went into it all. Unfortunately, most email platforms don’t offer a great archive feature — including Mailblast. So I built my own.

As I already mentioned above, after sending out the newsletter I upload the latest issue to my server. Through a bit of PHP I set my archive page to automatically look for the subfolder with the highest number (i.e. the latest issue) and then display the HTML file in that folder. Easy.

Hacking together a DIY ad manager

To manage the bookings of both my sponsorship slots and the classified ad slots I hacked together a bunch of apps that automate the process for me:

  • On a Google Spreadsheet I list all available slots.
  • When an advertiser clicks on a slot to book it, they get referred to a Formsite form where they enter their details and make the payment.
  • The successful payment kicks off a Zap that automatically adds the booking to another Google Spreadsheet and updates the original spreadsheet to show that particular slot as booked.

There you have it: a simple DIY ad manager.


At the time of writing, Dense Discovery was in its tenth week/issue and without any aggressive growth shenanigans I managed to increase the subscriber list from initially 11,500 to now around 15,500. Because I regularly clear the list of inactive or unconfirmed email addresses, I have a pretty consistent open/click rate of 65%/30%. Interested in sponsoring an issue?


Sign up to Dense Discovery here: www.densediscovery.com

Or explore my other project: Offscreen, a print magazine about the human side of technology.

* This is an affiliate link.