WooCommerceEmail DeliveryUpdated for 2026

WooCommerce Order Emails Not Sending

IN
Reviewed by the Instant Nerds Team|Last updated: June 2026
Quick summary

Missing order emails cost you twice, in customer trust and in your own awareness of new sales. The first thing to settle is whether the email is failing to send or failing to arrive, because they have completely different fixes. WooCommerce sends mail through the basic WordPress mail function, which many hosts block and which produces unauthenticated mail that Gmail and Yahoo now filter or reject. So the durable fix for most stores is authenticated SMTP plus proper SPF, DKIM, and DMARC records. But before any of that, check the simple things: the email might be switched off, the admin recipient might be blank, or the order might be stuck in a status that is not supposed to email at all. This page separates every cause and gives the exact check for each.

Key facts at a glance

WooCommerce email delivery in 2026

Last updated

The first question to answer
Is the email failing to send, or failing to arrive? The WooCommerce transactional-emails log under Status then Logs tells you. Sent but not received is a deliverability problem. Nothing logged is a generation or host-block problem. The two have different fixes.
How WooCommerce sends mail
By default through the WordPress wp_mail function, which on most hosts uses the basic PHP mail facility. Many hosts restrict it, and mail it sends is usually unauthenticated, which is why default WooCommerce email is unreliable.
The durable fix
Authenticated SMTP through a dedicated sending service, which WooCommerce itself recommends, plus SPF, DKIM, and DMARC DNS records and a From address on your own domain, not a gmail.com or yahoo.com address.
Why Gmail and Yahoo filter you
Since February 1, 2024, Gmail and Yahoo require sender authentication, with stricter rules for anyone sending 5,000 or more messages a day. Enforcement tightened through late 2025 from spam-foldering toward outright rejection.
Admin alerts are separate
The New Order notification you receive has its own enable toggle and its own Recipients field, which does not default to the buyer and is easy to leave blank. Customer confirmations and admin alerts are configured independently but share the same delivery path.
The most common misdiagnosis
Blaming email when the real problem is order status. WooCommerce ties many emails to a status transition, so an order stuck in Pending Payment or On hold sends no confirmation by design. If the gateway never reports payment, the order never reaches Processing and the email correctly never fires. Always check the order status before touching the email system, because a healthy email setup will still look broken if nothing is triggering it.

Source: the WooCommerce official email troubleshooting documentation, the WooCommerce post on the February 2024 email sender requirements, the Google and Yahoo sender guidelines, and our hands-on store repairs. Get a quote in 60 seconds →

How WooCommerce sends email

WooCommerce does not run its own mail server. It hands every notification to the WordPress wp_mail function, the same core function every WordPress plugin uses, and on most hosting that ultimately calls the basic PHP mail facility built into the server. That design is fine for a low-stakes contact form. It is fragile for a store, because two things routinely go wrong. Hosts often restrict or disable the PHP mail facility to control spam, so the message never even leaves the server. And mail sent that way carries no authentication tying it to your domain, so modern inbox providers distrust it.

WooCommerce sends two broad groups of email. Customer notifications, like the Processing order confirmation and the Completed order email, go to the buyer. Admin notifications, like New Order, Cancelled order, and Failed order, go to the store address you set. Each notification has its own enable toggle in WooCommerce then Settings then Emails, and the admin ones have their own Recipients field. Critically, most of these emails are bound to an order status, so the email only fires when an order moves into the status that triggers it. An order that never leaves Pending Payment never sends a confirmation, and that is intended behavior, not a fault.

Send versus arrive: the split that decides your fix
  • Failing to send: nothing leaves the server. A host block on the mail function, a plugin override, a disabled email, or an order that never reached a sending status.
  • Failing to arrive: the mail leaves but is filtered or rejected. Missing authentication, a public-domain From address, or poor sender reputation.
  • How to tell: the transactional-emails log under WooCommerce then Status then Logs. Logged as sent but not received means arrive. Not logged means send.

Which symptom matches yours

Find the row that matches what you see. Each one points to a different root cause and a different fix path.

SymptomMost likely root cause
Orders come through fine but customers never get a confirmation emailThe Processing order email is disabled, the order is stuck in Pending Payment so no email is triggered, or the email sends but gets filtered. Check the email setting, the order status, then the transactional-emails log.
You, the store owner, stopped getting New Order notificationsThe admin New Order email is separate, with its own enable toggle and a Recipients field that is often blank or pointing at an old address. Fix the recipient, then the same delivery chain as customer mail.
Emails show as sent in the WooCommerce log but never arrive in the inboxA deliverability failure. The mail leaves but is filtered or rejected because it is unauthenticated. You need SMTP plus SPF, DKIM, and DMARC records, and a From address on your own domain.
No email leaves at all, and a mail log plugin shows nothing being generated or sentThe host is blocking the WordPress mail function, or a plugin is overriding it. Route mail through authenticated SMTP, and run a plugin conflict test if the function is being hijacked.
Emails land in the spam folder instead of the inbox, for Gmail or Yahoo recipients especiallyMissing or misaligned SPF, DKIM, and DMARC, or a public-domain From address like a gmail.com address. Gmail and Yahoo have enforced sender authentication since February 1, 2024.
Orders are stuck on Pending Payment or On hold and no confirmation goes outNot an email bug. The order never reached the status that triggers the email, usually because a payment gateway did not report the payment back. Fix the gateway flow and the emails fire on their own.
Emails were working and suddenly stopped after an update or host changeA plugin now overriding wp_mail, a host that tightened its mail policy, an update that reset an email setting, or a DNS change that broke SPF or DKIM. A mail log pins which layer changed.

The five root causes

Almost every missing-email case is one of these five. The first two are quick settings checks. The middle two are the durable deliverability fix. The last is a status problem in disguise.

1. The email is disabled or the admin recipient is wrong

The simplest cause, and worth ruling out before anything technical. In WooCommerce then Settings then Emails, each notification has an Enable this email notification checkbox that can get switched off during an update or while editing other settings. For the admin New Order, Cancelled order, and Failed order emails there is also a Recipients field that does not default to the buyer and is frequently left blank or set to an address nobody monitors. Confirm the specific email you are missing is enabled, and for admin notifications confirm the recipient address is correct and one you actually check.

2. The host is blocking or mishandling the mail function

WooCommerce sends through wp_mail, which leans on the server PHP mail facility, and many hosts restrict or disable that facility to limit spam abuse. When that happens, the email is generated by WooCommerce but never actually leaves the server, so no amount of email-setting tweaking helps. The tell is a mail-logging plugin that shows the message being created but not delivered, or a host support reply confirming the mail function is limited. The fix is not to fight the host facility but to bypass it, by routing WordPress mail through an authenticated SMTP service that sends independently of the restricted server function.

3. No authenticated SMTP, so mail is sent but distrusted

Even when mail leaves the server, default WordPress mail is usually unauthenticated. It has no verifiable link to your domain, so Gmail, Yahoo, and Outlook treat it as suspicious and route it to spam or drop it. Since February 1, 2024, Gmail and Yahoo formally require sender authentication, with extra requirements for senders of 5,000 or more messages a day, and enforcement tightened through late 2025 from soft spam-foldering toward outright rejection. The fix WooCommerce itself recommends is to send through a dedicated SMTP provider. An SMTP setup logs in to a real mail service with credentials, which gives your mail a verifiable identity and dramatically improves inbox placement.

4. Missing SPF, DKIM, and DMARC, or a mismatched From address

SMTP is half the deliverability fix. The other half lives in your DNS. SPF lists which servers may send for your domain, DKIM cryptographically signs your mail so a receiver can verify it, and DMARC ties the two together and tells receivers what to do on failure. A store should publish all three. They must also align with your From address, which is why WooCommerce warns against sending from a public-domain address like a gmail.com or yahoo.com address: a From domain you do not control cannot be authenticated and will fail alignment. Use a From address on your own domain, publish the SPF and DKIM values your SMTP provider gives you, and add a DMARC record. This is what moves mail from the spam folder to the inbox for good.

5. A plugin conflict, or an order that never reaches a sending status

Two related causes that masquerade as email failures. A plugin can hijack or override wp_mail, commonly a misconfigured mail or security plugin, so WooCommerce mail stops even though the settings look right. A conflict test isolates it. The subtler one is order status. Because WooCommerce emails are tied to status transitions, an order stranded in Pending Payment or On hold, usually because a payment gateway never reported the payment back, will never send its confirmation. The email system can be perfectly healthy and the confirmation still never goes out, because nothing triggered it. Always confirm the order actually reached the status that should email before concluding the email system is broken.

DIY vs hand it off

Enabling an email or fixing a recipient is a two-minute job. Setting up authenticated SMTP with correct SPF, DKIM, and DMARC across your DNS is where most owners stall. If the left column matches you can likely do this yourself. If the right column matches, get help.

Realistic on your own

  • The email was simply disabled, or the admin recipient was blank
  • The order was stuck in Pending Payment and the gateway was the real issue
  • You are comfortable installing and configuring a mail plugin
  • You can access your DNS and add the SPF, DKIM, and DMARC records
  • You have an SMTP provider account or can create one
  • A mail log clearly points to one plugin overriding the mail function

Hand it off, save the time

  • Customers are not getting receipts right now and trust is eroding by the hour
  • You cannot access or do not understand your domain DNS records
  • Mail still fails after adding SMTP and you cannot tell why
  • SPF or DKIM is failing alignment and DMARC is rejecting your mail
  • Multiple plugins touch email and you cannot isolate the conflict
  • You need it working reliably for every order, not just a one-off test

How to diagnose it

Run these in order. The goal of the first three is to decide whether you have a send problem or an arrive problem, because that splits the entire fix.

1
Confirm the email is enabled and the recipient is right

Go to WooCommerce then Settings then Emails. Find the specific notification you are missing and confirm Enable this email notification is checked. For the admin New Order, Cancelled, and Failed emails, confirm the Recipients field holds an address you actually monitor. This rules out the simplest cause in under a minute.

2
Check the order status

Open the order in question. If it is in Pending Payment or On hold, no customer confirmation is supposed to send, and the real problem is whatever stopped the order reaching Processing, usually the payment gateway. Do not debug email further until the order is reaching a status that should email.

3
Read the transactional-emails log

Go to WooCommerce then Status then Logs and open the transactional-emails source. If WooCommerce recorded the email as sent, you have an arrive problem, move to deliverability. If there is no record, you have a send problem, move to the mail function and plugin checks.

4
Install a mail-logging plugin

A mail log plugin records every wp_mail call. If it shows the message being generated but not delivered, your host is likely blocking the mail function or your SMTP is misconfigured. If it shows no call at all for an order that should email, a plugin or a status problem is stopping generation upstream.

5
Test deliverability and authentication

Send a test message to a tool like mail-tester, which scores your SPF, DKIM, and DMARC and flags spam triggers, then send a real test order and confirm receipt in an actual Gmail or Outlook inbox, not just the WooCommerce log. A green authentication score plus real-inbox receipt is the proof that the chain works.

6
Run a conflict test if mail is being blocked on the WordPress side

If generation is failing and the host is not the cause, deactivate plugins in groups on staging, especially any mail, security, or marketing plugins, then re-enable one at a time, sending a test after each. The plugin that stops mail again is overriding wp_mail.

How to fix it

Each branch stands alone. Pick the one your diagnosis pointed to. For most stores, the SMTP and DNS branch is the durable fix.

If the email was disabled or the recipient was wrong

In WooCommerce then Settings then Emails, open the missing notification, check Enable this email notification, and save. For admin emails, set the Recipients field to an address you monitor. You can add more than one recipient by separating addresses with commas. Place a test order to confirm it now fires.

If the order was stuck before a sending status

The email is fine, the order flow is not. An order stranded in Pending Payment or On hold means the payment was never confirmed back to your site, so fix the gateway or checkout flow rather than the email. Once orders reach Processing on payment, the confirmation fires on its own.

If you need WooCommerce to email on a status you are managing manually, you can still trigger the relevant email from the order screen, but the right long-term fix is to make the gateway report payment correctly.

If mail is blocked or filtered: set up authenticated SMTP plus DNS

This is the durable fix for the great majority of stores. Two parts.

Part one, SMTP. Create an account with a dedicated email sending service, install a mail plugin that routes WordPress mail through SMTP, and connect it with the credentials the service provides. This bypasses the restricted host mail function entirely and sends with a verifiable identity. Set the From address to one on your own domain.

Part two, DNS authentication. Publish the three records that prove your mail is legitimate. Your SMTP provider gives you the exact SPF and DKIM values. Add a DMARC record to start.

# SPF (TXT record on your domain) - example, use the value your provider gives
v=spf1 include:your-smtp-provider.example ~all

# DKIM (TXT record, name and value provided by your SMTP service)
selector._domainkey.yourdomain.com  ->  v=DKIM1; k=rsa; p=PUBLICKEY...

# DMARC (TXT record at _dmarc.yourdomain.com) - start in monitoring mode
v=DMARC1; p=none; rua=mailto:[email protected]

Start DMARC at p=none to monitor without affecting delivery, confirm SPF and DKIM pass and align, then tighten the policy over time. Send a test through mail-tester to verify all three score green before relying on it.

If a plugin is overriding the mail function

Identify the plugin with the conflict test from the diagnosis section, then decide. If it is a mail or SMTP plugin that is misconfigured, fix its settings rather than removing it, since you want an SMTP plugin in place anyway. If it is a security or unrelated plugin that interferes with wp_mail, update it or replace it with one that does not. Avoid running two SMTP or mail plugins at once, since they fight over the mail function.

Not sure whether you have a send or an arrive problem, or stuck on the DNS records?

Let us fix it in 2 hours →

A real email-delivery debug session

A composite from the WooCommerce email repairs we run most weeks, with identifying details removed.

Scenario

A specialty foods store noticed customers were emailing to ask whether their order had gone through, because no confirmation ever arrived. The owner also realized they had not received a New Order alert in weeks and had been catching orders only by checking the dashboard. Sales were happening, the emails were not. The From address on the store was the owner gmail.com address they had set up years earlier.

Diagnosis

The orders were reaching Processing, so status was not the issue. The transactional-emails log showed WooCommerce recording sends, which meant an arrive problem, not a send problem. A test through a deliverability checker failed SPF and DKIM outright and flagged the gmail.com From address as a hard authentication failure, since the store had no authority to send as gmail.com. With Gmail and Yahoo enforcing authentication since early 2024, those messages were being filtered or rejected before they reached anyone.

Resolution

We created an authenticated SMTP account, connected it with a mail plugin, and set the From address to one on the store own domain. We published the SPF and DKIM records the provider supplied and added a DMARC record in monitoring mode. A retest scored green across all three. A live test order delivered the customer confirmation to a real Gmail inbox and the New Order alert to the owner, both in seconds. We left DMARC monitoring so the policy could be tightened safely later.

Total elapsed
Confirmations and admin alerts delivering reliably inside the 2-hour window, after weeks of silent orders.

When to stop and hand it off

Four situations where DIY costs more than help. First, customers are placing orders right now and getting no receipt, so every hour erodes trust and generates support tickets. Second, the fix lives in your domain DNS and you are not comfortable editing SPF, DKIM, and DMARC records, where a wrong value can make deliverability worse. Third, you added SMTP and mail still fails, which usually means an alignment or DNS subtlety that is hard to spot without the right tools. Fourth, several plugins touch email and you cannot isolate the conflict without taking the store down further. We diagnose send versus arrive in minutes, set up authenticated SMTP, publish correct DNS records, and verify real-inbox delivery for both customer and admin mail. Flat $49 to $149, done in two hours when scope fits, money back if we cannot.

Get a quote in 60 seconds

WooCommerce order email FAQ

My customers are not getting order confirmation emails but the orders are coming through. Where are the emails?

If orders are arriving but customers get no confirmation, the order is being created but the email either never leaves your server or leaves and gets filtered. Three checks settle it fast. First, confirm the Processing order email is enabled in WooCommerce then Settings then Emails, because notifications sometimes get switched off during an update. Second, confirm the order actually reached a status that sends an email. WooCommerce does not email confirmations for orders stuck in Pending Payment, so a payment that did not complete leaves the order silent by design. Third, check the transactional-emails log in WooCommerce then Status then Logs. If the log shows the email was sent but the customer never got it, you have a deliverability problem and need authenticated SMTP with proper SPF, DKIM, and DMARC records. If the log shows nothing, the email is not being generated or your host is blocking the mail function.

I am the store owner and I stopped getting New Order notifications. How do I fix that?

The admin New Order email is separate from the customer emails and has its own settings. Open WooCommerce then Settings then Emails, click into New Order, and check two things. First, that the notification is enabled. Second, that the Recipients field contains the correct address. This field is easy to leave blank or to fill with an address you no longer monitor, and unlike the customer emails it does not default to the buyer. If the recipient is right and enabled but mail still does not arrive, the cause is the same delivery chain as the customer emails: your host may be blocking the WordPress mail function, or your messages may be failing authentication and getting filtered. Set up authenticated SMTP and the admin alerts and customer confirmations both start arriving, because they travel the same path.

Why does WooCommerce email fail so often out of the box?

By default WooCommerce sends mail using the wp_mail function, which is the core WordPress mail function, and on most hosts that ultimately calls the basic PHP mail facility. That path has two weaknesses. Many hosts restrict or disable the PHP mail function to fight spam, so the message never leaves the server. And even when it does leave, mail sent that way is usually unauthenticated, with no SPF or DKIM signature tying it to your domain, so Gmail, Yahoo, and Outlook treat it as suspicious. Since Gmail and Yahoo began enforcing sender authentication on February 1, 2024, unauthenticated mail increasingly lands in spam or is rejected outright. The fix that addresses both weaknesses at once is to route WordPress mail through an authenticated SMTP service instead of the default function.

What is SMTP and do I really need it for a store?

SMTP is the standard, authenticated way to send email. Instead of handing the message to the basic server mail function and hoping, an SMTP setup logs in to a real mail service with credentials and sends through it, the same way an email client does. For a store, the answer is effectively yes, you need it. A store sends transactional mail that absolutely must arrive: order confirmations, payment receipts, password resets, and your own new-order alerts. Authenticated SMTP through a dedicated sending service gives those messages a verifiable identity, which is what modern inbox providers now require. WooCommerce itself recommends signing up with a dedicated SMTP provider to send the email for you. You connect it with a mail plugin, point it at the service, and your deliverability problem usually disappears.

What are SPF, DKIM, and DMARC, and which do I need?

They are three DNS records that prove your mail is legitimate, and a store should have all three. SPF lists which mail servers are allowed to send for your domain. DKIM adds a cryptographic signature so a receiver can verify the message was genuinely sent by your domain and not altered. DMARC ties the two together and tells receiving servers what to do when a message fails, and it is what Gmail requires from bulk senders. Since February 1, 2024, Gmail and Yahoo require senders to authenticate, with stricter rules for anyone sending 5,000 or more messages a day, and enforcement tightened further through late 2025 from spam-foldering toward outright rejection. Even low-volume stores are affected, because missing these records sharply reduces inbox placement. Your SMTP provider supplies the exact SPF and DKIM values to publish, and you add a DMARC record to your DNS.

My emails were working and suddenly stopped. What changed?

A store that was delivering and then went quiet almost always had something change underneath it. The most common triggers are a new plugin that hijacks or overrides the WordPress mail function, a host that tightened its mail policy or moved you to a new server, a WordPress or WooCommerce update that reset an email setting, or a DNS change that broke your SPF or DKIM records. The fastest way to localize it is a mail-logging plugin. If the log shows mail is still being generated but not delivered, the change is in the delivery or authentication layer, so check your SMTP connection and DNS records. If the log shows mail is no longer being generated at all, the change is on the WordPress side, so check email settings and run a plugin conflict test. Pin the timeline of when it stopped against your update and DNS history and the culprit usually stands out.

My orders are stuck on hold or pending and no email goes out. Is that an email problem?

Not exactly, and this is a common misdiagnosis. Many WooCommerce emails are tied to an order status transition, so if the order never moves to the status that triggers the email, no email is the correct behavior, not a bug. The customer Processing email fires when an order reaches Processing, which normally happens when payment is confirmed. If a payment gateway is misconfigured and never reports the payment back to your site, the order sits in Pending Payment or On hold and the confirmation never sends, even though your email system is perfectly healthy. So when emails are missing, always check the order status first. If orders are stranded before the status that should email, the real problem is the payment or gateway flow, and fixing that makes the emails fire on their own.

How do I test that order emails are actually working?

Run a real transaction end to end rather than relying on a settings page. Place a test order as a customer, ideally paying through your live gateway in a test mode or with a small real purchase you refund, and confirm two things arrive: the customer Processing order email to the buyer address, and the New Order notification to your admin address. Then check the transactional-emails source under WooCommerce then Status then Logs to see WooCommerce record the send. For deliverability specifically, send a test through a tool like mail-tester, which scores your SPF, DKIM, and DMARC and flags spam triggers. A green result there plus confirmed receipt in a real inbox, not just the WooCommerce log, is what tells you the whole chain works.

Sources and further reading

Every claim on this page traces back to WooCommerce documentation, the WooCommerce email sender requirements post, or the Google and Yahoo sender guidelines.

Why we fix WooCommerce email faster than a support ticket

2h

2-Hour Guarantee

Fixed in 2 hours or your money back. Every silent order is a customer wondering if they were charged.

$49

Flat Rate $49 to $149

No hourly billing. We set up SMTP and SPF, DKIM, and DMARC correctly the first time.

100%

Money-Back Guarantee

Cannot fix it? You do not pay. Zero risk to you.

Get your order emails delivering again

We fix WooCommerce email every week, from blocked mail functions to spam-filtered confirmations. Flat $49 to $149, done in 2 hours when scope fits, money back if we cannot.

Fix My Order Emails Now