Order emails

How to fix WooCommerce order emails not sending

WooCommerce order emails not sending can mean the shop never created the message, its mail service rejected it or the recipient's inbox filtered it. Follow one affected order through those stages. Installing an email plugin before checking the order can leave the actual payment or notification problem unresolved.

Time: 30-60 minutes Level: Beginner to intermediate
Neil McNaught, founder of BugShield and WordPress author
Written by
Written by
Updated
Updated

Keep customer and staff email checks separate

Start with the message someone expected to receive: a customer's order confirmation and a staff member's new-order alert have separate settings. Keep the order number, intended recipient and approximate time beside you as you work. Those details let you follow the right notification and compare its history with the sending service's records.

Choose the next check from the evidence

For a failed or overdue notification task, follow the Action Scheduler guide before retrying the queue.

Identify the missing message and its order

Record the order number, time and the message that should have arrived. A New order notification goes to the shop's configured recipients; a Processing order message goes to the customer after the relevant paid-order transition. A Completed order email belongs to completion. Those notifications are not interchangeable.

Open WooCommerce > Orders, select the order and read its status and notes. An order left Pending payment has not reached the normal paid-order notification stage. If the provider has collected money but the order still waits for payment, use our payment-gateway guide. Do not mark an unpaid order paid merely to trigger an email.

Check the notification and recipient settings

Go to WooCommerce > Settings > Emails and open Manage beside the affected notification. Enable it if it was turned off unintentionally, then save. For shop notifications, check the Recipient(s) field for typos or an old employee's address. Customer messages use the order's customer email, so inspect the billing email on the affected order instead.

Review the From name and address on the Emails settings page. Use an address on a domain your sending service has authorised. Your shop's name in the display field does not authenticate an unrelated Gmail or Yahoo address. WooCommerce's email settings reference explains the individual notifications and sender fields.

Where your version offers Send a test email, send a preview to an inbox you control. A successful preview verifies that example's rendering and delivery, but does not prove a real order triggers the message. Record the preview result before testing the order workflow separately.

Determine whether WooCommerce handed the email over

Current WooCommerce documentation describes a transactional-emails source under WooCommerce > Status > Logs. Select the relevant date and inspect the order's entry. Sent means the message was handed to the mail system, not that it reached an inbox. Failed indicates a sending error; Disabled or Skipped points back to notification settings or a missing requirement.

If expected entries are absent, open WooCommerce > Status > Logs > Settings. Ensure logging is enabled and its level threshold includes INFO and NOTICE entries. Older versions do not necessarily offer this source. Use your existing mail provider or SMTP plugin's delivery logs instead, and consult the official email troubleshooting guide for the available controls. An empty log is not evidence of successful delivery.

Record the timestamp, message identifier and error category without publishing the customer's details. An authentication failure needs the sending account repaired. A rejection or bounce needs its provider reason read. When there is no send attempt for a correctly configured order event, investigate the order transition or email customisation before changing mail providers.

WooCommerce log settings showing Enable logging, storage, retention and level threshold
Logging must be enabled with a threshold that includes the message levels you need. This example shows None, which does not filter out levels; it does not mean logging is disabled. Keep your retention choice appropriate to the investigation. Image unchanged. Credit: WooCommerce contributors, GPL-2.0-or-later.

Repair the shop's sending connection

If a sending plugin is already installed, open its settings and check its connection status before installing another. Run its test-email tool to an address you own. A failed connection needs the plugin's documented reconnect or credential update; a successful test narrows the investigation to the WooCommerce event or later delivery stage.

For a shop relying on the host's default mail handling, choose one supported sending service using WooCommerce's mail provider guidance. Create the provider account, verify your sending domain, and install its recommended WordPress integration through Plugins > Add New Plugin. Follow that provider's connection wizard and send a test message before relying on it for orders.

SMTP is a standard way for the site to hand mail to a sending server. If the integration asks for SMTP details, copy the server, encryption, port and credentials from the provider's instructions. These are not necessarily your WordPress login or normal mailbox password. Store credentials in the integration's settings and keep them out of screenshots and support posts.

Check authentication and the receiving inbox

Your provider's domain-verification screen supplies DNS records that prove it is allowed to send for your domain. SPF and DKIM are two parts of this authentication; DMARC tells receiving services how to handle messages that fail the domain's policy. Use the exact records supplied and ask the domain administrator to merge any SPF change with the existing record. Do not create a second SPF record or remove another legitimate sender.

Follow WooCommerce's sender authentication guidance and wait for the provider to verify the records. Then test delivery to two inbox services you control. Check spam, quarantine, mailbox rules and the provider's bounce or suppression list. A Delivered event means the receiving server accepted the message; inbox placement still needs checking.

Verify an actual order and restore missed communication

Place an authorised test order using your own email and a suitable test-payment setup. Confirm the intended order status, notification log, provider record and received message. Inspect the amount, links and formatting in the email. A custom email template that fails while the standard template works needs its own repair.

Use a staging copy to compare email customisers or other extensions, routing all test mail to controlled inboxes. Keep WooCommerce and the sending integration active during plugin-conflict checks. After the fix, contact affected customers or use the appropriate order email action individually. Avoid changing order statuses back and forth, which can trigger stock, access and extra notifications.

Get help with the next step

If the logs and inbox tell different stories, BugShield can help trace the missing order emails from the order event through to the sending service.

Questions answered

How to fix WooCommerce order emails not sending FAQs

Does Sent in an email log mean the customer received it?

No. It records a successful handover at that stage. Check the sending provider's delivery or bounce record and the recipient's spam or quarantine folder before concluding that it reached the inbox.

Why do I receive the shop notification but the customer does not?

They are separate email types with different recipients. Check the customer notification's enabled state, the order's billing email and that message's delivery record.

Will changing the order to Completed fix email delivery?

It can trigger a different notification but does not repair a sending failure. Only complete an order when that status accurately reflects fulfilment; investigate its intended email separately.

Should I install two SMTP plugins for reliability?

Use one documented sending integration unless your provider explicitly supports a coordinated fallback. Two plugins trying to control the same outgoing message make failures harder to trace.

Why is there no transactional-emails log on my site?

Availability depends on the WooCommerce version and logging configuration. Check the log level and use the existing sending service's records when that source is unavailable. Do not assume a missing log means the email was sent.

Need a hand with your WordPress site?

Tell us what happened and where you got stuck. A BugShield developer can help you work out the next step and confirm a price for the fix.

Explore help with this issue

Accessibility settings

Adjust how this site looks and moves. Your choices are saved in this browser.