A customer places an order on your WooCommerce store, pays, and… hears nothing. No order confirmation. No receipt. Meanwhile you never get the “New Order” email either, so you only find out you made a sale when you happen to check the dashboard. If that sounds familiar, you are not alone — missing WooCommerce emails is one of the most common and most damaging problems a store can have.

It is damaging because silence looks like a scam. Customers who do not get a receipt open a dispute, request a refund, or simply never come back. The frustrating part is that WooCommerce is almost never the real culprit — the problem is how WordPress sends mail. In this guide I will explain exactly why it happens and walk you through the fix that reliably works: sending your store’s email through a proper SMTP service.
💡 Quick Answer: Why Your WooCommerce Emails Fail
- Root cause: By default WordPress sends email with PHP’s
mail()function. Most hosts either block it or send it without authentication, so inboxes flag it as spam or reject it outright. - The fix: Install an SMTP plugin and route your email through an authenticated mail service (like Brevo, SendLayer, Gmail/Google Workspace, or Amazon SES).
- Why it works: Authenticated SMTP proves your emails are legitimate, so they land in the inbox instead of being silently dropped.
First, Confirm It Is Really an Email Problem
Before changing anything, rule out two quick things so you fix the right issue:
- Check the spam folder. Place a test order with your own email and look in Spam or Junk. If the email is there, this is a deliverability problem — SMTP is exactly the fix.
- Confirm the email is enabled. Go to WooCommerce → Settings → Emails. Each email type (New Order, Processing Order, Completed Order, and so on) has its own on/off toggle and recipient field. Make sure the ones you expect are enabled and that the “New Order” admin recipient is an address you actually check.
If the emails are enabled and simply never arrive (not even in spam), you have a sending problem. That is what the rest of this guide fixes.
Why the Default WordPress Mail Fails So Often
Out of the box, WordPress hands your emails to PHP’s built-in mail() function. That was fine fifteen years ago. Today it fails for a few predictable reasons:
- No authentication. Mail sent this way has nothing proving it is really from your domain. Gmail, Outlook, and Yahoo increasingly reject unauthenticated mail.
- Mismatched “From” address. By default WordPress sends from
wordpress@yourdomain.com, an address that often does not exist and fails SPF checks. - Hosts that block
mail(). Many shared and managed hosts disable it to stop spam abuse, so your email vanishes with no error shown to the customer.
SMTP solves all three at once. Instead of tossing the email out of the server and hoping, WordPress logs in to a real mail provider with a username and key, and that provider — whose whole job is deliverability — sends it properly on your behalf.
Step 1: Install an SMTP Plugin
You need a plugin to connect WordPress to your mail provider. WP Mail SMTP is the most widely used and beginner-friendly, and there are solid free alternatives like FluentSMTP. To install one:
- In your dashboard go to Plugins → Add New.
- Search for your chosen SMTP plugin, click Install Now, then Activate.
- Open its setup wizard, which will ask you to pick a mailer — that is your mail provider from Step 2.
Step 2: Choose and Connect a Mail Provider
The SMTP plugin is just the bridge; the actual sending is done by a mail service. For a typical small store, any of these work well and have generous free tiers:
- Brevo (formerly Sendinblue) — around 300 emails/day free, easy for beginners.
- SendLayer — built for WordPress, quick to verify.
- Google Workspace / Gmail — good if you already send from a Google-hosted business address.
- Amazon SES — extremely cheap at higher volumes, but more technical to set up.
Whichever you pick, the setup follows the same shape: create an account, add your domain, and copy the API key (or SMTP username and password) the provider gives you into your SMTP plugin’s settings. The plugin’s wizard walks you through the exact fields.
Step 3: Authenticate Your Domain (SPF and DKIM)
This is the step people skip — and it is the one that actually keeps you out of spam long term. Your mail provider will give you a few DNS records to add, typically an SPF record and a DKIM record. These are what tell Gmail and Outlook, “yes, this service is allowed to send email for my domain.”
- Copy the DNS records your mail provider shows during domain verification.
- Log in wherever your domain’s DNS is managed (your registrar or host) and add them exactly as given — usually as TXT and CNAME records.
- Back in the provider dashboard, click Verify. DNS can take anywhere from a few minutes to a few hours to propagate.
Set a consistent “From” name and “From” email in your SMTP plugin too — use a real address on your domain, such as orders@yourstore.com, not the default wordpress@ address.
Step 4: Send a Test Email and a Test Order
Every good SMTP plugin includes an Email Test tab. Send a test to an address you control (ideally a Gmail account, since Gmail is strict) and confirm it lands in the inbox, not spam. Then do the real-world test:
- Place a genuine test order in your store using a personal email address.
- Confirm the customer confirmation email arrives.
- Confirm the “New Order” admin email reaches your team address.
- Move the order to Completed and check the completed-order email fires too.
Turn on your SMTP plugin’s email logging if it offers it. A log means that next time someone claims they never got a receipt, you can see exactly whether it was sent, when, and whether it was accepted — instead of guessing.
Still Not Working? Quick Troubleshooting
- Test email works, order email does not: the problem is in WooCommerce, not SMTP. Recheck WooCommerce → Settings → Emails for a disabled email or a wrong recipient address.
- Emails land in spam even after SMTP: your SPF/DKIM records are missing or not verified. Recheck Step 3 and confirm the provider shows your domain as “authenticated.”
- Authentication or connection errors: the API key or SMTP password is wrong or was regenerated. Paste a fresh one from the provider.
- Everything looks right but nothing sends: a caching or security plugin, or a stalled background process, can interfere. If a broken update left things unstable, see our guide on fixing WordPress stuck in maintenance mode.
Why This Matters More Than It Looks
Order emails are not a nicety — they are part of the sale. A confirmation reassures the customer that their money reached a real business. Shipping and completed emails cut down “where is my order?” support tickets. And reliable admin notifications mean you never miss a sale sitting unfulfilled. Fixing deliverability once, properly, quietly removes a whole category of refunds, disputes, and lost trust.
If you would rather have someone set up SMTP, domain authentication, and email logging for you and confirm every WooCommerce email actually delivers, that is exactly the kind of thing our WordPress care plans handle. You can also book a free consultation to talk through your store’s setup first.
