Initial assessment without passwords Quote before intervention One accountable specialist from start to finish

Email Shipping Tax Analytics

WooCommerce Order Emails Do Not Reach Customers

Trace missing WooCommerce customer emails through order triggers, templates, wp_mail, SMTP acceptance, DNS authentication and mailbox delivery.

A completed order without customer email can fail at several handoffs: WooCommerce may not trigger the message, WordPress may fail to create it, SMTP may reject it, or the recipient provider may filter it after acceptance. The order status and email type determine which path should have run.

Do not resend every order email while diagnosing. Customers may receive several copies later if the original messages were delayed.

Choose one affected order

Record order ID, status timeline, customer email domain, expected email type and exact time. Verify the address stored on the order without exposing it in screenshots.

Compare a customer message such as Processing order with a New order administrator notification. If one arrives and the other does not, the transport may work while recipient, trigger or template differs.

Check whether the customer opted into an account email; transactional order email does not depend on marketing consent.

Confirm the email is enabled

Open WooCommerce > Settings > Emails and inspect the specific message. Confirm it is enabled, has an appropriate recipient where applicable and uses a valid sender name/address.

Customer emails take their recipient from the order. Administrator emails use configured recipient lists. Test addresses for accidental spaces, commas and old domains.

Do not change the sender to the customer’s address. Use a domain mailbox authorised to send from the website.

Check the triggering status

Different WooCommerce emails fire on Pending, On hold, Processing, Completed, Cancelled, Failed or refund transitions. Read order notes to confirm the transition occurred.

Changing an order to the same status may not re-trigger the email. Moving statuses back and forth can affect stock, fulfilment and integrations.

Use WooCommerce’s explicit resend action for one reconciled order after the underlying delivery path is repaired.

Verify message generation

Use a trusted mail-logging tool temporarily to record message ID, recipient domain, subject, status and error—never full personal content unless strictly required and protected.

Generation evidence:
order event time
WooCommerce email class
wp_mail called or not
SMTP message ID
immediate WordPress/SMTP error

If no generation attempt exists, inspect PHP errors, email template overrides and hooks that disable recipients.

Trace SMTP acceptance

Configure authenticated SMTP or a transactional provider instead of relying on unverified local PHP mail. Match the attempt with the provider activity log.

A 2xx SMTP response means the provider accepted responsibility, not that the inbox displayed the message. A 5xx rejection should provide a reason such as authentication, sender policy or invalid recipient.

Never place SMTP passwords or API keys in public logs. Rotate any secret exposed during diagnosis.

Check SPF, DKIM and DMARC alignment

DNS should authorise the actual sending service through SPF, sign messages with DKIM and publish an intentional DMARC policy. Inspect the received headers of a controlled test where possible.

Avoid creating multiple SPF TXT records at the same hostname; combine authorised services within DNS lookup limits. DNS propagation must be verified publicly.

The visible From domain should align with authentication according to the provider’s setup.

Inspect recipient filtering

Search spam, quarantine, mailbox rules and provider logs. Compare delivery to a controlled mailbox on another provider.

Large attachments, broken HTML, reputation or repeated resend bursts can trigger filtering. Keep transactional templates concise and do not embed sensitive order data unnecessarily.

If one recipient domain rejects mail, use its SMTP response rather than changing global WooCommerce settings blindly.

Repair and verify the lifecycle

Correct the trigger, template, recipient, SMTP authentication or DNS evidence identifies. Send one controlled order email and confirm generation, provider acceptance and inbox delivery.

Complete a test order and verify Processing, Completed, refund and account messages relevant to the store. Recurring care should alert on provider rejections and test transactional delivery after domain, SMTP, template and WooCommerce changes.

BEFORE YOU SEND THE REQUEST

Frequently asked questions.

Do you ask for passwords in the form?+

No. The public form never requests access. Secure credentials are requested only after the scope and quote are approved.

Who reviews the incident?+

The request goes to Jordi Ensenyat, founder of Code Barcelona and a WordPress specialist with more than 15 years of experience.

Is anything changed before the quote?+

No. Visible symptoms and scope are reviewed first. Intervention begins after approval and with a rollback path prepared.

Do you work internationally?+

Yes. WP Repair handles WordPress and WooCommerce incidents in English and Spanish through a remote service.

Assess my incident