Why WooCommerce Emails Stop Working
WooCommerce sends emails through WordPress's wp_mail() function, which uses PHP's mail() by default. Most shared hosting providers block or restrict this. The result: emails look like they're sending but never arrive.
This is one of the most common WooCommerce support issues, and it's almost always an SMTP configuration problem — not a WooCommerce bug.
Step 1: Check WooCommerce Email Settings
Go to WooCommerce → Settings → Emails.
Confirm:
- "New order" notification is enabled and has a valid recipient address
- "Customer processing order" is enabled
- The "From" email address is from your actual domain (not a Gmail/Hotmail address)
Step 2: Send a Test Email
Still in WooCommerce → Settings → Emails, open any email template and click "Send test email."
- If the test arrives → WooCommerce is working, the problem is order status triggers
- If the test doesn't arrive → WordPress mail delivery is broken
Step 3: Install WP Mail SMTP
This plugin replaces PHP mail with a proper SMTP connection. It's free and solves 90% of WordPress email problems.
WooCommerce → Plugins → Add New → search "WP Mail SMTP"
Recommended SMTP providers (free tier):
| Provider | Free limit | Best for |
|---|---|---|
| Brevo (Sendinblue) | 300/day | Most sites |
| Mailgun | 100/day | Developers |
| SendGrid | 100/day | Higher volume |
| Gmail SMTP | 500/day | Personal projects |
After installing, go to Settings → WP Mail SMTP. Choose a mailer (e.g., "Other SMTP" for Brevo or Mailgun). Enter the SMTP host (e.g., smtp-relay.sendinblue.com for Brevo), port (587), encryption (TLS), and the username/password from your provider’s dashboard. Then use the plugin’s built-in email test to verify.
Step 4: Check Spam Folders
Ask a customer to check spam. Gmail especially filters transactional emails from shared hosting IPs.
If emails land in spam:
- Add an SPF record to your domain's DNS. To do this, log into your domain’s DNS settings (usually through your hosting control panel or domain registrar). Your email provider will give you the exact SPF value to add.
- Add a DKIM record (your email provider will generate this and tell you where to paste it).
- Make sure your "From" address matches your domain.
Step 5: Check Order Status Flow
WooCommerce only sends emails on specific status changes:
| Status change | Email sent |
|---|---|
| Pending → Processing | Customer: "Order received" |
| Processing → Completed | Customer: "Order complete" |
| Any → On-hold | Customer: "Order on hold" |
If orders are jumping straight to "Completed" (common with downloadable products or some payment gateways) — the "Processing" email never fires.
Check: WooCommerce → Orders — what status do new orders land in?
Step 6: Check for Plugin Conflicts
Some plugins hook into WooCommerce email sending and break it accidentally. To test:
- Deactivate all plugins except WooCommerce
- Place a test order
- If email arrives → reactivate plugins one by one to find the conflict
Step 7: Check the Error Log
Add to wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
Place a test order and check wp-content/debug.log for any mail-related errors.
The Fast Fix
In 9 out of 10 cases: install WP Mail SMTP, configure it with a free Brevo or Mailgun account, done. Takes about 15 minutes.
If you've followed all these steps and your emails still aren't arriving, or you'd rather not do it yourself, that's when we can help. Describe what you're seeing here and we'll diagnose it quickly.