WooCommerce Order Emails Not Sending

WooCommerce icon for order emails not sending

WooCommerce order emails not sending is a problem that usually comes to light through a customer, when someone who has paid asks why no confirmation arrived or a trade buyer chases an order the warehouse never heard about. The cause sits somewhere between the order itself and the recipient’s inbox. Checking order emails is a routine part of WooCommerce support for B2B wholesalers, because a store can keep taking payments for days before anyone notices that the notifications have stopped.

Order emails fail for reasons that general WordPress email advice does not cover, such as order statuses, payment gateways and background queues. For mail delivery in general, our guide to WordPress not sending emails covers testing, SMTP setup and DNS records in detail. The sections below stay with the causes that are specific to WooCommerce orders and the order in which to check them.

Why WooCommerce Order Emails Stop Sending

WooCommerce order emails stop sending for one of three reasons, which are that the email was never triggered, that it was triggered but failed to leave the website or that it left the website and was filtered on the way to the inbox. Each stage has different causes, so the quickest route is to work out which stage failed before changing any settings.

WooCommerce’s email troubleshooting documentation explains that WooCommerce sends mail through the WordPress wp_mail() function, so a missing email is often a problem with the mail function on the web host rather than with WooCommerce building the message. The same page notes that many email problems are really deliverability problems, where the server sends the email but the recipient never receives it.

  1. 1

    Check the Order Status

    Open the order and read its status and order notes. An order still in Pending payment has not triggered any email.

  2. 2

    Check the Email Settings

    Confirm the email type is switched on and has the right recipients. Look at the From address at the same time.

  3. 3

    Read the Email Log

    Find the log entry for the order in the WooCommerce logs. It shows whether the email was sent, failed, switched off or skipped.

  4. 4

    Check the Queue

    Look in Scheduled Actions for failed or overdue tasks. A stalled queue holds up anything that runs in the background.

  5. 5

    Check Delivery

    Review the SMTP provider’s log and the domain’s SPF, DKIM and DMARC records. Then place a test order and confirm it reaches the inbox.

Working through the checks in that order avoids a common trap, which is installing an SMTP plugin to fix an email that WooCommerce never tried to send. Each section below covers one of these stages in more detail.

Check Each Email Is Switched On and Addressed Correctly

Each WooCommerce email type has its own settings, so one order email can stop while the others carry on working. The WooCommerce email settings under WooCommerce > Settings > Emails list every notification. Each one can be switched on or off from its own Manage screen.

The New order, Cancelled order and Failed order emails go to the store rather than the customer. Each of these has a recipient field that defaults to the administrator email address set in Settings > General. If that address belongs to a mailbox nobody checks or to someone who has left the business, new order alerts are sent correctly and never read. Several addresses can be entered with commas between them, so a sales inbox and a warehouse inbox can both receive the alert.

The From address beneath the list of notifications matters just as much. WooCommerce recommends an address on the store’s own domain and warns that a Gmail or Yahoo address in that field is likely to push emails into spam or get them blocked, because the declared sender does not match the server that sends the message.

With the Email improvements feature turned on, each email’s editing screen can show a preview and send a test to any address. A preview that works while live orders stay silent points away from the template and towards the order status or the mail delivery.

Order Statuses That Trigger Each Email

WooCommerce sends each order email when an order moves into a particular status, so an order that never reaches that status never sends the email. The WooCommerce order statuses documentation describes Processing as paid with stock reduced and awaiting fulfilment, while Pending payment means the order has been received but no payment has been made.

Email Who Receives It When It Is Sent
New order Store recipients When a new order is received
Processing order Customer After payment, when the order moves to Processing
Order on hold Customer When the order moves to On hold from Pending payment, Cancelled or Failed
Completed order Customer When the order is marked Completed
Failed order Store recipients and customer When an order that was Pending payment or On hold is marked Failed
Cancelled order Store recipients When an order that was Pending payment, Processing or On hold is cancelled
Refunded order Customer When the order is fully or partly refunded

The table shows why a paid order with no customer email is so often a status problem. Orders where every product is both virtual and downloadable do not need processing, so the customer may never see a Processing order email and should receive the Completed order email instead.

Plugins that add custom statuses such as Awaiting dispatch or Ready to collect create a similar gap. The core emails are tied to the statuses in the table, so an order moved into a custom status only sends an email if the plugin that added the status also adds an email for it.

Payment Gateways That Leave Orders Pending

A payment gateway that fails to report a successful payment back to WooCommerce leaves the order in Pending payment, which means no order email is sent for it. WooCommerce’s troubleshooting documentation is clear that orders still in Pending payment do not trigger an email at all.

Some of these orders were never paid, because the customer left the external payment page or the card was declined. Others have been paid, which means the gateway is having trouble telling the website about the payment. In that case the fault lies with the gateway rather than with email. The gateway’s own documentation and support team are the right place to start.

Comparing the gateway’s dashboard with the order list settles which case applies. A payment that shows as successful in the gateway against an order still marked Pending payment points to a communication problem between the gateway and the website. Security rules that block incoming requests from the gateway are worth checking with the hosting provider at this point.

Trade customers who pay by bank transfer follow a different path. Orders placed with an offline method such as BACS are set to On hold until someone confirms the payment, so the customer receives the Order on hold email rather than the Processing order email. The Processing order email only goes out once a member of staff checks the bank account and moves the order on, which means a slow payment check can look like a broken email from the customer’s side.

Tip

Read the order notes before changing any settings. Payment gateways usually record their events there and current versions of WooCommerce add a private note whenever an order email is sent or fails.

An order with the right status, a payment note and no email note has moved past the gateway stage. Something on the website is stopping the email from being attempted, which narrows the search considerably.

An order with a note saying the email was sent has the opposite problem. WooCommerce did its part, so the investigation moves to the mail server, the SMTP provider and the recipient’s inbox.

Plugin Conflicts and Errors That Stop the Email

Bug fix icon for plugin conflicts that stop order emails

A PHP error, a theme conflict or a badly written plugin can stop an order email by breaking the checkout before the status changes or by interrupting the email after the status has changed. Both usually leave a trace in the WooCommerce logs under WooCommerce > Status > Logs, which record PHP fatal errors and are the first place to look around the time of the order.

The conflict test WooCommerce recommends is to switch off every plugin except WooCommerce, move to a default theme and try to reproduce the problem. That test belongs on a staging copy rather than the live store, which matches the advice in the WooCommerce documentation on testing orders to keep test payments away from the live website.

Test orders bring a trap of their own. The same documentation suggests a plugin such as Disable Emails to stop test orders sending messages. If a plugin like that is left switched on after testing finishes, it goes on blocking order emails once real customers are buying.

Email templates copied into a theme can also cause trouble after a WooCommerce update, because the copy in the theme no longer matches the version WooCommerce expects. The WooCommerce system status report lists every template override and notes when one is outdated, which makes these easy to spot.

Action Scheduler and Delayed Emails

Action Scheduler is the queue WooCommerce uses for tasks that run in the background, so a stalled queue can delay emails or stop them altogether. WooCommerce’s documentation on scheduled actions says these tasks cover order notifications and payment processing. The same page adds that understanding them helps prevent missed order updates or delayed customer emails.

The queue is started by the WordPress cron system, which only runs when someone visits the website. The WordPress plugin handbook on cron explains that a task scheduled for 2pm will not run if no page loads happen until 5pm, which on a quiet trade store can mean long delays.

Scheduled actions are listed under WooCommerce > Status > Scheduled Actions. From there, actions can be filtered by status, failed actions show their log entries and a pending action can be run by hand. A long list of overdue pending actions means the queue is not running at all, while failed actions name the error that stopped them.

Hosting that switches off the WordPress cron without setting up a server cron in its place leaves the queue waiting indefinitely. The handbook page on hooking cron into the system task scheduler explains how to run it from the server on a fixed schedule instead of relying on visitors. That suits stores with long quiet periods overnight or at weekends.

Some emails rely on scheduled tasks by design. The review request email, for example, is scheduled after an order is completed rather than sent straight away, so it only goes out if those tasks run.

Reading the WooCommerce Email Log

The WooCommerce email log shows whether an order email was sent, failed, switched off or skipped, which turns guesswork into a single lookup. The troubleshooting documentation explains that WooCommerce logs each transactional email attempt under WooCommerce > Status > Logs, in a log source named transactional-emails.

Sent
WooCommerce handed the email to the mail system without an error. It does not prove the email reached the inbox.
Failed
WooCommerce tried to send the email and the mail function returned an error. The entry usually includes the reason given by WordPress or the mail service.
Disabled
The email type is switched off in the WooCommerce email settings. Switching it back on fixes future orders.
Skipped
A required condition was missing, such as a recipient. The missing detail needs adding before the email can go out.

Sent and failed attempts for order emails are also added to the order as private notes. If there is no log entry at all for an order that should have triggered an email, the email was never attempted and the cause is usually a fatal error or a conflict.

Missing entries for every email point to the log settings themselves. The entries follow the store’s existing log settings, so a log level threshold set above INFO or NOTICE hides them. Stores on older versions of WooCommerce without this log can use a mail logging plugin or the logs held by their SMTP provider instead.

SMTP and Email Authentication for Order Emails

An order email marked as sent can still vanish if the receiving mailbox does not trust the server that sent it, which is where SMTP and email authentication come in. The WordPress wp_mail() reference states that a successful return value does not automatically mean the user received the email.

✓ Do
  • Send from an address on the store’s domain.
  • Route order emails through an SMTP provider.
  • Add the SMTP provider to the SPF record.
  • Start DMARC at a policy of none.
✕ Don’t
  • Send from a Gmail or Yahoo address.
  • Rely on the web server’s mail function.
  • Forget to list new sending services.
  • Jump straight to a DMARC reject policy.

WooCommerce’s explanation of email and SMTP providers sets out the chain. WooCommerce builds the email and calls wp_mail(), WordPress hands it to PHP and PHP passes it to a mail server on the web host unless an SMTP plugin sends it to a dedicated provider instead. WooCommerce describes a dedicated SMTP provider as more reliable than the server’s own mail function.

Authentication tells receiving mail servers that the store is allowed to send email for its domain. The NCSC guidance on email security describes SPF as a published list of IP addresses trusted for a domain, DKIM as a cryptographic signature on outgoing mail and DMARC as a policy telling receiving servers how to handle email that fails those checks.

Every service that sends mail for the domain has to appear in the SPF record, including the SMTP provider the store uses. The NCSC page on creating an SPF record makes the same point about third party sending services, which are easy to miss when an SMTP provider is added after the record was first written.

Large mailbox providers have tightened their rules too. WooCommerce’s guide to email authentication and sender requirements notes that Google and Yahoo introduced sender requirements in February 2024 that apply to transactional emails as well as marketing, including SPF or DKIM on the sending domain. Stores that send through a Microsoft 365 mailbox should also read our post on Microsoft 365 retiring SMTP basic authentication, since older SMTP plugin settings may stop working.

Keeping Order Emails Reliable

Maintenance icon for keeping WooCommerce order emails reliable

Order emails stay reliable when they are tested after every change that could affect them, rather than checked only when a customer complains. Plugin updates, theme changes, hosting moves, DNS edits and new payment gateways can each break part of the chain. A test order after each change confirms that the store still triggers, logs and delivers its emails.

The WooCommerce email log and the SMTP provider’s dashboard are worth a regular look on busy stores, because a rise in failed or bounced messages shows up there before customers start asking. Our guide to WooCommerce maintenance covers the wider routine that keeps a store healthy between updates.

The Priority Pixels WordPress support team handles plugin updates, security patches, plugin conflict resolution and the deeper fix work that follows a failed update or hosting incident. Stores that need changes to how emails are built or triggered, such as custom statuses or trade order workflows, need WooCommerce development work rather than a settings change.

FAQs

Why does the store get new order emails when customers get nothing?

The New order email and the customer emails are separate types, each with its own on and off setting and its own trigger. A customer only receives the Processing order email once payment is confirmed, so an order paid by bank transfer sends the Order on hold email first. If the status is right and the customer email is switched on, the next place to look is delivery to the customer’s mailbox.

Why do WooCommerce order emails go to spam?

Order emails tend to land in spam when the From address uses a public domain such as Gmail or when the sending domain has no SPF, DKIM or DMARC records. Sending through a dedicated SMTP provider from an address on the store’s own domain, with those records in place, deals with both causes.

Can a missing order email be sent again?

An order email can be sent again from the order itself once the cause has been fixed. Open the order and pick an option from the Order actions panel, such as sending the order details to the customer. A fresh test order afterwards confirms that new orders send their emails without help.

Avatar for Paul Clapp Paul Clapp
Co-Founder at Priority Pixels

Paul leads on development and technical SEO at Priority Pixels, bringing over 20 years of experience in web and IT. He specialises in building fast, scalable WordPress websites and shaping SEO strategies that deliver long-term results. He’s also a driving force behind the agency’s push into accessibility and AI-driven optimisation.

Related All Insights

The main Priority Pixels insight feed. Practical, senior-level thinking on B2B digital marketing across SEO, paid media, content, web design and AI search. Written by the people who deliver the work, based on what has actually worked for our clients.

How to Deal With Google Ads Click Fraud and Invalid Traffic
B2B Marketing Agency
Have a project in mind?

Every project starts with a conversation. Ready to have yours?

Get in Touch
Web Design Agency