WooCommerce Engineering 2–3 min read

WooCommerce Emails Not Sending: Fix Checklist

WooCommerce emails not sending? Check SMTP, spam blocks, order-status triggers and WP-Cron with this practical fix checklist.

SMTP, spam filters, order-status triggers, and WP-Cron—fix the stack in order.


Symptoms vs root causes

What you see Likely cause
No email for any order SMTP / hosting mail blocked, or WP-Cron stuck
Only some statuses missing Email type disabled or custom status without a template
Customer says “nothing arrived” Spam folder, wrong address, or provider deferral
Admin gets mail, customer does not Customer template off; admin “New order” still on

Step 1: Confirm WooCommerce email settings

  1. Go to WooCommerce → Settings → Emails.
  2. Open Processing order, Completed order, New order (admin), and any custom templates you use.
  3. Ensure each needed email is Enabled, recipient fields are correct, and “From” name/address look legitimate.
  4. Place a test order (or use an order-actions “Resend” if available) after each change.

Custom order statuses often need their own email wiring. Check the notification’s trigger and enabled state after every custom-status change.

Step 2: Replace PHP mail with SMTP

Shared hosts frequently throttle or silently drop mail(). Use an authenticated SMTP plugin or transactional provider.

  • Match the From domain to a domain you control.
  • Publish SPF, DKIM, and preferably DMARC for that domain.
  • Send a test email to Gmail and a corporate inbox; check spam.

Step 3: Logging and conflict checks

  • Enable an email log so you can see attempted versus delivered.
  • Temporarily disable security or email-verification plugins that intercept checkout.
  • Switch to a default theme briefly if a custom checkout template breaks hooks.
  • Confirm the customer email on the order is valid.

Step 4: WP-Cron and queues

If emails queue but never leave, WP-Cron may be disabled (DISABLE_WP_CRON) without a system cron replacement, or a heavy site may starve cron. Set a real server cron to hit wp-cron.php, or use an Action Scheduler-aware host setup.

Do not “fix” deliverability with spoofed From addresses

Sending as @gmail.com from your server will fail SPF checks. Use your domain or the provider’s verified sender only.

After mail works: fix shipping surprises that trigger support mail storms (wrong shipping cost), and keep guest buyers able to view orders (guest order access).

FAQ: WooCommerce emails not sending

Why did WooCommerce emails suddenly stop?

Common triggers include expired SMTP credentials, a security-plugin update, or WP-Cron stopping after a migration.

Is WooCommerce broken if PHP mail works in a test plugin?

Not necessarily—check whether the specific order-status email is enabled and whether a custom status fires that template.

Do I need a paid email API?

Not always. Authenticated SMTP can work at low volume. Transactional APIs scale better and usually improve inbox placement.

Customers only miss Completed emails

Open the Completed order template and confirm it is enabled. Some stores stay on Processing and never flip to Completed—so the template never fires.

Need WooCommerce help beyond this fix?

Custom checkout, shipping, catalog rules, and store architecture—scoped delivery, not endless hourly tickets.

WooCommerce development

Also: WordPress maintenance · shipping troubleshooting

Share this article

Related posts

Discussion

0 comments

No comments yet.

Have a technical question, correction or a different interpretation? Add to the discussion.

Leave a reply