Published
Friday, April 15, 2016 - 14:29
Written by

Note: this post was edited August 17, 2017, to include pricing changes on Mailjet and Sparkpost.

CiviMail is a great way to send targeted email to your supporters using CiviCRM to segment recipients and populate token values. Meanwhile, email marketing services such as Mailchimp and Constant Contact provide sending infrastructure so you don't have to worry much as much about deliverability. By using CiviMail with an SMTP or email API service, CiviCRM users get the benefits of both.

One popular service is Mandrill, which is offered by Mailchimp. Hundreds of organizations use the extension that integrates it with CiviCRM. However, in late February, Mandrill users received an email about “some significant changes that will affect your Mandrill account”.

To summarize, Mailchimp is looking to shed users who are not using their core Mailchimp product. Mandrill users will have to sign up for a paid monthly Mailchimp plan, and the allowance of 12,000 free emails per month is eliminated. Customers will need to buy $20 blocks of 25,000 emails per month.

They also modified the terms of service to prohibit usage such as CiviMail:

If you use Mandrill to send bulk emails, in violation of our Acceptable Use Policy, then we may charge you at the comparable MailChimp pricing tier or terminate your account.

So, what are the best options for CiviMail users?  The following is a compilation of options for replacing Mandrill as your outbound SMTP mailer for CiviCRM.

CiviSMTP

For longer than many bulk SMTP services have been around, CiviSMTP has been offering external SMTP tailored for CiviMail users. They take care of setup for you (for a $50 fee), and bounce handling and reporting is integrated and reliable.

Pricing is more expensive than most, and there is no free option. The minimum charge per month is $15, including 3,000 emails, and the next 7,000 messages are 3¢ for each additional ten. The following 90,000 emails are 1¢ for each ten.

(8,000 messages) $30.00
(24,000 messages) $50.00
(80,000 messages) $106.00
Know CiviCRM, support CiviCRM as sponsor, no-mess integration
Setup on their schedule (2-3 days), high pricing

Mailgun

Rackspace offers a bulk email service called Mailgun. It offers straightforward documentation and separate tracking and queuing of mail from each domain. Domain verification is strongly encouraged but not required.

A CiviCRM extension is available for handling bounce and failure webhook notifications.. However, it has not had substantial updates for over a year and only claims to support CiviCRM 4.4.

The first 10,000 emails per month are free, and you don't even need to enter a credit card if you are certain to stay below that amount. The next 490,000 are 0.05¢ each. Billing is by actual usage.

(8,000 messages) free
(24,000 messages) $7.00
(80,000 messages) $35.00
Large user base, free tier with full features and no limits, affordable pricing, multiple subaccounts.
Potentially unsupported bounce handling extension.

Mailjet

Mailjet is a bulk email service based in Paris. It offers documentation in several languages. Domain verification is optional, though you must verify each sender's address otherwise. Multiple subaccounts can be configured.

A CiviCRM extension is written for CiviCRM 4.6, but it includes a PHP file override, making it incompatible with CiviCRM 4.7.

Pricing is based upon the plan you select, with overage amounts charged. The lowest plan is $7.49 per month for up to 30,000 emails, with $3.00 per additional 1,000 emails. The next plan is $27.95 per month for up to 60,000 emails, with $2.20 per additional 1,000. The third tier is $74.95 for up to 150,000 emails, with $1.00 per additional 1,000, and it includes a dedicated IP address.

A free plan allows up to 6,000 emails per month, but it is limited to 200 per day.

(8,000 messages) $7.49
(24,000 messages) $7.49
(80,000 messages) $71.95
EU-based service is good for European users (but works for anyone).
Pricing tiers can hurt you unless you watch your usage. Extension only available for 4.6.

SendGrid

SendGrid is a longstanding SMTP service that some CiviCRM users have worked with for six or seven years. Multiple subaccounts can be configured for separate sending domains or subdomains, but only with “Pro” level accounts.

A CiviCRM extension is available in the extension directory with versions compatible with 4.4, 4.6, and 4.7.

Pricing is based upon the plan you select, with overage amounts charged. A free plan is available for up to 12,000 emails per month. The next plan is $9.95 per month for up to 40,000 emails, with 0.1¢ per additional email. The second paid tier is $19.95 per month for up to 100,000 emails, with 0.075¢ per additional email. A dedicated IP address and subaccounts are available on plans starting at $79.95 for up to 100,000 emails.

(8,000 messages) free
(24,000 messages) $9.95
(80,000 messages) $19.95
Long history of usage, published extension, affordable pricing for organizations sending tens of thousands of messages per month.
Pricing tiers will still cost if you have a slow month.

Simple Email Service (SES)

Amazon SES is Amazon Web Services' (AWS) bulk email offering. It is ideal for users of other AWS products, as it gives 62,000 free emails per month for messages sent from Amazon EC2 instances. You will need to either verify each sending address or the entire sending domain.

No CiviCRM extension is available, but you can follow instructions to configure it to have bounces arrive in a mailbox for CiviCRM's built-in bounce handler to pick up.

Messages are priced at 10¢ per 1,000 messages, except for the free tier from EC2 instances. Attachments are priced at 12¢ per GB sent (a 1 MB attachment sent to 1,000 recipients is a GB).

(8,000 messages) 80¢
(24,000 messages) $2.40
(80,000 messages) $8.00
Very affordable pricing, integration with other AWS products.
Interface can be confusing, extra charge for attachments.

SparkPost

One of the newer bulk SMTP providers is SparkPost, launched in September 2014. A service of Message Systems, a provider of very-large-scale email infrastructure, SparkPost offers similar features to other bulk SMTP providers.

Two CiviCRM extensions support SparkPost, and both are in active development. You will need to verify your domain in one of several ways, but it does not necessarily require SPF or DKIM.

(8,000 messages) $9.00
(24,000 messages) $9.00
(80,000 messages) $31.50
Free for many users, recommended by Mandrill, two extensions available.
Expensive if you have a list of 10,000 or more but email them no more than once a month.

Your Web Server

If you're running CiviCRM on a VPS or cloud server (as you really ought to), you can also just send mail directly from the server. You will absorb responsibility for being a good email citizen (as you should already be doing) and keeping your message transfer agent (MTA) software such as Postfix up-to-date, but it is a very realistic option for CiviMail users sending a modest amount of email. (Our rule of thumb at AGH Strategies is that self-management of email is appropriate if your average email run is 10,000 recipients or smaller.)

You will need to find appropriate instructions (or your CiviCRM partner can help you) for installing Postfix and Dovecot (or equivalents) on your Linux distribution, but once it's set up, your only maintenance should be regular upgrades and periodic review of logs and blacklists (or you can rely on monitoring services that your CiviCRM partner might offer). You will also want to be sure that your CiviMail settings limit each batch to a few hundred messages, run every 5-10 minutes.

(8,000 messages) free
(24,000 messages) free
(80,000 messages) free
Limited ongoing costs, no reliance on an additional vendor.
Requires expertise in setup, periodic ISP relations work.

Resources

Based on this research, I built a calculator for estimating your SMTP costs.  You should check with the vendor directly before making a final decision, and price isn't the only factor, but this may help you compare.

The following are several resource that may be valuable for you:

Comments

Just want to point out that if the only emails your server sends are CiviCRM emails, then if the provider offers SMTP relay then you don't even have to install an extension. For example Sparkpost (not advocating for them over others, just as an example, although I am leaning towards them) has this page for instructions:

https://support.sparkpost.com/customer/en/portal/articles/2030960-using-sparkpost-with-postfix

If your server does send out other emails then if you're handy with mail server config you could probably adjust the above to only relay for the emails that are coming from CiviCRM.

However in this case you should check for bounces using the "bounce processor" in CiviCRM. The main advantage of webhooks is that they avoid having to setup a mailbox for this. Another advantage of webhooks is for managing spam complaints.

It may sound silly, but someone might fill in a form on your website, do a typo in their gmail/yahoo email address, someone else receives it and clicks the "this is spam" button on their webmail. Another useful use-case is for managing bounces from contribution receipts (by default CiviCRM does not have a way to detect those boucnes).

Hi Andrew,

Great post.

This is a debate that affects a number of our clients so I thought I should add in our plans and add EU considerations for anyone reading.

re: Mailjet:

- Compucorp originally developed the Mailjet integration 2+ years ago (for Civi 4.4) and this has since been enhanced by Xavier. Although we still have a few clients using this, Mailjet since upgraded their API and in some cases we found the extension had some slightly odd behaviour. The extension was designed for API v1 and I think new accounts by default use API v3. We had some slightly odd behaviour with the extension with some accounts as we believe that Mailjet reduced support for the API v1 so I would suggest to test first and see how well it works.

@Xavier - can you confirm any recent behaviour for new accounts or whether you swapped in the new API library?

On the other hand Mailjet appear to be the only provider that is fully EU data protection compliant having adopted the new model clauses and sending the data out from EU servers (see here: https://uk.mailjet.com/blog/what-is-safe-harbor-and-how-will-it-affect-y...). If this is an issue for you then we would welcome a few clients coming together to fund further development and update of this extension for v4.7 and API v3 (if Xavier had not done already).

re: Sparkpost:

CiviDesk have kindly developed the Sparkpost integration. We have worked closely with them to fully QA the extension for Civi 4.6 and 4.7. We have it robustly sending out up to 30k emails in stress tests flawlessly (great work from Nicolas and the team!).

Sparkpost however are not 100% EU data protection compliant and only have the old Safe Harbor protections in place and in my last communications with them (frustratingly) indicated that the model clauses will only be put in effect for "Sparkpost Elite" customers. their https://www.sparkpost.com/products/sparkpost-elite.

re: Sendgrid:

We are waiting information from Send Grid regarding their status for EU model clauses but online they appear to still have the Safe Harbor provisions in their agreement.

Our current recommendation

We are currently recommending clients to select Sparkpost due to it's affordability and robust extension except in the case where they feel that the EU Safe Harbor rules are not sufficient for an external SMTP relay service storing contact email addresses. That said the main reason for this is that we have not extensively tested the other extensions but I would see no reason why they would not be perfectly viable solutions should we hear of more examples of success with them.

Update: 2017: We are now migrating most clients away from Sparkpost due to issues with sending rates / throttling and poor support. Whilst Sparkpost passed all our testing and some of our clients have not experienced any problems, several clients have had significant issues with mailings taking days to send out and extremely poor deliverability. In our view it seems in the rush to take on ex Mandrill clients Sparkpost failed to scale their services effectively and this has affected the quality of the service

As such we are now migrating most clients to Amazon SES. More details of how to configure can be found here if useful: https://www.compucorp.co.uk/node/1740. We will be updating this with more detailed instructions and postfix configurations for those who find it useful.

In terms of the EU data protection it is worth noting that Mailchimp/Mandrill had not fully complied with EU Model Clauses either in their standard terms of business and require you to set up a separate personal data processing agreement directly with them - see cluase 15 here: http://mailchimp.com/legal/privacy/ so clients will be no worse off then the previous position.  

Best

Jamie (www.compucorp.co.uk)

I have been using Mailgun. We send 300,000-ish emails per month. I update the Mailgun webhook extension and currently use it on 4.7. https://github.com/blackbricksoftware/uk.teamsinger.civicrm.mailgun

We currently use Amazon SES (SMTP) to send out emails from CiviCRM from multiple digitally signed & verified domains.

We also use Amazon SNS to collect all bounces/complaints and send them all to one email address to be processed by CiviCRM

We only needed to make a very minor change to CiviCRM's mail processing to read the SNS formatted VERP bounce backs.

This combination is very cheap (25$ per month to send ~180'000 emails) and really simple to maintain once setup.  Anyone on the system can send out emails and receive replies using any of the verified domains but all bounces/unsubscribe can be handled in one mailbox.

Just want to emphasize that the Sendgrid CiviCRM extension is not compatible with WordPress, although it is listed as CMS independent.  https://civicrm.org/extensions/sendgrid-event-notification-processor

But Andrew provides a pull request for a fork that is compatible with WordPress here:  https://github.com/imba-us/com.imba.sendgrid/pull/1