Skip to content
Rescue 404

Website Email Problems

WooCommerce Emails Not Sending

Intermediate Risk: medium

Last reviewed

Hosting access may not be needed Database access usually not needed

Direct answer

WooCommerce order and customer emails fail when a notification is disabled or mistargeted, the order never reaches the status that triggers mail, wp_mail/SMTP cannot hand off the message, or inbox providers reject unauthenticated From addresses—confirm the email is enabled and logged first, then fix transport and SPF/DKIM before rewriting templates.

Missing new-order, processing, completed, or customer invoice emails freeze fulfillment even when checkout and payments still work. This guide is about WooCommerce transactional mail—not generic WordPress resets or contact-form leads—so you diagnose trigger, template, and delivery layers in that order. Revenue stores that keep losing confirmations should escalate to Request Rescue and plan ongoing store ops on Commerce Systems once mail is stable.

Intermediate

Key facts

Verifiable numbers and definitions — each claim links to its source.

  • WooCommerce sends store email through WordPress wp_mail(), so many 'not sending' cases are host mail delivery problems rather than WooCommerce template bugs. (WooCommerce email troubleshooting)
  • Orders still in Pending Payment do not trigger WooCommerce order emails until payment succeeds and the order status advances. (WooCommerce email troubleshooting)
  • WooCommerce recommends SPF, DKIM, and DMARC on your sending domain; From addresses on public domains like Gmail or Yahoo are likely to be marked spam or blocked. (WooCommerce email authentication)

What the error means

WooCommerce sends store mail through WordPress `wp_mail()` when an order (or related event) hits a status or action that maps to a notification under WooCommerce → Settings → Emails—New order, Processing order, Completed order, Customer invoice, Failed order, and similar. Generation and delivery are separate: the email can be disabled, skipped (empty recipient), never fired because the order stayed Pending, handed to PHP mail/SMTP and rejected, or accepted by the server then spam-foldered for bad SPF/DKIM. Contact-form and core password-reset mail share the same transport but different settings screens; fixing only a form SMTP plugin without checking WooCommerce email toggles and order status leaves shoppers silent after purchase.

Common symptoms

  • Customer never receives order confirmation or processing/completed emails after a paid order
  • Admin “New order” mail missing while the order appears correctly in WooCommerce → Orders
  • WooCommerce → Status → Logs (transactional-emails or mail plugin) shows failed, skipped, or disabled sends
  • Resend order email from the order screen does nothing or fails the same way
  • Test emails from SMTP plugins succeed but real order notifications do not (or the reverse)
  • Messages arrive for Gmail admins but not for customers on Microsoft 365 (or land only in spam)
  • Orders stuck in Pending payment never fire the emails expected after Processing

Most likely causes

  1. 01 Individual WooCommerce email notifications disabled, wrong recipient, or empty To field
  2. 02 Order status never reaches the trigger (payment/webhook left the order Pending or Failed)
  3. 03 Host blocks PHP mail() or outbound SMTP; no authenticated SMTP/API sender configured
  4. 04 From address uses a free Gmail/Yahoo address or a domain not aligned with SPF/DKIM
  5. 05 Plugin/theme conflict or fatal during email generation (HTML warnings mixed into send)
  6. 06 Email customizer, multilingual, or PDF-invoice extension breaking the default template hook
  7. 07 Action Scheduler / WP-Cron delay or failure deferring transactional sends indefinitely

What changed before the problem started

  • WooCommerce, email customizer, SMTP, or security plugin was updated
  • Host migrated or disabled unauthenticated PHP mail after a spam complaint
  • From address, admin email, or DNS SPF/DKIM records were edited
  • Payment gateway or webhook change left orders in Pending instead of Processing
  • SMTP credentials rotated or transactional provider API key expired
  • New caching, firewall, or “disable cron” plugin interfered with scheduled email actions

Troubleshooting steps

  1. 01

    Confirm which notification should have fired for the order status

    Open the affected order and note its status (Pending, Processing, Completed, Failed). In WooCommerce → Settings → Emails, verify the matching notification is enabled and lists the correct admin or customer recipient. Disabled or blank-recipient emails never leave the store no matter how healthy SMTP looks.

  2. 02

    Read transactional email logs and order notes before changing SMTP

    Check WooCommerce → Status → Logs for transactional-emails (or your mail logger) around the order time, and skim order notes for “email sent/failed” lines. Sent-but-not-received points at spam/DNS; failed/disabled/skipped points at settings or transport; no log entry often means the trigger never ran.

  3. 03

    Send a WooCommerce test email and one controlled resend

    From the email settings screen (or a reputable SMTP plugin), send a test to an address you control. From a known good test order, use Resend once—do not spam real customers. Capture whether the log shows success and whether the message hits inbox or spam.

  4. 04

    Wire authenticated SMTP or a transactional API with a domain From address

    If PHP mail fails or is unreliable, configure SMTP/API (SendGrid, Mailgun, SES, Postmark, Workspace, Microsoft 365, etc.) with a From address on your store domain. Keep one sender path; competing SMTP plugins often cancel each other.

  5. 05

    Verify SPF/DKIM (and ideally DMARC) for the sending domain

    Publish the provider’s SPF include and DKIM keys at DNS, and avoid duplicate conflicting SPF TXT records. Misaligned From addresses are a top reason order mail vanishes for customers while admins still see occasional deliveries.

  6. 06

    Conflict-test only WooCommerce plus the mail plugin if generation fails

    Prefer staging. On production, only in a low-traffic window with a backup taken. If logs show fatals during send, leave WooCommerce and the SMTP plugin active on a default theme, then re-enable email customizers and other plugins in batches until the failure returns.

When to stop troubleshooting

Stop DIY SMTP roulette if paid orders keep shipping without customer confirmations, you cannot tell whether mail is failing at trigger vs delivery, the host has suspended outbound mail for abuse, or peak sales need a reliable sender today. Dispatch Request Rescue with order IDs, email log excerpts, and SMTP errors; for ongoing WooCommerce reliability (checkout, payments, and transactional mail), enroll in Commerce Systems so store ops and bundled website Care replace one-off fire drills.

Information to collect before requesting help

  • 01 Order ID(s), statuses, and which email types are missing (new order, customer processing, etc.)
  • 02 Screenshot of WooCommerce → Settings → Emails for the affected notifications
  • 03 Transactional email or SMTP log lines with timestamps (secrets redacted)
  • 04 From address in use and whether SPF/DKIM are published for that domain
  • 05 Hosting company and any mail-suspension or port-25 notices
  • 06 Recent WooCommerce, SMTP, customizer, or DNS changes
  • 07 Whether gateway charges match Processing orders or orders stay Pending

How a professional repairs the problem

We prove whether WooCommerce never triggered the notification, handed it off and failed transport, or lost the message to filtering—then enable the right emails, repair order-status/webhook gaps, and put authenticated SMTP/API plus SPF/DKIM in place. We retest admin and customer templates on a controlled order, leave logging on, and—when the store cannot afford another silent fulfillment outage—hand off into Commerce Systems for ongoing store operations with website Care included, or finish with Request Rescue stabilization if you only need the break-glass repair.

Frequently asked questions

Is this the same as WordPress emails not sending? +
Related transport, different starting point. Use this guide when order/customer notifications fail. Use the general WordPress emails guide when resets, forms, and WooCommerce all fail together—or the contact-form guide when only lead forms are silent.
Why does the order exist but no email went out? +
Often the notification is disabled, the recipient is blank, the order never hit the triggering status, or Action Scheduler deferred the send. Check status and Logs before blaming DNS.
Can caching break WooCommerce emails? +
Page cache rarely stops server-side mail directly, but aggressive “optimization” or disabled cron can delay Action Scheduler. Focus on cron health and mail transport rather than purging product pages alone.
Should I install multiple SMTP plugins? +
No. One authenticated sender path is enough. Two SMTP plugins fighting for `phpmailer_init` create intermittent failures that look random.
Customers say mail is in spam—is that “not sending”? +
Delivery and inbox placement differ. If logs show sent, fix From alignment and SPF/DKIM/DMARC. If logs show failed, fix SMTP/hosting first.
When do I need Commerce Systems instead of another plugin tweak? +
When missing order mail is part of a broader store reliability problem—checkout, gateways, cron, and fulfillment—or you need a retainer that includes website Care plus store ops. Emergency outages still start with Request Rescue.

Repair dispatch

Still Need Help Fixing Your Website?

If you are not comfortable editing website files, changing server settings, repairing a database, or troubleshooting a live website, professional help may prevent additional damage or downtime. We will review the problem before accepting the repair.

  • You will receive a clear explanation of the likely cause.
  • We will tell you if the issue falls outside our repair scope.
  • No additional work will be performed without approval.
  • A backup should be created whenever access and website condition allow it.

Do not share passwords through an unencrypted contact form — use Password Pusher (self-destructing link). Prefer a dedicated Rescue 404 admin account, not your personal owner login; if you cannot create one yet, we will add ours after repair.

Written by Josh

Last reviewed

Platform note: Full rescue available for WordPress and self-hosted sites. Wix, Squarespace, Webflow, Weebly, and similar closed builders have very limited backend access — fixes may not be possible. I will tell you honestly before we start.