Free WordPress site audit. Public-site review and a fixed quote when work is appropriate. Request a rescue audit →

WooCommerce transactional mail

WooCommerce Emails Are Not Sending

Order, failed payment, and reset emails are WooCommerce actions, not the contact form. Authentication still lives in DNS. The store can also skip the email because the order status never changed.

Direct answer

WooCommerce builds a WC_Email object and calls wp_mail() when an order status hook fires. If the payment gateway leaves the order on Pending payment, the “new order” and “processing” emails never run. If the hook fires and the inbox still never sees it, the failure is the same as other WordPress mail: PHP mail or a From domain that fails SPF/DKIM/DMARC.

WooCommerce-specific checks

  1. WooCommerce → Settings → Emails. Confirm the relevant email is enabled and the recipient is not only an old admin address.
  2. Open the order. Note the status history. No transition means no email, even if checkout “succeeded” in the customer’s browser.
  3. Do not place a real paid order to test. Use a staging store, a $0 test product, or the gateway’s sandbox. Public checkout diagnostics must not charge a card.
  4. Check whether Action Scheduler has failed jobs. WooCommerce often queues mail. A stuck queue looks like “emails died after the update.”
  5. Run the email checker on the store domain. Then send one staging test and read Gmail’s original headers.

Why Woo authentication fails more often

Stores send as orders@store.com while SPF only lists the marketing ESP, or the From address is the admin Gmail. Transactional volume also trips filters faster than a contact form. Align the From domain with the SMTP account and the published SPF/DKIM.

Checkout itself can be fine while mail is broken. If the customer cannot pay, use checkout not working.

From $129 · final quote after review. Also: WooCommerce development · WordPress mail

Broken or slow WordPress? Get a free site audit and a fixed quote after review.
Free audit