Comparing transactional E-Mail services
Tags: email
Published: 2022-09-13 13:44:59

What is it and why do I need it?
================================

A "transactional" E-Mail service is basically an API to send E-Mails from your code. If you attempt to make a "web service", it is highly likely you will need such a service sooner or later. Here are a few common use cases:

- Account management (welcome e-mails, e-mail verification, password resets...)
- System notifications (because of some downtime, important update, user action required...)
- User related information (receipts, order status, messages...)

Why not send it directly using the SMTP e-mail protocol? This works when you are like testing things out in very early prototypes, but it has a couple of downsides.

The obvious ones are the minor ones:

- The SMTP protocol is fairly low-level, although nice libraries exist
- The send e-mails will fill up your "outbox"

The much more important ones come later:

- You don't want your e-mail provider to suddenly block you because you send too many e-mails.
- You don't want the e-mail address you are using to be marked as spam. I don't know when/how exactly this happens, but I think it is a combination of volume, bounce rate, content and user complains.
- That's why it is important to track these. E-Mails that bounce, potential user complains, not re-sending to fake e-mails... That's all metrics typically offered by E-Mail API providers.
- Usually, they also offer visual editor for the E-Mail content with variables placeholders, which is extra icing on the cake.


Which one to pick?
==================

The space of E-Mail API providers is fairly crowded. Please note that I am not affiliated with any of this services, what follows is my own personal opinion, and things might change with time as services and pricings evolve with time.

What I needed was a transaction e-mail API to simply send a few confirmation e-mails. Really nothing fancy really. Just an e-mail with a tailored confirmation link.

I thought choosing would be easy and cheap, but it was not really. I was looking for something which has:

- A free plan without deadline for low volume
- A good pricing when it scales
- I did not care about extra features
- The possibility to send SMS in the future too was considered a nice extra

...and so my hunt started.

TL;DR;
------

In the end, I picked https://mailersend.com which looks like a fairly new service because of their generous free tier and the smoother "ramping up" price. Let's see how it goes.


Contenders
----------

The problem I got with most E-Mail API providers was that once you got beyond their free tier, their price increased by a hefty amount, typically from 15-35$/month. Now, this might not look like much, but for a hobby project, this would mean 180-420$/year which sounded simply a bit expensive to me.

On the other hand, you might argue that if you already send several thousands of e-mails per month, you might be kind of successful and this much should not be a problem. However, since my hobby project was intended to be free service, I still wanted to keep the bill low.

| Provider | Free tier | Min. price once you go beyond | 100k E-Mails/Month | Remarks |
|----------|-----------|-------------------------------|---------|------|
| MailerSend | 12000 emails/month | $1.00/1k emails | $55 |
| SendGrid | 100 emails/day | $20/month | $35/$90 | 
| MailJet | 6000 emails/month | $15/month | 95$ | Logo in E-Mails in free plan
| SendInBlue |  300 emails/day | $25/month | $65 | Logo in E-Mails in free plan
| MailChimp | - | $20/25k emails |
| ElasticEmail | - |  $15 + $0.10/1k emails |
| SparkPost | ? | $20/month | ? | unclear pricing
| PostMark | - | $10/month | $100 |
| MailGun | first month | $35/month | ? | I heard they were better in the past
| Amazon SES | only for EC2 VMs | $0.10/1k emails + $0.12/GB transferred | $10 + x? | I'm pretty sure it's not easy to use
| Microsoft azure | - | $0.25/1k emails + $0.12/GB transferred | $25 + x? | In "public preview"

Now, from all of them, Amazon SES is the cheapest. However, it does not provide a free tier, except if you are also hosted on their VMs, which is kind of a bummer. Like, you cannot even test it locally without pulling out your credit card. The other downside is that I have a rather bad past experience with AWS products. I always found them really complex and time-consuming to use, making productivity sink and with a complex billing with unexpected charges as a result. So, in the end, I prefer to stay away from them. I might be biased here.

Also, various services offer various plans with more or less features, at very different prices. So although the table above depicts prices, what you get for it may vary wildly. And some features might be very important for you.

Honorable mention also to Microsoft which started a similar [service](https://azure.microsoft.com/en-us/pricing/details/communication-services/). It's still in preview and I have no idea how good/bad it is. If it had a free tier, I would have given it a tryout due to their competitive pricing.

So, solely based on the pricing, I picked MailerSend. I wanted a free tier and a smooth scaling up. I guess they currently have extra competitive prices right now because they are newer on the market.

My experience with MailerSend so far
====================================

Please keep in mind that I have used their services since a few days only!

So far, it's all good.

- it has a straightforward REST API
- it works (it might be obvious, but you never know)
- it does not ask for a credit card upfront
- configuring DNS records to send emails with "...@yourdomain.xyz" worked painlessly
- it does not put a logo or links in your e-mails
- it has libraries https://developers.mailersend.com/#official-libraries (although I miss typescript support for the nodejs one)
- it can also send SMS (in beta), might be useful in the future
- the visual template editor is ok

The only issue I have is that their dashboard / login page somehow does not remember me, and I have to re-login each time. This is a very minor but annoying detail.

So far so good. I hope they will keep their service and pricing at this level in the future.

**But...** and that's important to point out. It's *not* for newsletter and marketing campaigns. There is no tool for that included. It's purely a "transactional API" for programmatically generated E-Mails. It's not "let's write a newsletter and send it to all". If you want that, I would advise using MailChimp or SendGrid which are both very well services and more suited for that.