WooCommerce SMTP fix
WooCommerce SMTP plugin conflict fix.
Use this when WooCommerce order emails pass through multiple mail plugins, duplicated hooks, conflicting From headers, or the wrong SMTP provider.
When to use this fix
- Two SMTP plugins are active or recently switched.
- WooCommerce emails use a different From address than normal WordPress emails.
- Provider logs show duplicate attempts or different sender identities.
- SMTP test email works, but WooCommerce order emails fail or use the wrong provider.
When not to use this fix yet
- The WooCommerce email template is disabled.
- The order status does not trigger the selected email.
- No SMTP plugin is active and the host is using default PHP mail.
- Provider accepted the message and only the recipient inbox is filtering it.
WooCommerce path
| Stage | Conflict-specific check |
|---|---|
| Order event | Confirm the order status actually fires the WooCommerce email. |
| Email template | Verify the template is enabled before changing SMTP plugins. |
| Recipient | Check whether the right customer/admin address is being sent to. |
| wp_mail | List every plugin, snippet, or hook that touches wp_mail or PHPMailer. |
| SMTP | Confirm exactly one SMTP plugin/provider handles the order email. |
| Inbox | If one provider accepted the message, inspect headers and delivery filtering. |
Conflict evidence matrix
| Evidence | Conflict type | First correction |
|---|---|---|
| WP Mail SMTP and FluentSMTP both active | Double mail override | Keep one SMTP plugin active. |
| Test email uses Provider A, order email uses Provider B | Provider mismatch | Check plugin priority and WooCommerce From filters. |
| Duplicate provider log entries | Duplicate send/hook behavior | Disable overlapping mail plugins and snippets. |
| Order email From differs from configured SMTP From | Header override | Force one domain-based From in SMTP plugin and WooCommerce. |
| Only WooCommerce emails fail authentication | WooCommerce-specific sender mismatch | Compare From and Return-Path in provider logs. |
Concrete conflict examples
| Setup found | Why it breaks WooCommerce mail | Clean correction |
|---|---|---|
| WP Mail SMTP + FluentSMTP both active | Both plugins can override PHPMailer settings, From headers, or provider routing. | Keep one SMTP plugin active and retest one order email. |
| SMTP Mailer plugin + custom snippet | The snippet can replace host, port, auth, or From after the plugin config loads. | Remove the snippet or move all settings into the chosen plugin. |
| Old mu-plugin mail hook | mu-plugins load early and may keep forcing legacy SMTP settings. | Inspect wp-content/mu-plugins and disable stale mail overrides. |
phpmailer_init in theme or snippets plugin | The hook can rewrite SMTP, From, Reply-To, or Return-Path only during sends. | Search for phpmailer_init and consolidate to one mail path. |
| WooCommerce email filter changes headers | Order emails may use different From/recipients than normal WordPress test emails. | Compare provider log headers for a real order resend. |
Before / after plugin state
Before
Active plugins:
- WP Mail SMTP
- FluentSMTP
- old SMTP snippet in functions.php
WooCommerce From:
store@gmail.com
After
Active mail path:
- One SMTP plugin only
WooCommerce From:
orders@example.com
Test order:
provider log shows one accepted message
Verification checklist
- List every active SMTP/mail/deliverability plugin.
- Search the theme and snippets plugin for
wp_mail,phpmailer_init, and WooCommerce email filters. - Disable all but one SMTP path.
- Send a plain SMTP test email.
- Resend one WooCommerce order email and verify one provider log event.
- Confirm From, Reply-To, and Return-Path are expected.
Common false positives
- SMTP test works can still hide WooCommerce-specific From overrides.
- Inactive old plugin may leave constants, snippets, or mu-plugin mail hooks behind.
- Provider accepted one test does not prove WooCommerce used the same provider.