Why Most WordPress Email Plugins Suck


If you’ve been reading our blog for a while, you might have seen our post comparing Amazon SES, Mailgun, and SendGrid.

In that post, we compared the different transactional email providers but largely left one major component out of the equation: their WordPress plugins. In this week’s post, we’ll be installing and comparing some of the different email plugins available, and thinking about what makes an ideal email plugin.

What You Need in a WordPress Email Plugin

First, let’s evaluate what might be necessary for a plugin that sends out your site emails. There’s the obvious, like sending out emails quickly and reliably. And then there’s the rest, the stuff that you may not have even realized you needed.

For example – when an email fails, what happens? Does it get logged to your site error log? Do you even have error logging enabled? And if you do, when was the last time you remembered to check it?

What if you do notice that an email failed – what do you do then? Do you have a way to easily resend that email?

A lot of email plugins do very little to let you know when an email has failed. This could be out of convenience – that way, you don’t question if the plugin is as reliable as you thought.

It’s also important to be able to review the emails that are being sent out, and see if they are being opened and/or clicked.

With that out of the way, let’s dig into some of the most popular email plugins and see how they stack up.

The Mailgun Plugin

Mailgun is a great service for sending out transactional email. The amount of emails they offer for free is truly mind-boggling and almost makes you wonder how they can turn around a profit. (Though SES is way cheaper once you get to sending levels like 200,000 per month)

But the official Mailgun plugin falls a bit short in some of the areas we touched on above.

In my testing, there is no way to tell if an email has failed to send from the Mailgun WordPress plugin when using the API method of sending email. This is worrying as sending via the API is the default, and probably the most popular method as well. The SMTP method for sending email does include a way to debug failing emails by adding a constant to your wp-config.php file and checking your error log, but that counts on you knowing that emails are failing in the first place.

Regardless of the email sending method you use (API or SMTP), no emails are logged to the database. You can view any emails that are sent by logging into the Mailgun app, but this can still leave the potential for many things to go wrong.

For example, if there is a networking issue that prevents your site from making API calls to Mailgun, you won’t know that emails aren’t sending until you start getting complaints from your users. Since there is no logging and no easy way to know if certain emails have failed, there isn’t a way to resend emails in the Mailgun plugin.

Their app does offer limited log retention and a resend option, but the amount of time that you have to resend an email depends on the exact plan you have. If you’re on the pay-as-you-go plan, logs are only stored for 5 days, while upgrading to a higher tiered plan gets you up to 30 days of log retention.

The SendGrid Plugin

Like the Mailgun plugin, the official SendGrid plugin doesn’t log emails, or alert when there is an email failure. This means that there could be an API issue or even just an internet routing issue, and you won’t know that your emails didn’t get sent out.

However, unlike Mailgun, the SendGrid plugin does include a handy statistics page that you can check to see the status of emails that made it to the SendGrid API:

SendGrid statistics page

This at least makes it possible to get an idea of what’s going on with the emails your site is sending out without having to login to the SendGrid app, although it’s worth noting that if an email fails to reach the SendGrid API it won’t be logged.

It also includes a section for checking the open/click rates of the emails you send out:

SendGrid engagement graph

So while I still wish there was some better error reporting, the SendGrid plugin seems to come out on top when compared to Mailgun.

The SES Plugin

Amazon doesn’t have an official WordPress plugin, so we made WP Offload SES in an effort to make sending email via Amazon SES as painless as possible.

Unlike Mailgun and Sendgrid, when an email fails to send, you’ll get this handy notice in the WordPress admin:

WP Offload SES - failed email notice

We also detect when an email is sent out from your site using an unverified sender – a feature that is very helpful when you may have several other plugins that are configured to send email through different email addresses. A common case where this happens are contact forms that send email out as the user submitting the form by default.

WP Offload SES - unverified sender notice

WP Offload SES logs every email that is sent out, regardless if it succeeds or fails. If an email fails due to network issues or the SES API being down, you’ll be able to see that and take action:

WP Offload SES - activity tab

On top of having more proactive error reporting, WP Offload SES also lets you easily check up on open and click tracking statistics. There is a handy Reports tab that lets you view open/click tracking data for all email subjects being sent out:

Offload SES reports tab

You can also view the open/click tracking data for an individual email by clicking that email in the Activity tab:

Open/click tracking info in email details


Most email plugins suck because they simply don’t do enough to alert you of potential issues, and don’t give you a way to rectify them. We’re tackling this issue head on with WP Offload SES by trying to make sure that every scenario and edge-case is covered.

There’s obviously a lot to consider when setting up email for your WordPress site. A lot of thought has been put into which email service is the best, cheapest, and most reliable. But the truth is that they’re all good and will work just fine. How the service integrates with WordPress, and the plugins that are used to do so is arguably the most important thing to consider.

Have you used any of the plugins mentioned above? Or do you know of another plugin that seems to be doing things right? Let us know in the comments.

About the Author

Matt Shaw

Matt is a WordPress plugin developer located near Philadelphia, PA. He loves to create awesome new tools with PHP, Javascript, and whatever else he happens to get his hands on.