WooCommerce is not sending emails: Systematically checking causes

Reading time approx.: 10 minutes

An order exists in the WooCommerce backend, but the customer is not receiving an order confirmation? Or you yourself are not receiving a notification about new orders?

Then you shouldn't install plugins right away or change settings on a whim. With WooCommerce emails, there are several places where a problem can arise.

Simplified, a message takes this path:

WooCommerce → WordPress → Mail system → Receiving mail server → Inbox

Therefore, the most important question is first: Did WooCommerce trigger the expected email at all?

Important: „WooCommerce has sent the email and the customer has received the email are not the same thing. A message can successfully leave WooCommerce and still be rejected or classified as spam later.

Start with the affected order #

If a certain order confirmation email is missing, first open the respective order under WooCommerce → Orders.

Check the order status and the customer's saved email address. Also check the order notes, as WooCommerce and payment extensions store important information there regarding status changes and sometimes also email delivery.

An incorrectly entered customer address cannot be fixed by changes to the mail server. Likewise, not every WooCommerce email is triggered for every order status.

For example, if an order still stands on Payment pending, even though you are expecting an email that is only triggered after successful payment, you must first find out why the payment or the status change did not occur.

We explain the individual statuses in the article WooCommerce Order Status Simply Explained.

Check if the email in question is activated #

Open:

WooCommerce → Settings → Emails

Select the notification there that is not working.

Check if this notification is enabled. For emails to the store owner, you should also check whether the correct recipient address has been entered.

In customer emails, the recipient address usually comes from the order or the customer account. Therefore, check there for typos as well.

We explain in detail how to set up the individual notifications in the article Set up WooCommerce emails and order notifications.

The WooCommerce email log is the most important next step #

Current WooCommerce versions log the sending of their transactional emails. This allows you to determine much more precisely what actually happened.

Open:

WooCommerce → Status → Logs

Search or filter there by source:

transactional emails

If necessary, trigger the exact email you want to examine with a test order and check the corresponding entry.

WooCommerce distinguishes four particularly helpful results:

EntryMeaning
SentWooCommerce has successfully passed the email to the downstream mail system.
FailedWooCommerce attempted to send, but the mail function has returned an error.
DisabledThe WooCommerce email in question is disabled.
SkippedWooCommerce didn't send the message because a required prerequisite was missing, such as a recipient.

For order-related emails, successful and failed shipping attempts are additionally saved as private order notes. Disabled or skipped emails, on the other hand, can only be found in the email log.

Privacy Policy: WooCommerce does not simply write complete customer email addresses into the log. Recipients are displayed there as an associated WordPress user or as a guest, for example; email addresses in error messages are redacted.

If it says „Disabled“ in the log #

This case is relatively simple: WooCommerce has determined that the notification in question is disabled.

Open WooCommerce → Settings → Emails, select the message in question and activate it if it is actually to be sent.

Then perform a new controlled test.

If „Skipped“ appears in the log #

At Skipped the message was not sent because a required prerequisite was missing.

One possible example is a missing recipient address.

Therefore, check the information in the log as well as the relevant order and email configuration. Fix the cause identifiable there before searching on the mail server or in the DNS settings.

If the log says „Failed“ #

Failed means that WooCommerce attempted to send the message, but the sending process returned an error.

The log entry usually contains additional information on the reported cause. This error message is significantly more helpful for further diagnosis than the general statement „WooCommerce is not sending emails“.

In this case, you should investigate the technical email delivery of the WordPress installation. Depending on the configuration, this can involve the web server's email delivery, an SMTP connection, or an external transactional email service.

Also check under WooCommerce → Status → Logs, whether additional errors or serious PHP errors were logged at the same time.

Do not change settings at random: If WooCommerce already provides a specific error message, it should be investigated first. Making multiple changes at the same time often makes the cause harder to trace later.

If the log says „Sent“, the problem is likely further along the delivery path #

Sent means that WooCommerce has successfully handed over the message to the mail system.

It does not mean that the receiving mail server will accept the message or that the customer has seen it in their inbox.

From this point on, you should therefore no longer primarily look for an incorrect WooCommerce order status, but instead investigate the actual email sending and delivery.

First, check the recipient's spam or junk folder. If you are sending via SMTP or an external mail service, check its delivery log. Depending on the provider, you can use it to determine whether the message was accepted, forwarded, rejected, or otherwise handled.

Note: WooCommerce can confirm that it has passed a message to the mail system. The final delivery can only be confirmed by the further mail infrastructure.

If there is no entry at all #

If a WooCommerce email should have been triggered, but no corresponding entry appears in the log, the problem lies earlier in the processing.

Check again whether the expected event has actually occurred. In the case of an order, this means in particular: Was the payment successfully processed and has the order reached the expected status?

Check the WooCommerce logs for fatal errors afterwards. Conflicts with plugins, extensions, the theme, or custom code can also affect normal operation.

During an online payment, you should also check whether the payment provider has correctly reported the payment back to WooCommerce. You can find out more at Setting up and managing payment methods in WooCommerce.

Check the sender address #

WooCommerce recommends using an address on your website's domain for the sender address.

For a store at:

www.meinshop.ch

would be, for example, a sender address like:

shop@meinshop.ch

technically much more sensible than a third-party public sender address like a Gmail or Yahoo address.

The reason: If your web server claims to be sending on behalf of a third-party domain even though it is not authorized to do so, receiving mail servers may classify the message as suspicious or reject it.

You can find the WooCommerce sender address under WooCommerce → Settings → Emails.

Check SPF, DKIM and DMARC #

For reliable email delivery, WooCommerce is not the only relevant factor. The sender domain must also match the sending method used.

Three methods play a particularly important role in this context:

ProcedureTask explained simply
SPFDefine which systems are allowed to send emails for a domain.
DKIMSigns messages with a cryptographic signature that the recipient can verify using DNS.
DMARCLinks, among other things, the sender domain with SPF/DKIM checks and enables policies for incorrectly authenticated messages.

Incorrect or missing authentication does not necessarily mean that an email cannot be sent at all. However, it can have a significant impact on whether a receiving mail server trusts the message.

Important: SPF, DKIM, and DMARC are not configured in the regular WooCommerce email settings. They belong to the domain and mail server configuration or the mail service being used.

SMTP can make sending more reliable and traceable #

WordPress uses the function by default wp_mail(). WooCommerce passes its emails to this WordPress mail function.

Depending on the hosting and mail configuration, messages are then forwarded via the server's mail infrastructure.

For an online shop, an authenticated SMTP or transactional mail service may be useful instead. In this process, WordPress is connected to a dedicated mail system designed for this purpose.

The process then looks something like this in simplified form:

WooCommerce → WordPress → authenticated mail service → recipient

Such a service can often also provide more detailed information on the further processing of a message, in addition to the actual sending.

SMTP is not a repair button for every email problem. If WooCommerce does not trigger an email at all, another transport method will not fix this problem. Therefore, first check the WooCommerce log to find out where the error occurs.

If only individual recipients do not receive emails #

If some customers receive the WooCommerce emails without any issues while messages to a specific address or a specific mail provider are missing, this rather speaks against a complete failure of the WooCommerce mail dispatch.

In this case, check the affected email address, the WooCommerce log, and – if available – the sending log of your mail service in particular.

The spam filter or receiving mail server's acceptance rules can also play a role.

When troubleshooting, test with another external email address if possible. This makes it easier to determine whether the issue is general or occurs only with a specific recipient.

If only the shop owner receives no notifications #

If customers receive their order emails, but you yourself do not receive a notification about new orders, for example, you should first check the recipient address of the WooCommerce admin email.

Open WooCommerce → Settings → Emails → New order and check the recipients entered there.

Then you check that again transactional emails-Log. This is how you can determine whether the administrator notification was triggered independently of the customer email.

A working customer email does not automatically prove that every administrator notification is also configured correctly.

If only certain WooCommerce emails are missing #

If, for example, emails for completed orders work, but another notification is missing, the basic email transmission has obviously not failed completely.

Then focus on the notification in question:

Is it activated? Is a recipient available? Has the required order status been reached? What does the transactional emails-Protocol specifically for this type of email?

How to avoid reconfiguring a working mail server when the actual problem lies in a single WooCommerce setting.

Check plugins and themes as a cause #

WooCommerce emails can be influenced by additional plugins or custom code. This particularly affects payment extensions, email customizations, checkout extensions, and plugins that modify order statuses or order processes.

A technical error in a plugin or theme can also interrupt the processing.

If the logs indicate a conflict and the cause cannot be identified otherwise, a controlled conflict test can be useful. This checks whether the problem still occurs with WooCommerce and a standard environment.

Do not disable uncontrolled in the live shop: On a live WooCommerce store, disabled payment, shipping, or checkout plugins can affect order processing. You should therefore perform an extensive conflict test in a safe test or staging environment whenever possible.

Check scheduled actions when messages are delayed #

Not every extension processes all emails immediately. WooCommerce and numerous extensions use the so-called background tasks for Action Scheduler.

You can find the planned actions at:

WooCommerce → Status → Scheduled Actions

There you can see, among other things, whether tasks are pending or have failed.

By default, Action Scheduler uses WordPress WP-Cron to execute its tasks. If WP-Cron does not function reliably or if background tasks pile up, features processed via such scheduled actions may also be affected.

This point is particularly relevant when an extension sends emails with a time delay or in the background. For a normal WooCommerce core order email, however, you should first the transactional emails- Check the log and do not automatically assume a cron problem.

The right order saves a lot of time #

If a WooCommerce email is missing, you can narrow down the troubleshooting to this sequence:

ExamQuestion
1. OrderDoes the order exist and does it have the expected status?
2. RecipientIs the email address correct?
3. WooCommerce SettingIs the notification in question enabled?
4. WooCommerce LogDoes it say Sent, Failed, Disabled, Skipped, or is the attempt missing entirely?
5. Mail SystemDid WordPress or the mail service used process the message further?
6. AuthenticationDo sender domain, SPF, DKIM, and DMARC match the transmission path?
7. RecipientWas the message accepted by the destination server or filtered, for example?

With this sequence, you can narrow down the problem step by step instead of changing settings on a whim.

A practical example #

A customer reports that they have not received an order confirmation.

First, you open his order and determine that it has been paid correctly and has the expected status. The email address is also correct.

Under WooCommerce → Settings → Emails the corresponding customer notification is enabled.

Then you open WooCommerce → Status → Logs → transactional-emails.

Can you find that there for this message Sent, You know: WooCommerce has done its job and passed the message to the mail system. Now you are investigating the further delivery path.

It stands in contrast to that Failed, you investigate the logged error message.

At Disabled Are you correcting the WooCommerce setting? At Skipped are you looking for the missing prerequisite.

With that, you have already turned „The customer does not receive an email“ into a much more precise technical diagnosis.

Always retest after a correction #

Once you have found and fixed a cause, run a new test order or a controlled new email dispatch.

Afterwards, check not only whether the message was received, but also:

  • whether WooCommerce logs shipping correctly,
  • whether sender and recipient match,
  • whether the message arrives promptly,
  • whether it lands in the normal inbox instead of the spam folder,
  • whether the content, order number, and links are correct.

We explain how you can test the entire ordering process before publication in the article Testing a WooCommerce shop before launch: Test order and checklist.

Summary #

If WooCommerce emails are missing, the first thing you should find out is, at what point in the shipping chain the problem arises.

First check the order, order status, recipient, and the relevant WooCommerce email setting. After that, the log is under WooCommerce → Status → Logs with the source transactional emails the most important diagnostic point.

Sent means that WooCommerce has handed over the message to the mail system. Failed indicates an error during the shipping attempt. Disabled means that the notification is disabled, and Skipped shows that a necessary prerequisite was missing.

Only when WooCommerce has successfully handed over the message should you investigate the further delivery path. Depending on the configuration, this includes the mail server or SMTP service, sender domain, SPF, DKIM, DMARC, as well as filtering by the receiving mail server.

This is how you can systematically narrow down an email problem without making speculative changes to WooCommerce, plugins, or the mail server.

Last updated August 31, 2026
Was this article helpful?
Cookie Consent with Real Cookie Banner