WooCommerce delivery error
WooCommerce customer email not received.
This is a delivery-stage problem only if WooCommerce generated the email and the SMTP provider accepted it. Otherwise, fix the earlier trigger or transport stage first.
Failure stage
WooCommerce generated email: order notes or provider log confirms a message event.
SMTP/provider accepted: provider log shows accepted or delivered status.
Likely failure: recipient filtering, SPF/DKIM/DMARC alignment, typo, quarantine, or forwarding policy.
Not proven yet: WooCommerce trigger failure if no provider log exists.
Evidence-to-cause matrix
| Evidence | Likely cause | First check |
|---|---|---|
| Provider log says accepted | Recipient-side filtering | Check spam, quarantine, and recipient rules. |
| Provider log says bounced | Recipient rejection | Read the bounce reason before editing WooCommerce. |
| Provider has no event | WooCommerce or transport never sent | Return to template/status/wp_mail checks. |
| Only Gmail recipients miss it | Sender authentication/reputation | Check SPF, DKIM, DMARC, and From-domain alignment. |
| Customer email address typo | Recipient resolution failure | Correct billing email and resend order email. |
| Message arrives to admin but not customer | Customer template/recipient/delivery path | Separate admin New order from customer order emails. |
WooCommerce path
| Stage | What to verify |
|---|---|
| Order event | Order status fired the customer email event. |
| Email template | Customer email template is enabled and not overridden incorrectly. |
| Recipient | Customer billing email is correct and deliverable. |
| wp_mail | WooCommerce generated the email and called WordPress mail. |
| SMTP | Provider accepted, bounced, deferred, or never saw the message. |
| Inbox | Spam, quarantine, forwarding, and mailbox rules explain missing mail only after acceptance. |
Do this first / do not do this yet
Do this first
- Find the SMTP/provider log for the exact customer recipient.
- Check whether the provider accepted, bounced, deferred, or never saw the message.
- Confirm the customer billing email is correct.
- Check spam/quarantine only after provider acceptance is proven.
Do not do this yet
- Do not change WooCommerce templates if provider logs show accepted delivery.
- Do not switch SMTP plugins before reading the provider log.
- Do not blame DMARC if WooCommerce never generated the email.
- Do not test only with your own inbox; test the customer's recipient domain type.
Bad input example
Customer says: no order email
Provider log: not checked
WooCommerce template: enabled
From email: store@gmail.com
Action taken: changed SMTP plugin twice
Corrected pattern
Provider log: accepted to customer@example.com
From email: orders@store-domain.com
SPF/DKIM: aligned with sending provider
Next check: recipient spam/quarantine and mailbox rules
Fallback: resend to alternate customer address and compare logs