WooCommerce SMTP Plugins Compared for Order Emails

WooCommerce SMTP Plugins Compared for Order Emails

Every comparison of WooCommerce SMTP plugins gets the decision backwards. The plugin is the cheap half — two of the three below are free and one of those is free permanently — and the thing that actually decides whether a customer sees their receipt is the sending service behind it and whether your domain’s DNS records say you are allowed to send.

So this covers both halves: the criteria I judged each plugin on, a table of versions, install counts and prices I checked on 24 September 2026, a second table of what the sending services cost at real volume, and the weakness of every option including the free ones. Tested against WooCommerce 11.1.2 on WordPress 7.1.2.

An SMTP plugin does not send your email

This is worth being blunt about, because it reframes the whole purchase. By default WordPress calls wp_mail(), which hands the message to PHP’s mail() function, which hands it to whatever mail transfer agent your host runs. That path has no authentication tied to your domain, so a receiving server has nothing to check the message against and frequently files it under spam or drops it.

An SMTP plugin replaces that last leg. It intercepts wp_mail() and hands the message to a service you have an account with — Amazon SES, Postmark, Brevo, SendLayer, your Google Workspace mailbox — over an authenticated connection. The plugin is a router. The service is the postal system. If you pick a great plugin and point it at a sending domain with no DKIM record, your receipts still land in spam.

The test that fools everyone. wp_mail() returning true means the request was accepted without throwing an error. It does not mean the message was delivered, and it does not mean it reached an inbox rather than a spam folder. A green “test email sent successfully” notice proves the handoff worked and nothing beyond that.

The five criteria I judged each WooCommerce SMTP plugin on

Stated up front so you can reweight them for a store shaped differently from the one I assumed: a US store sending somewhere between 500 and 10,000 transactional emails a month, running WooCommerce on shared or mid-tier managed hosting, with one person who will be the one answering “I never got my order confirmation” tickets.

  1. Email logging in the free version. When a customer says the receipt never arrived, a log tells you in ten seconds whether WooCommerce tried, whether the service accepted it, and what bounce came back. Without one you are guessing. This is the single feature that changes how support tickets go, and whether it costs money varies wildly here.
  2. Failover when the service is down. Order confirmations that fail during a two-hour provider outage are gone; WooCommerce does not retry them. A plugin that can fall back to a second connection turns an outage into a slower delivery instead of a missing one.
  3. Which services it speaks natively. Generic SMTP works with anything, but an API connection is faster, survives blocked outbound ports on locked-down hosts, and reports bounces properly. Check that your preferred service is in the list before you commit to the plugin.
  4. Maintenance signals. The version it is tested against, the last update date, and whether the negative reviews are about bugs or about support. This plugin sits in the path of every password reset and every receipt, so a stale one is not a cosmetic problem.
  5. What the price actually is in year two. Introductory pricing that renews at full price is normal in this market and is not a scandal, but you should do the arithmetic on the renewal figure rather than the sticker.

WooCommerce SMTP plugins compared

Versions, install counts and ratings come from WordPress.org, prices from each vendor’s own pricing page, all checked on 24 September 2026. Note the “tested up to” column carefully — WordPress 7.1.2 is current, and only one of these three is tested against it.

PluginFree versionPaid price (24 Sep 2026)Logging in the free tierWhere it falls short
FluentSMTPYes — v2.4.0, 600,000+ installs, 4.8/5 from 405 reviews, tested to WP 7.1.2, PHP 7.4+, updated two weeks agoNone. No Pro version existsYes — full log, plus connection health checks and failure alerts to Slack, Discord, Telegram or PushoverNo commercial support contract to buy, so when something breaks you are in a support forum rather than a ticket queue. Logs live in your own database and grow until you set a retention period
Post SMTPYes — v4.0.1, 300,000+ installs, 4.7/5 from 525 reviews, tested to WP 7.0.6, PHP 7.1+, updated four weeks agoBasic $59.99/yr, Professional $79.99/yr, Business $99.99/yr — each for one site, with 10/100/1000-site tiers priced separately. 14-day refundYes — log with filtering and one-click resend, plus SPF/DKIM/DMARC checks and fallback routingTested only to WordPress 7.0.6, two releases behind. The feature split between the three paid tiers takes real reading, and the lowest one is more expensive than most stores expect for a first tier
WP Mail SMTPYes — v4.9.0, 4 million+ installs, 4.8/5 from 5,200 reviews, tested to WP 7.0.6, PHP 7.4+, last updated three months agoPro $49/yr (list $99), Elite $99/yr (list $149) — both one site; Developer $199/yr for 20 sites, Agency $399/yr for 100. 14-day refundNo. Logging, backup connections and conditional routing are Pro featuresThe most installed and the least current: tested to 7.0.6, no update in three months. All shown prices are introductory and renewals are at full price, so Pro is a $49 first year and a $99 renewal

That is not a ranking. The install counts in particular are a poor guide here — WP Mail SMTP has roughly seven times FluentSMTP’s user base and is the one behind on WordPress compatibility, because four million installs mostly measure how long a plugin has been recommended, not how well it is maintained this quarter.

What the sending services cost at real volume

This is the half of the bill people forget to price. All figures checked on 24 September 2026, with the monthly cost worked out for a store sending 10,000 transactional emails a month — roughly a store doing 1,000 orders, since each order generates several messages.

ServiceFree tierEntry paid planCost at 10,000/monthCaveat
Amazon SESNew AWS accounts get up to $200 in Free Tier credits for six monthsÀ la carte: $0.10 per 1,000 emails, no monthly minimumAbout $1.00, plus $0.12 per GB of attachment dataCheapest by an order of magnitude and the most work. New accounts start in a sandbox you must apply out of, and a dedicated IP is $24.95/month standard or $15/month managed if you need one
SendLayerTrial of 200 emailsStarter $5/month billed annually, 1,000 emails$25/month on the Growth plan (10,000 emails), billed annuallyTiers are hard volume caps rather than per-email overage, so a seasonal spike needs a plan change rather than a slightly larger bill. 14-day money-back guarantee
Postmark100 emails/month, permanent, no expiryBasic $15/month, 10,000 emails$15/month, then $1.80 per additional 1,000Priced for transactional mail specifically and strict about what it will carry — send marketing campaigns through it and you will hear about it. Overage is per-email, so spikes cost money rather than failing
Brevo300 emails/day after account approvalPriced by monthly volume; transactional sending is included on every tierDepends on the tier you land in — check the current page rather than trusting any figure in a blog postThe free tier is a daily cap, not a monthly pool: 300/day is generous for a small store and useless on the one day a promotion doubles your orders

Read those two tables together rather than separately. A store on FluentSMTP and Amazon SES pays about a dollar a month and spends an afternoon in the AWS console. The same store on WP Mail SMTP Pro and SendLayer Growth pays $99 a year at renewal plus $300 a year and has a support contact for both halves. Both are defensible; they are answers to different questions about whose time is expensive.

Which WooCommerce emails you are actually protecting

Before you price anything, know what breaks when email breaks. WooCommerce sends two groups of messages and they have very different consequences.

  • To the customer: order on-hold, processing, completed, refunded, the customer invoice or payment-request email, order notes, plus account creation and password reset. When these fail you get support tickets, chargebacks from people who think the order did not go through, and no way to send a payment link.
  • To you: new order, cancelled order, failed order. These failing is quieter and worse — you do not find out orders are arriving until someone asks where their parcel is, and a silent failed-order notification hides a payment gateway problem for days.
  • WordPress core mail: password resets and new user notifications go through the same wp_mail() path, so an SMTP problem locks people out of their accounts as well as hiding their receipts.

Send yourself one of each after any change. Place a real test order with a $0.50 product, move it through processing and completed in the admin, and confirm all four messages — two to the customer address, two to yours — land in an inbox rather than a spam folder. If a gateway problem is what is producing failed-order emails in the first place, WooCommerce payment gateway fees explained for US stores covers which providers charge you for that failed attempt.

Check SPF, DKIM and DMARC before blaming the plugin

If mail is being accepted but landing in spam, the plugin is almost never the problem and swapping it will not help. Three DNS records decide whether a receiving server believes your store is allowed to send as your domain, and every service above documents the exact values to publish. Check what is actually live from a terminal — the DNS panel showing a record and the internet seeing it are different claims.

# Replace example.com with your sending domain.
# SPF — one record only. Two SPF records is a hard failure, not a warning.
dig +short TXT example.com | grep -i "v=spf1"

# DKIM — the selector is given to you by the sending service.
# Postmark uses a selector like pm._domainkey; SES publishes three CNAMEs instead.
dig +short TXT pm._domainkey.example.com

# DMARC — start at p=none so you get reports without bouncing real mail.
dig +short TXT _dmarc.example.com

The two failures I see most often on WooCommerce stores: a second SPF record added when the sending service was set up, which invalidates both; and a From address on a domain that is not the one authenticated — sending as [email protected] through a service that only holds DKIM keys for a subdomain. Set the From address to a real mailbox on the authenticated domain, not a no-reply address at a domain you cannot receive on, because bounce handling needs somewhere to land.

When you need to see what WordPress itself thinks happened, drop this in as a must-use plugin at wp-content/mu-plugins/store-mail-debug.php. It logs every send attempt and every failure to your PHP error log without touching a theme file.

<?php
// wp-content/mu-plugins/store-mail-debug.php
// Requires WP_DEBUG_LOG enabled. Remove once you have your answer.

add_filter( 'wp_mail', function ( array $args ) {
    $to = is_array( $args['to'] ) ? implode( ',', $args['to'] ) : $args['to'];
    error_log( sprintf( '[mail] attempt to=%s subject=%s', $to, $args['subject'] ) );
    return $args;
} );

add_action( 'wp_mail_failed', function ( WP_Error $error ) {
    error_log( sprintf(
        '[mail] FAILED %s | %s',
        $error->get_error_message(),
        wp_json_encode( $error->get_error_data() )
    ) );
} );

Three outcomes, three different problems. No [mail] attempt line at all means WooCommerce never tried — check that the email is enabled under WooCommerce > Settings > Emails and that the order status actually changed. An attempt with no failure means the service accepted it and the problem is downstream, in DNS or in the recipient’s spam filter. A FAILED line usually names the cause outright: bad credentials, a blocked port, a rejected sender. If you are not sure how to read the log safely on a live store, enable WordPress debugging and read error logs safely covers doing it without exposing anything publicly.

For the wider diagnostic path when the failure is not SMTP at all — loopback requests, blocked outbound connections, a host that disallows mail entirely — work through the WordPress emails not sending troubleshooting guide first. Buying an SMTP service does not fix a host that blocks outbound connections on port 587.

Keep marketing mail off your order-email reputation

Here is a decision that costs nothing now and is expensive to unpick later. Transactional mail and marketing mail should not share a sending domain. Receipts get opened, almost never marked as spam, and build a good reputation. Campaigns get ignored, occasionally get marked as spam, and drag that reputation down with them. Share one domain and a mediocre newsletter starts sending your order confirmations to spam.

The fix is a subdomain — order mail from mail.yourstore.com, campaigns from news.yourstore.com, each with its own DKIM keys — and ideally separate accounts at separate services. Postmark enforces this separation as policy, which is a reasonable argument for using it even though it is not the cheapest row in the table.

For the campaign side you need a list and automation tool rather than an SMTP router. The established free options are MailPoet and FluentCRM, and either is the safe recommendation for a store that depends on email marketing. My own Send Emails covers newsletters, segmentation, a workflow builder and WooCommerce triggers from inside the dashboard. Disclosure: I build and maintain that plugin. Held to the same criteria I used above it is the weakest option on this page by a distance: v2.6.1, fewer than 50 active installs and a single review, against MailPoet’s hundreds of thousands. It is tested against WordPress 7.1 and actively developed, which is the honest case for it; the install base is the honest case against it. If email marketing is how your store makes money, install MailPoet.

What to pick at your store’s size

  • Under about 1,000 emails a month, and you want this done today. FluentSMTP with Brevo’s free tier or Postmark’s free 100. Costs nothing, gives you a log, and is the only plugin here tested against WordPress 7.1.2. Revisit when volume outgrows the free tier.
  • A real store, 1,000–10,000 emails a month, one person maintaining it. FluentSMTP plus Postmark at $15/month. Per-email overage means a busy week costs slightly more rather than failing, and Postmark’s refusal to carry marketing mail keeps your receipts on a clean reputation.
  • You are comfortable in AWS. Amazon SES at roughly $1 per 10,000 emails is not a rounding error at volume, it is a different category of price. Budget an afternoon for the sandbox exit and the DNS records, and read the attachment pricing if you send PDF invoices.
  • You want one vendor to call. WP Mail SMTP Pro with SendLayer, both from the same company, one support queue for the whole path. Price it at the renewal figure of $99/year plus the SendLayer plan, not the $49 first year, and check whether the 7.0.6 compatibility gap has closed before you buy.
  • Emails already failing intermittently. Do not buy anything yet. Add the mu-plugin above, check your three DNS records, and find out whether the failure is the send, the authentication, or the recipient’s filter. The answer decides which of these rows is even relevant.

Frequently asked questions

Do I need an SMTP plugin for WooCommerce?

If you take orders, yes. WordPress’s default path hands mail to your host’s PHP mail() function with no authentication tied to your domain, which is exactly the pattern spam filters are built to catch. A store losing order confirmations to spam folders is losing money quietly. The plugin itself can be free, so the only real cost is the sending service.

Is FluentSMTP really free with no paid version?

Yes — there is no Pro tier to upgrade to, and features that are paid elsewhere, including email logging and fallback connections, are in the free plugin. The trade-off is support: there is no ticket queue to buy, so you are relying on the WordPress.org forum and the plugin’s documentation. For a store where someone technical is already involved, that is usually an acceptable trade.

Why do my WooCommerce order emails go to spam?

Almost always domain authentication rather than content. Check for exactly one SPF record, a DKIM record at the selector your sending service specified, and a DMARC record starting at p=none. The second most common cause is a From address on a domain the sending service is not authenticated for. Neither is fixed by changing SMTP plugins.

Can I use Gmail or Google Workspace to send WooCommerce emails?

You can — all three plugins support it over OAuth — and it is fine for a low-volume store. Two limits to know about: Workspace enforces a daily sending cap intended for human correspondence rather than automated mail, and you are mixing store mail with your staff’s mailbox reputation. Once orders are steady, move to a service built for transactional sending.

Does an SMTP plugin slow down checkout?

It can, and this is the argument for an API connection over generic SMTP. WooCommerce sends the order email during the request that completes the order, so a slow SMTP handshake is time the customer spends watching a spinner on the thank-you page. API connections are typically faster, and a service that is unreachable will hang the request until it times out — which is a good reason to configure a fallback connection.

Can I run two SMTP plugins at once?

No. They all reconfigure the same PHPMailer instance, so the result depends on plugin load order and the symptom is mail that works intermittently or silently uses the wrong credentials. Deactivate and delete the one you are replacing rather than leaving it installed, and if you are already seeing odd behaviour, the method in the plugin conflict guide will find it faster than guessing.

The short version

Install FluentSMTP — it is free, it logs, and it is the only one of the three currently tested against WordPress 7.1.2. Spend your money on the sending service instead, where $15 a month at Postmark or about $1 at Amazon SES buys the delivery you were actually trying to purchase. Publish your SPF, DKIM and DMARC records and verify them with dig rather than trusting a settings screen. Then place a real test order and watch all four emails arrive, because that is the only test that proves anything.

One more thing worth doing on the same afternoon: confirm your page cache is not caching logged-in or checkout responses, since a store that mishandles those will produce email symptoms that have nothing to do with email. WooCommerce caching plugins: what breaks and what works covers which ones get that right by default.

Leave a Reply to This Post