← Back to Blog
Woocommerce Troubleshooting

Why Won't WooCommerce Send Emails? Fix Guide

September 26, 2026 16 views Amanur Rahman
Order confirmations, admin alerts, or password resets not arriving? Here's how to find the real cause — SMTP, hosting, or a plugin conflict — and fix WooCommerce email delivery for good.

A customer places an order, the payment goes through, and then — nothing. No confirmation email lands in their inbox, no new-order alert shows up in yours. WooCommerce's biggest source of "silent" support tickets isn't a broken checkout — it's email delivery quietly failing in the background while every other part of the store works fine.

The short answer: WooCommerce email problems are almost never a WooCommerce bug. They're a server, hosting, or configuration issue that WooCommerce simply has no control over. This guide walks through exactly why it happens and how to fix it, in the order that actually resolves it fastest.

Why WooCommerce Emails Fail in the First Place

WooCommerce doesn't send emails itself — it hands them off to WordPress's built-in wp_mail() function, which by default uses PHP's mail() function. That function relies entirely on your hosting server being configured to send mail, and on most shared and managed hosting environments today, it either isn't configured at all or is heavily restricted to fight spam.

That means the moment WooCommerce tries to send an order confirmation, the request can fail silently — no error on screen, no warning in the admin, the order still processes normally. The customer just never gets the email, and neither do you.

The most common root causes, in order of how often we see them:

  • No SMTP configured — the store is relying on the server's default mail function, which many hosts throttle or block outright.
  • Hosting-level restrictions — some hosts disable mail() completely or cap outgoing email volume per hour.
  • Email notification settings turned off — a specific email type got disabled in WooCommerce settings, sometimes by accident during a plugin update.
  • A caching or security plugin conflict — rare, but caching plugins can occasionally interfere with transactional hooks.
  • Emails are sending but landing in spam — a deliverability problem rather than a sending problem.
Desk setup representing WordPress admin settings for email configuration

Quick Checks Before Anything Else

Before touching any settings, confirm the problem is real and not a false alarm:

  1. Check the customer's spam/junk folder first — this resolves a surprising number of "emails aren't sending" reports.
  2. Go to WooCommerce → Settings → Emails and confirm the relevant email type (e.g., "New order," "Processing order") is toggled Enabled.
  3. Place a test order yourself using a real email address you control, and watch both the customer-facing and admin-facing emails.
  4. Check whether ANY WordPress email works — not just WooCommerce ones. Try the "Lost your password?" email on the login page. If that also fails, the problem is server-wide, not WooCommerce-specific.

If the password-reset email also never arrives, you can skip straight to the SMTP section below — that confirms the issue is at the WordPress/server level, not inside WooCommerce.

PHP mail() vs SMTP: The Real Root Cause

This is the single most important concept in this guide. Here's the difference:

MethodHow it worksReliability
PHP mail() (default)Server sends email directly with no authenticationFrequently blocked, filtered, or silently dropped
SMTP (via a dedicated provider)Emails are authenticated and routed through a real mail service (Gmail, SendGrid, Brevo, Amazon SES, etc.)Reliable, trackable, rarely marked as spam

Because PHP mail() sends with no authentication (no SPF, no DKIM signature tied to a real sending domain), most modern receiving mail servers — Gmail and Outlook especially — either reject it outright or drop it straight into spam. Switching to SMTP is not an optional tweak; on most hosting setups, it's the actual fix.

Setting Up SMTP the Right Way

The fastest, most reliable fix is installing a dedicated SMTP plugin and connecting it to a real mail-sending service. Here's the process:

Step 1: Choose an SMTP plugin

WP Mail SMTP and FluentSMTP are the two most widely used, both with solid free tiers. Either works fine for a typical store.

Step 2: Choose a sending provider

  • Gmail/Google Workspace SMTP — free, good for small stores, has daily sending limits (roughly 500/day on a standard Gmail account).
  • Brevo (formerly Sendinblue) — generous free tier (around 300 emails/day), purpose-built for transactional email.
  • Amazon SES — extremely cheap at scale, more technical to set up.
  • SendGrid — reliable, well-documented, free tier available for smaller volumes.

For most small-to-medium stores, Brevo or a transactional-focused provider is the better long-term choice over personal Gmail, since Gmail's sending limits and anti-automation rules aren't designed for storefront traffic.

Step 3: Connect and authenticate

Inside the SMTP plugin, enter the provider's SMTP credentials (host, port, username, API key or password). Most providers also want you to add an SPF and DKIM DNS record for your domain — this is what actually improves deliverability, not just the SMTP connection itself.

Step 4: Send a test email

Every SMTP plugin has a built-in test-email tool. Use it, confirm delivery, then place one more real test order to confirm WooCommerce emails specifically are now going through.

Fixing Specific Email Types

If SMTP is already working but one specific email type still isn't sending, the fix is more targeted:

New order emails not reaching the store owner

Go to WooCommerce → Settings → Emails → New order and check the "Recipient(s)" field — it's easy for this to get cleared or misconfigured after a settings reset. Multiple emails can be added here, comma-separated.

Customer emails not sending, but admin emails work

Check for a caching plugin that might be caching the checkout/thank-you page itself, which can occasionally interfere with the order-completion hook that triggers the customer email. Exclude the cart, checkout, and my-account pages from caching.

Emails delayed by several minutes or hours

This usually points to WP-Cron issues rather than email itself — WooCommerce relies on WordPress's cron system for some scheduled emails (like the "processing" status change). On low-traffic stores, WP-Cron can lag. A real server cron job pointed at wp-cron.php resolves this.

Ruling Out Plugin and Theme Conflicts

If SMTP is properly configured and test emails send fine but WooCommerce-specific emails still don't, a conflict is worth checking:

  1. Deactivate all plugins except WooCommerce and your SMTP plugin, then place a test order.
  2. If emails now work, reactivate plugins one at a time, testing after each, to isolate the conflicting one.
  3. Common culprits: aggressive security plugins that strip email headers, and some page builders that override the checkout template in ways that skip standard hooks.

Emails Are Sending But Landing in Spam

If your SMTP logs (most SMTP plugins keep a send log) show the email left the server successfully, the issue has shifted from "sending" to "deliverability." Fix this by:

  • Adding SPF and DKIM DNS records for your sending domain (your SMTP provider gives you the exact values to add).
  • Using a "from" email address on your own domain (e.g., [email protected]) rather than a generic Gmail address — mismatched sending domains are a major spam trigger.
  • Adding a DMARC record once SPF/DKIM are confirmed working, for stores sending higher email volume.
  • Avoiding spam-trigger words and excessive exclamation marks in email subject lines, which some filters still penalize.

Still not sending after trying all of this? Email delivery issues can hide in server-level settings that aren't visible from the WordPress dashboard. If you'd rather have this diagnosed and fixed directly, hire a WooCommerce developer who can check server logs, SMTP authentication, and DNS records in one pass.

Frequently Asked Questions

Why do WooCommerce emails work sometimes but not always?

Intermittent delivery almost always points to PHP mail() being used instead of SMTP. Without authentication, some receiving servers accept the email and others silently reject it, which looks random but is actually about which mail servers apply stricter filtering.

Do I need a paid plugin to fix WooCommerce email issues?

No. Free SMTP plugins like WP Mail SMTP or FluentSMTP, paired with a free-tier provider like Brevo, are enough for most small and mid-sized stores.

How do I know if the problem is WooCommerce or my hosting?

Test the WordPress password-reset email on the login page. If that also fails to arrive, the issue is server-wide and not specific to WooCommerce.

Can a security plugin block WooCommerce emails?

It's uncommon but possible — some aggressive firewall or hardening plugins strip email headers or block outgoing connections on certain ports. Temporarily deactivating it during testing rules this out quickly.

Will switching to SMTP fix emails landing in spam?

It significantly improves the odds, but full deliverability also depends on adding SPF and DKIM DNS records and sending from a proper domain email address rather than a generic one.

Should I use Gmail SMTP for my store's transactional emails?

It works for very low order volumes, but Gmail applies daily sending caps and isn't built for storefront automation. A transactional email provider like Brevo or Amazon SES scales better as order volume grows.

Why did my emails stop working after a plugin update?

Some page builder or checkout-customization plugins occasionally override the default WooCommerce checkout template in a way that skips the hook responsible for triggering the order-confirmation email. Reverting the specific plugin update or contacting its support team usually resolves it.

Tags: WooCommerce Email Delivery SMTP WordPress Troubleshooting Order Notifications
Explore more: Services · Hire a WooCommerce Developer · Portfolio · Contact

Need Help with Your WordPress Project?

Let's discuss how I can help you build something amazing!

Get in Touch →
← Back to Blog