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

EvidenceLikely causeFirst check
Provider log says acceptedRecipient-side filteringCheck spam, quarantine, and recipient rules.
Provider log says bouncedRecipient rejectionRead the bounce reason before editing WooCommerce.
Provider has no eventWooCommerce or transport never sentReturn to template/status/wp_mail checks.
Only Gmail recipients miss itSender authentication/reputationCheck SPF, DKIM, DMARC, and From-domain alignment.
Customer email address typoRecipient resolution failureCorrect billing email and resend order email.
Message arrives to admin but not customerCustomer template/recipient/delivery pathSeparate admin New order from customer order emails.

WooCommerce path

StageWhat to verify
Order eventOrder status fired the customer email event.
Email templateCustomer email template is enabled and not overridden incorrectly.
RecipientCustomer billing email is correct and deliverable.
wp_mailWooCommerce generated the email and called WordPress mail.
SMTPProvider accepted, bounced, deferred, or never saw the message.
InboxSpam, 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