Doing product emails the right way close

Josh McMillan
In Apps
20th March 2014
Doing product emails the right way

Whether we like it or not, email is an absolutely vital tool for use by any online business. From transactional mail (notifying users of actions which affect them) through to full-on email marketing campaigns, if you’re selling any kind of product online - particularly a SaaS style service as Codegent does - then your email strategy is an essential part of your business.

Despite numerous campaigns to kill it off (particularly, ironically, by those in the technology industry) email still consumes around 28% of the average employee’s workweek. Due to this ubiquity as one of the most widely adopted internet services, email remains one of the most powerful tools for customer acquisition and retention available.

Email has such an important place in internet architecture, that many products are more or less just wrappers around it - two of our own products, Twilert and Schedule, are UIs for regularly delivering appropriate emails. With that in mind, it’s vital that we get our email tech right. These are some of the tools and strategies we use to effectively deliver email across our product offerings.

General Principles

We actually send three types of email from our products - transactional (in response to user action), marketing (newsletters and the like) and behavioural (‘we see you’ve done X, why not do Y?’). In all of them, we have three main principles that usually apply when it comes to mail:

It’s got to be trackable, and feed back to the app

We always want to be able to tie clicks (and if possible, opens) for an email back to individual users. From there, we need to be able to customise user experience based on their reactions to our emails.

Never handle delivery

Reliably delivering emails is hard. We’d much rather have it handled by a bigger and more established service.

Testing and changing content has to be as easy as possible

Using established HTML email frameworks such as Ink let us support a large variety of platforms where we have to code emails ourselves.

Selecting an email provider


We generally send transactional email using Amazon SES - it’s extremely cost effective and provides really good reliability, which is vital for transactional mail. It also integrates nicely with the rest of our application architecture, a lot of which resides on AWS.

Unlike other services such as Rackspace’s Mailgun, SES doesn’t provide us with open and click tracking out of the box. Whilst this could be viewed as a downside, it’s actually quite powerful as it allows us to roll our own completely custom implementation without having to comply to the restrictions of a 3rd-party API.

We log all opens and clicks in our app databases alongside user data, allowing easy retrieval and processing and resulting in our email data becoming a first-class citizen within our applications.

One useful service which SES does provide is bounce notifications - if we’re repeatedly sending emails out to a dud address, we can notify users within the app that we think their email is wrong (which is vital in email-centric services like Schedule and Twilert).

Marketing and Behavioural

We use MailChimp to send marketing emails to entire app customer bases - it provides a really easy UI for non-technical folks to fire out emails on demand. Behavioural email is something which we’re just getting started with - at the moment we’re trying out Intercom for Twilert. Intercom is particularly interesting as it essentially combines behavioural email, help desk functionality and some ‘CRM’-style stuff too.

This stack generally works pretty well for us on the whole - the one issue we have with MailChimp and Intercom is that at the moment we don’t tie back opens and clicks from emails sent there with users in the app like we do with transactional mail. It’s something we’re working on, and will probably involve an intermediary service to pluck data out of external services and load it into our apps.

In conclusion, doing email right is hard - there’s no two ways of saying it. With the enormous amount of services out there to handle more or less every facet of email for online companies, it’s vital to maintain a process of continuous evolution for your email stack.