The order appears in WooCommerce, but the customer says their confirmation never arrived. Before changing plugins or DNS records, find out where the message stopped. A checkout can record an order without triggering the email you expected, and an email can leave WordPress without reaching the inbox.
This guide gives store owners a way to diagnose a single missing WooCommerce order email before making changes that affect every customer. Official documentation checked on 4 November 2026.
Start with one order and one expected message
Write down the order number, time and time zone, payment method, current order status, and which notification is missing. Is it the store team's new-order alert, the customer's processing confirmation, or a message sent later when the order is completed? Each has a different purpose. A colleague receiving the admin alert does not establish that the customer confirmation worked.
Check the order notes and the payment provider together. If the provider shows a successful charge but the order remains pending payment, investigate that mismatch before changing mail settings. Do not charge the customer again or mark the order paid merely to test delivery. Consult the gateway's own troubleshooting steps and reconcile the payment first.
Then go to WooCommerce → Settings → Emails and check that the relevant notification is enabled. Verify the billing email for a customer message or the configured recipients for a store alert. The WooCommerce email troubleshooting guide explains how order state and notification settings affect this step.
Separate the store, mail provider and inbox
Read the evidence in order. If your version offers the transactional-emails log, look for the matching attempt under WooCommerce → Status → Logs. The official troubleshooting guide documents the log outcomes and how logging settings can hide some entries. An older installation or a message sent by another plugin may require a different log. Absence of a record is not proof by itself.
| Evidence | What to check next |
|---|---|
| The expected message was disabled or skipped | Check the email setting, trigger and recipient before changing the mail connection. |
| The site reported a send error | Read the error and check the configured transport, credentials or host restrictions. |
| The site reported a successful handoff | Look for the same message in your mail provider's activity log, if available. |
| The provider reports a bounce or rejection | Read the specific response. Confirm the address and fix the cause before resending. |
| The receiving server accepted it, but it is missing from the inbox | Check spam, quarantine and mailbox rules. Compare with another mailbox you control. |
WordPress's mail function reference distinguishes a successful send call from successful receipt. Likewise, a provider's delivery status may describe acceptance by the receiving server; check how that provider defines it. An inbox check supplies evidence that neither status can provide alone.
Check the sender and authentication together
Use a From address that your mail service is authorized to send from. For example, a store can use an authenticated address on its own domain and route replies to a monitored support mailbox. Putting a personal Gmail address in the From field does not make the website send through Gmail.
Ask whoever manages your domain and sending service to verify the provider's required DNS records and inspect authentication results on a received test message. SPF authorizes sending infrastructure for a domain; DKIM lets recipients verify a signature; DMARC checks whether a passing SPF or DKIM identity aligns with the visible From domain. Check your recipient providers' current requirements, such as Gmail's sender guidelines. Avoid replacing a shared DNS record without checking which other services depend on it.
If your host's default mail setup does not give you enough evidence to diagnose issues, consider a transactional mail provider with an activity log. Read WooCommerce's guide to email transport before choosing how to connect it. An SMTP connection test helps isolate the transport, but it does not exercise order status changes, templates or customer notifications.
Retest the actual customer journey
- Use a test order and mailboxes you control. On staging, isolate customer messaging and other live integrations.
- Reproduce the payment and order transition relevant to the missing notification.
- Record the WooCommerce outcome, provider outcome and inbox result for that same order.
- Open the message on a phone. Verify the order details, store identity and links; check that a reply reaches the intended support mailbox.
- If support must resend a real confirmation, confirm the recipient and whether it has already arrived. Log what was resent and when.
A useful handover records who owns mail configuration, where logs can be checked, and what to do if confirmations stop. Keep customer details and credentials out of shared screenshots. If several messages failed during an outage, reconcile the affected orders before sending replacements.
For broader regression testing, use the WooCommerce checkout testing checklist. If the message arrives but the order still fails to trigger fulfilment or account access, see the guide to testing post-purchase automations. Need help tracing a missing confirmation? Tell me what your store is seeing.
