How to Diagnose Duplicate WooCommerce Transactional Emails
A practical guide to finding the plugin, order event, or PDF attachment workflow that sends customer emails twice.
Duplicate WooCommerce transactional emails usually appear after a plugin update, order edit, PDF invoice workflow, or custom hook change. The symptom is simple: a customer receives the same completed-order or invoice email twice. The root cause is rarely simple.
Start with the business event
Do not start by blaming SMTP. First identify the event that should have sent the email: order completed, order processing, refund, invoice, customer note, quote approval, or restock. Then check how many email attempts were generated for that same event and recipient.
Look for plugin source overlap
Many duplicate emails happen when WooCommerce sends the normal transactional email and a second plugin triggers the same WooCommerce email class again. PDF invoice and quote plugins are common places to check because they add attachments and sometimes resend order emails after admin edits.
What to record
- Order ID and status transition.
- Recipient hash and normalized subject hash.
- Timestamp of each email attempt.
- Attachment count and PDF filename hash.
- Plugin/theme source signature.
How Mail Guard OS helps
Mail Guard OS correlates WooCommerce events and email attempts. It flags duplicate signatures, missing expected notifications, and emails that were sent without required attachments. The goal is not to show a raw stack trace first. The goal is to tell the merchant what happened and what to fix.