Since starting 30 Hour Jobs in February, I've been using Mailchimp to manage the mailing list. With my recent work to rebuild 30 Hour Jobs as a custom web app – instead of using hosted solutions – I have some new requirements. I want to automate my weekly email digest to alleviate some of the manual work I was doing to send out the weekly newsletter and I will soon need to send transactional emails as well. To do this, I sought to find a tool better suited for these purposes.
- Ability to send Transactional and Marketing emails
- Managed email list
- Unsubscribe management
- Sane API
- Template rendering and management
- Basic workflow support
I'm familiar with most of the popular Email Service Provider (ESP) options available but I hadn't dug deep into the options recently. A some searching led to the options Sendgrid, Mailgun, and Mailjet. Postmark was a service that I really wanted to try but they are explicitly transactional only.
Comparing Sendgrid vs Mailgun vs Mailjet
I had high hopes for Sendgrid as It seemed like the most polished ESP solution. Also, with their recent acquisition by Twilio, I thought the addition of an SMS service would be handy in the future. Unfortunately my overall experience wasn't very smooth.
The first challenge was settings up my sending domain with SPF and DKIM authentication. There were some issues with this workflow and the page to check the status of the domain didn't seem to work. I'm sure I could have contacted support and fixed this, but given that I was exploring my options, I moved on before this.
Sendgrid, which was originally designed only to send transactional emails, does now also support marketing email campaigns but the two features seem fairly disconnected. The transactional email API makes sense and a templating solution is provided to render email templates with dynamic data. However, the marketing email API didn't seem to offer the ability to render templates with dynamic at all. The campaign email design must be created using the visual editor and only then could a campaign be created programatically.
On the positive side, Sendgrid's unsubscribe features were very nice. Emails could be unsubscribed from automatically and it's also possible to create unsubscribe groups and generate a subscription management page which you can send a user to if you have multiple subscription types.
Mailgun is a solid service with a nice API. I did reach out to their support team and the customer service was very good. The dealbreaker for me was that Mailgun does not manage contact lists and unsubscribe states for you. They do have email group aliases that allow you to send to a group, but this wasn't quite enough to keep me. Their dashboard page is nicely designed and provides enough analytics without getting too complicated.
Overall, if you need a transactional email service, Mailgun is a great option. If you need to send marketing emails, you can as long as you don't mind managing your own email list and unsubscribe functionality.
After enquiring about managed contacts and unsubscribe lists, Mailgun's support actually recommended Mailjet to me as an alternative.
My first impressions of Mailjet were very good. After creating an account, it was quite clear what I needed to do to send my first email. Setting up SPF and DKIM was a breeze and the dashboard was very easy to navigate.
If you are using Mailjet as a Mailchimp alternative, the experience is great. There are no restrictions on the number of contacts and you can manage and contacts can be organized across several lists. Each list has its own unsubscribe status and you can create suppression lists if needed to supersede subscription state. The WYSIWYG email editor provides a great experience – which is powered by MJML, the popular email markup language that Mailjet created. If you were only sending marketing emails, I would still recommend this over Mailchimp for the better experience and cost savings.
The transactional email experience is good as well with a clean API and the same drag-and-drop email template editor. And as an added bonus, they even include email work flows so that you can send emails automatically as your users make their way through an email funnel. For example, you can send an email automatically when a user signs up to a list. And to top this all off, apparently they also provide a SMS sending service if you need to send SMS messages to your users.
The one hitch is that the API allows you to create marketing email templates, but it does not allow you to render the template stored in their system using template variables (like the transactional templates). I spoke to their support team and they confirmed that this feature is in the works. In the meantime, I was able to render the template on my end fairly easily using MJML and create the campaign with an HTML payload.
Overall, I'm quite happy with Mailjet as an ESP and recommend their service to anyone who needs to send marketing and transactional emails programatically.