WooCommerce Orders Completing, But No Emails Arrive?

The order shows up correctly in wp-admin, payment went through, but the customer never got a confirmation email — and you may not have received your own new-order notification either. This is almost never a WooCommerce bug; it's a mail-delivery problem sitting underneath WooCommerce, and it usually means every outgoing email from the site is affected, not just orders.

WooCommerce order confirmation email icon blocked partway between the server and the customer's inbox
The order exists and the payment cleared — the email simply never left the server, or never arrived.

What is the problem?

WooCommerce doesn't send email itself — it hands the message to WordPress's built-in wp_mail() function, which in turn depends on your server's mail configuration (PHP's mail() function by default) to actually deliver it. When order emails go missing, the order and payment logic that WooCommerce controls directly are almost always fine; the failure is one layer down, in how the server sends mail, or in a WooCommerce email setting that's been switched off.

Quick answer: check whether other WordPress emails (password resets, contact form submissions) are also failing. If yes, this is a site-wide mail-delivery problem, and setting up proper SMTP is the fix. If only WooCommerce order emails are affected, check WooCommerce → Settings → Emails first for a disabled email type.

It's worth separating two different failures that look identical from the outside: the email never being sent at all, and the email being sent but landing in spam or being silently rejected by the receiving mail server. Both need to be ruled out, and the fix for each is different.

Common symptoms

  • The order appears correctly under WooCommerce → Orders, with the right status and payment confirmed, but no confirmation email reached the customer
  • You, as the store owner, also don't receive the new-order admin notification email
  • Password reset emails, contact form submissions, or other WordPress emails are also failing to arrive, suggesting a site-wide mail problem rather than something specific to WooCommerce
  • Emails arrive for some order statuses (like “processing”) but not others (like “completed” or “refunded”)
  • The problem started right after a host migration, a PHP version change, or installing a new security or optimization plugin
  • Emails do send but consistently land in spam or promotions folders rather than the inbox

Why does this happen?

Most shared hosting either blocks PHP's default mail() function outright, heavily rate-limits it, or sends mail without proper authentication (no SPF, DKIM or DMARC alignment with the sending domain) — all of which receiving mail servers like Gmail and Outlook treat with suspicion and often reject silently, with no bounce notification to tell you it failed. WordPress and WooCommerce have no visibility into that rejection; from their side, the email was “sent” the moment it was handed off, whether or not it actually arrived anywhere.

Separately, WooCommerce's own email settings let each notification type (new order, processing, completed, on-hold, cancelled, refunded, and more) be individually enabled, disabled, or customized. It's a common and easy-to-miss cause when only one specific email type stopped, since the rest continuing to work makes a global mail failure feel unlikely at first glance.

Common technical causes

  • No SMTP configured, leaving the site dependent on PHP's mail() function, which many hosts block, throttle, or send unauthenticated
  • Missing or misconfigured SPF, DKIM or DMARC records for the sending domain, causing receiving servers to reject or spam-filter the message even when it does leave the server
  • A specific WooCommerce email type disabled under WooCommerce → Settings → Emails, sometimes toggled off accidentally during a settings review
  • A plugin conflict or fatal error occurring after the order is created but before the email-sending hook runs, silently interrupting the process
  • WP-Cron not firing reliably on a low-traffic site, delaying any email queued to send via a scheduled task
  • An SMTP plugin configured with expired or incorrect credentials after a password change or provider migration that was never updated in WordPress
  • The “from” email address using a domain the sending service isn't authorized to send as, which many transactional email providers reject outright

How to diagnose it

  1. Confirm the order genuinely exists and is correctly statused under WooCommerce → Orders — this rules out a checkout failure being mistaken for an email failure.
  2. Check WooCommerce → Settings → Emails and confirm the specific email type in question is enabled, and that its recipient field (for admin notifications) is correct.
  3. Test whether other WordPress emails work — trigger a password reset, for instance. If that also fails to arrive, the problem is site-wide mail delivery, not WooCommerce-specific.
  4. Install a free mail-logging plugin (such as WP Mail Logging) to see exactly what WordPress attempted to send and whether it reported success or an error — this is far faster than guessing.
  5. Check the spam/junk folder on the receiving end, and if possible, check the message headers of any email that did arrive for SPF/DKIM alignment failures.
  6. If an SMTP plugin is already installed, use its built-in test-email feature to confirm current credentials are actually valid, rather than assuming a past working setup still is.

How to fix it, step by step

  1. If no SMTP is configured, set one up using a proper transactional email service (Brevo, SendGrid, Amazon SES, or your hosting provider's own SMTP) via a plugin like WP Mail SMTP, rather than relying on PHP's default mail function.
  2. Verify the sending domain's SPF, DKIM and DMARC records are correctly set with whichever service you're sending through — most providers give you the exact DNS records to add.
  3. Re-enable any disabled WooCommerce email type under WooCommerce → Settings → Emails, and send a test order to confirm it now fires.
  4. Update expired or incorrect SMTP credentials if a provider migration or password change was the cause, then send a test email through the plugin's own testing tool.
  5. Set up a real cron trigger (a server-level cron job hitting wp-cron.php on a schedule) if WP-Cron reliability was the issue, rather than depending on visitor traffic to fire it.
  6. Place a real test order after each change rather than relying on a generic test-email button alone, since WooCommerce's own email templates and triggers are what actually need confirming.

When this needs professional help

Checking WooCommerce's email settings and sending a test email through an existing SMTP plugin is realistic to do yourself. It's worth bringing in a developer when:

  • You need SMTP set up from scratch, including choosing a provider and configuring DNS records correctly
  • Emails are sending but consistently landing in spam despite SPF/DKIM being present, which needs a deeper deliverability and domain-reputation check
  • A mail-logging plugin shows a PHP error interrupting the send, which needs tracing back to the specific plugin or code responsible
  • You need this fixed with confidence before a launch or a high-traffic sales period, not diagnosed through trial and error

How I can help

Missing order emails are a trust problem as much as a technical one — customers who don't get a confirmation start emailing support or opening disputes, which costs more time than the original fix would have. I set up proper SMTP with authenticated DNS records, confirm every WooCommerce email type actually fires with a real test order, and check deliverability rather than just confirming an email left the server.

FAQ

Questions about missing WooCommerce emails

What people ask before sending over the store.

Is this the same problem as WordPress not sending emails generally?

Often the same root cause — hosting blocking PHP mail, or no SMTP configured — but worth confirming which is actually happening. If password resets and contact form emails also fail, it's a site-wide mail problem. If only order emails fail while other WordPress emails work, look at WooCommerce's own email settings and templates specifically, not the server-level mail setup.

Are the orders actually going through if the emails don't arrive?

Usually yes — check WooCommerce → Orders in wp-admin to confirm. Order emails are a notification sent after the order is already created; a missing email does not mean the order itself failed, though it's worth ruling out a separate checkout problem if orders themselves also seem to be missing.

Why do some order emails send but not others?

Each WooCommerce email type (processing, completed, on-hold, refunded, and more) can be individually enabled or disabled under WooCommerce → Settings → Emails. It's common for one specific email to be accidentally disabled, or for a status-change automation from another plugin to skip the status that normally triggers it.

Could this be a spam filter, not a sending problem?

Yes, and it's worth ruling out early. Check the customer's spam folder, and separately check whether your sending domain has SPF, DKIM and DMARC records set up correctly — missing authentication records are one of the most common reasons legitimate order emails land in spam or get silently dropped by the receiving mail server.

Does installing an SMTP plugin fix this permanently?

For most sites, yes — routing email through a proper SMTP service instead of your server's own PHP mail function is the single most reliable fix, since PHP mail is frequently blocked or unauthenticated on shared hosting. It needs to be configured correctly with valid credentials and a verified sending domain to actually work, not just installed.

Can a caching or optimization plugin block emails from sending?

Indirectly, yes. Some aggressive cron-job optimization settings can delay or skip the scheduled task WooCommerce sometimes relies on to queue emails, particularly on low-traffic sites where WordPress's default pseudo-cron depends on visitor traffic to trigger it.

Available for new projects

NEXT STEP

Need help fixing this WordPress issue?

Send me your website and I'll help identify the problem — no charge just to take a look. Based in Bangladesh, working with clients worldwide, with a reply within one working day.

  • Reply within one working day
  • Fixed quote before work starts
  • UK, EU and US hours covered