Rationale for Decisions

Email Subscription Plugin – vs – Custom Implementation

How should you collect users' emails?

There is no wrong solution.  This decision, like many others, was only decided after laying out the pros and cons for each solution for my specific use case.  I was comparing using MailChimp versus building my own subscription service using an SMTP email provider and a database.

My ‘must haves‘ were:

  • Sending a welcome email as soon as the user subscribed
  • Simple, clean UI

Both of these are accomplishable with either solution; however, with MailChimp they only offer automated replies when using their paid software ($10/mo).  Here’s my basic pro list for both approaches:

MailChimp Custom
fast integration custom fields
email gui automated email sending
analytics free*
easily port contacts
custom triggers


Fast Integration

Time is of the essence when starting a company, especially if you’re bootstrapped.  One huge appeal to using a built service is the plug and play aspect that eliminates the need for boilerplate code.

Email GUI

This one isn’t huge for me as most of my email communication will be automated and triggered via code, but having a web interface is nice for sending one off emails.


Analytics are huge to determine if your campaign is working.  Without open rate data, you’re more or less sending messages to a black abyss hoping you’ll see some sort of return.  But again, most of my communication is automated and is more for the customers case rather than a marketing outreach to benefit me.

Custom Implementation

Custom Fields

Storing custom fields allows you to efficiently track user interaction and conversion performance, something that is extremely important to me.  If you only have 200 people visiting your site, you better know how to capitalize on those 200 people.  With a custom implementation, I would be able to track:

  • Which page the user was presented (A/B testing)
  • How long the user was on the page before subscribing
  • Whether or not the user was a return visitor
  • User’s source IP to determine geographic location

Automated Email Sending

Consumers are impatient, me including.  Waiting 5 minutes for an email to show up is no longer acceptable with modern technology.  Using Amazon’s SES coupled with a REST API, I can both store the user’s info and send a welcome email with 1 to 2 second latency.


Amazon Web Services offers a free tier that allows you to send 62k emails per month for free.  After that, emails are $0.10 per 1k.  AWS also offers a free NoSQL database service, DynamoDB, that allows for 25GB of storage and 2.5M read requests for free.  In the coming weeks, I’ll be adding a blog post exploring the different virtual server providers (AWS, Azure, Rackspace, Softlayer, VPS, …).

Easily Port Contacts

If using your own database, you can easily port contacts between databases or even upgrade a user to a customer when the time comes.  This is even easier when using a NoSQL db.

Custom Triggers

This was a small feature on my list, but you can set up any sort of trigger to fire when the user signs up.  I just have my service send me an email, but you can get creative with this one.  E.g. batch all signups for the day and tweet how many new subscribers you got at the end of the day.

The Decision?

After weighing out the two options, building a custom implementation was an obvious winner for me.  The major advantage of using MailChimp or something similar, would be the plug and play feature, but luckily I had already written an email subscription service for one of my previous projects, IPknow, so I was able to just port most of the code over.

The main advantage of building it myself was the custom data.  User interaction is extremely important for getting your landing page right and once that data is gone, it’s gone.  To me, it was important to get that implemented from the get go.  Check out how to build a website in three days, if you haven’t already.

I was also able to implement the missing features pretty easily.  I coupled S3 with a JMinix console (essentially a RESTful GUI for Java’s RPC protocol, JMX) to set up a simple web interface for sending out one time emails.  And I am able to track open rates by including an image in my email that calls back to my API service.  The API service tracks that the email was opened, and sends back the requested image.  I can touch more on this in a new blog post if anyone is interested.

Like I mentioned in the beginning, there is no right or wrong solution – it really depends on your needs.  But, hopefully this was at least somewhat helpful in helping you decide which route you want to take.

Thanks for reading!

– Ryan



Leave a Reply

Your email address will not be published. Required fields are marked *