Fixing WooCommerce order emails not sending
How to troubleshoot and fix WooCommerce order notification emails that are not sending, including email settings, order status triggers, template issues and SMTP configuration.
If your WooCommerce store isn't sending order confirmation emails, or customers aren't receiving notifications when their order status changes, you may not realise there's a problem until someone contacts you asking where their receipt is.
WooCommerce order emails work differently from general WordPress emails like contact form submissions or password resets. They're triggered by specific order status changes and controlled by WooCommerce's own email settings, which adds an extra layer on top of WordPress's standard email handling.
This means that even if your contact form emails are working fine, WooCommerce order emails can fail independently. If all emails from your site are failing (not just WooCommerce ones), the underlying cause is likely your site's general email setup. See our guide to fixing WordPress email delivery first, then come back here to check the WooCommerce-specific settings.
Check WooCommerce email settings
WooCommerce manages its own set of email notifications, each tied to a specific order event. Go to WooCommerce → Settings → Emails to see the full list.
Each email type (new order, processing order, completed order, refunded order and so on) can be enabled or disabled individually, and each has its own recipient and template settings. Click Manage next to each email you expect to be sending,1 and check that it's enabled and that the recipient address is correct for admin notifications like "New order".
Pay particular attention to which email goes to whom. "New order" goes to the store admin, while "Processing order", "Completed order" and "Order on-hold" go to the customer.1 If you're not receiving new order notifications but your customers are getting their confirmations, the admin recipient address may simply be wrong.
The same settings screen lets you set the "From" name and address. If you change the "From" address, use an address on your own domain that your email provider has authorised to send, otherwise emails may be more likely to be treated as spam. Your email provider can confirm which addresses are set up for this.
Check order statuses
This is one of the most commonly overlooked causes of missing WooCommerce emails. Each email is triggered by a specific change in order status, not by the act of placing an order itself.
For example, the customer "Processing order" email is sent when an order moves to Processing from Pending payment, On hold, Failed or Cancelled. The "New order" email to you is sent when an order moves from Pending payment, Failed or Cancelled to Processing, On hold or Completed.2 So while an order sits on Pending payment, neither email is sent.
Check your recent orders under WooCommerce → Orders and look at their statuses. If orders are stuck on Pending payment when they should have moved to Processing, the problem is with the payment confirmation from your gateway rather than with the email system. Our guide to orders stuck on Pending payment or On hold covers this in detail.
Similarly, the "Completed order" email is only sent when an order is marked as Completed.2 For physical products, this usually means someone changing the status by hand, or a shipping plugin doing it automatically. If orders are still sitting on Processing, customers not having a "completed" email yet is expected behaviour rather than an email failure.
Check payment gateway communication
If orders are getting stuck on Pending payment, your payment gateway may not be passing payment confirmations back to WooCommerce.
Most gateways notify WooCommerce by sending a request to a specific address on your site after processing a payment. Modern gateways such as Stripe and PayPal call these webhooks. If that request is blocked by a firewall, sent to the wrong address or fails for any other reason, WooCommerce never hears about the payment, the order status doesn't change and the related emails don't send.
If you recently changed your domain, moved your site or switched to HTTPS, the gateway may still be sending confirmations to the old address. Our pending payment guide shows how to check Stripe and PayPal webhook delivery logs. For other gateways, check the gateway's own documentation, and contact its support if you're unsure what the address should be.
Some WooCommerce emails and gateway updates are also handled by background tasks. If those have stopped running, emails can arrive hours late or not at all. Our guide to past-due scheduled actions covers how to check.
Check for plugin conflicts
Plugins that change WooCommerce emails, add custom email templates or handle email delivery can interfere with WooCommerce's emails.
If you've recently installed or updated a plugin that touches email, try deactivating it temporarily and placing a test order. If the email arrives, that plugin was the cause. Deactivating a plugin on a live store switches its features off for customers too, so do it at a quiet time or on a staging copy if you can.
Page caching can also cause problems with orders in less obvious ways. WooCommerce's cart, checkout and My Account pages should never be cached, because they contain information specific to each customer.3 Check your caching plugin, your host's cache and any CDN rules exclude them.
Set up email logging
If you're not sure whether the problem is emails not being created or emails not being delivered, an email logging plugin can help you narrow it down. These plugins record every email WordPress attempts to send, with its status and any error messages. Logs contain customers' names, addresses and order details, so set the plugin to delete old entries and remove it when you no longer need it.
If WooCommerce emails appear in the log as sent but aren't arriving, the problem is with delivery. Your email sending setup, your domain's email authentication records or the recipient's spam filter may be stopping them.
If the emails don't appear in the log at all, WooCommerce isn't creating them in the first place. That points back to the earlier sections: a disabled email type, an order status that isn't changing or a plugin conflict.
Check how your site sends email
WooCommerce uses the same email sending method as the rest of WordPress. By default, WordPress hands emails to PHP's built-in mail() function, which relies on your server's own mail setup.4 On many hosts that works, but emails sent this way are more likely to be delayed, filtered as spam or blocked.
Sending through an authenticated email service (SMTP or an email API), with your domain's SPF, DKIM and DMARC records set up, usually makes delivery much more reliable.4 Our WordPress email delivery guide covers this, and applies to all emails your site sends, including WooCommerce ones.
Check email template customisations
If you or your theme have customised WooCommerce's email templates, outdated or broken template overrides can stop emails from displaying correctly or from sending at all.
WooCommerce email templates are PHP files that control the layout and content of each email. A theme can override them by placing its own versions in a woocommerce/emails/ folder inside the theme.5 If WooCommerce has since updated the original templates but the theme's copies haven't been updated to match, the emails may break.
Check WooCommerce → Status → System Status for template overrides flagged as outdated. If there are warnings, the overrides need updating to match the current WooCommerce version, usually by your theme developer, or removing so WooCommerce falls back to its own templates.
Take a backup of your theme before making changes. Then you can test whether the overrides are the problem by temporarily renaming your theme's woocommerce/emails/ folder (for example, to emails-disabled/). WooCommerce will use its default templates instead. If emails start working, the custom templates need updating. Rename the folder back afterwards if you want to keep your customisations while they're fixed.
Test with a test order
After making any changes, place a test order through the full checkout. Use your payment gateway's test or sandbox mode if it has one. If you place a small real order instead, remember it will affect your stock and sales records, and you'll need to refund and cancel it afterwards.
Check that each email you expect arrives: "New order" to you, "Processing order" to the customer, and "Completed order" to the customer once you mark the order as Completed.
Send test orders to an address at a major email provider rather than an address on your own domain, since emails between addresses on the same server can skip the usual delivery checks and make things look fine when they aren't.
Need help with WooCommerce emails?
If order emails still aren't arriving after working through these steps, my WordPress development service and emergency WordPress support cover WooCommerce email settings, email sending setup, payment gateway communication and template problems. For DNS records and your email account itself, your email provider is the best source of help.
Email settings, WooCommerce. ↩ ↩
WooCommerce email classes, WooCommerce source code on GitHub. ↩ ↩
Configuring caching plugins, WooCommerce Developer Docs. ↩
Template structure and overriding templates via a theme, WooCommerce. ↩