WooCommerce Not Sending Emails? How to Fix It
WooCommerce not sending emails is one of the most disruptive WordPress problems a store owner can face. Missed order confirmations damage customer trust and increase support requests. Here is a systematic way to diagnose and fix it, including setting up SMTP2GO for reliable delivery.

Step 1: Confirm Which Emails Are Failing
WooCommerce sends several email types: New Order (to admin), Processing Order (to customer), Completed Order (to customer), Refunded Order, Customer Invoice, and others. First, figure out exactly which emails are missing.
Go to WooCommerce → Settings → Emails. Check that each email type is enabled. Click Send Test Email on each one.
If test emails arrive but real order emails do not, the issue is likely a specific trigger condition, not a broken delivery pipeline.
Step 2: Check PHP mail() Is Actually Sending
Install a plugin like Check Email or use the built-in test feature in WP Mail SMTP. Send a test email from WordPress.
If the test email never arrives, PHP’s mail() function is not working on your server. This is the single most common reason WooCommerce is not sending emails, so rule it out first.
Step 3: Set Up SMTP Delivery
When PHP mail() fails or lands in spam, switch to SMTP delivery. Install the SMTP2GO plugin and connect your account. Send a test email through the plugin to confirm the connection works.
Then send a real WooCommerce order test via WooCommerce → Settings → Emails. Once SMTP2GO is configured, WooCommerce emails route through the same wp_mail() function, so they use SMTP2GO automatically.
Step 4: Check the From Address
A mismatch between the From email address and the sending domain is a common reason emails land in spam. If WooCommerce sends from noreply@yourdomain.com but SMTP2GO is set up for a different domain, receiving servers may flag the message.
Check the From Name and From Address fields under WooCommerce → Settings → Emails. The From Address should match your real domain, and that domain needs verified SPF and DKIM records in SMTP2GO.
Step 5: Check Spam Filters
Sometimes emails send successfully but still land in spam. Ask the customer to check their spam folder first.
Then test deliverability with Mail Tester at mail-tester.com. It scores the email and flags specific problems. A score below 8 usually points to a missing SPF or DKIM record.
Step 6: Check WooCommerce Email Hooks
If emails worked before and stopped after a plugin update, a plugin may be interfering with WooCommerce’s email hooks. Temporarily deactivate recently updated plugins and test again.
Also check functions.php and any custom code for places where woocommerce_email action hooks might have been removed or overridden.
Step 7: Check Server Email Logs
If you have server access, check the mail log — usually at /var/log/mail.log on Linux. This log shows whether PHP mail() was called, whether SMTP2GO received the handoff, and what errors occurred. It is the most reliable source of truth for diagnosing delivery failures.
Common Reasons WooCommerce Stops Sending Emails
A few patterns show up repeatedly when WooCommerce is not sending emails:
- Shared hosting throttling — many hosts limit or block outgoing PHP mail(), which is why SMTP is the more reliable long-term fix.
- Plugin conflicts after updates — a security or caching plugin update can silently disable email hooks.
- Missing DNS records — SPF, DKIM, and DMARC records need to match the sending domain exactly, or major providers like Gmail and Outlook will filter messages into spam.
- Incorrect SMTP credentials — an expired API key or wrong port number causes silent failures that only show up in the server log.
Working through these seven steps in order, from testing individual email types to checking server logs, resolves the vast majority of cases where WooCommerce is not sending emails.
For complete WooCommerce email setup — including custom email templates, transactional email optimization, and customer notification workflows — a WordPress developer can configure reliable, professional email delivery for your store.