A customer places an order. WooCommerce records it, the payment succeeds, and the confirmation email never appears. Installing an SMTP plugin can help—but only if the failure is in the part of the journey that the plugin controls.
This guide walks through that journey, then shows how to configure WP Mail SMTP Pro and Lumo Mail SMTP. The useful comparison is not which plugin has the longest feature list. It is whether you can identify what happened to a message, configure the right sender, and recover from a failure without creating another one.
What this guide is based on
We reviewed Lumo Mail SMTP 2.17.3 source code, relevant WP Mail SMTP Pro 4.9.0 logging code, and official WordPress, WP Mail SMTP and Google documentation. This is a configuration and code-review guide, not an inbox-placement benchmark. Lumo Mail SMTP is our product; this is not an independent review. Features and plan entitlements can change.
1. Find the broken step before changing the plugin
There are four different questions hiding inside “WordPress email is not working”: Did the application create the message? Did the sending service accept it? Did the recipient server accept it? Did it reach the inbox rather than spam? A green status at one step cannot answer all four.
Conceptual diagram: transport acceptance, recipient delivery and inbox placement are separate events.
WordPress explicitly warns that a successful wp_mail() return value does not prove that the recipient received the email. In Lumo’s queued send path, a successful return can mean the message was added to the queue. It has not necessarily contacted an SMTP server yet.
| Status or observation | What it tells you | What to check next |
|---|---|---|
| No expected message in the log | The event may not have generated mail, logging may be disabled, or another route may bypass this plugin. | Check the form, order status, notification setting and actual sending method. |
| Queued / pending | Work has been scheduled, not completed. | Inspect queue processing and WordPress cron. |
| Sent / accepted | The configured transport reported success. | Inspect the provider’s delivery events and recipient mailbox. |
| Delivered, when supported | The provider has reported delivery to a recipient server. | Check inbox versus spam; delivery is not a placement guarantee. |
| Opened | A tracking mechanism recorded activity. | Do not treat it as proof that a person read the message. |
For a missing WooCommerce confirmation, first check that the relevant email is enabled and that the order reached the status that triggers it. An SMTP connection cannot repair a notification that was never generated. Also check whether the affected extension uses wp_mail(), its own API, or a separate service.
2. Choose the sender and service first
The plugin connects WordPress to a mail service. The service supplies the SMTP endpoint or API, sending limits and delivery infrastructure. Decide which service will handle transactional mail before choosing connection settings. A plugin purchase does not automatically include an unlimited email-sending account.
Use an address on a domain you control, such as notifications@your-domain.example. Verify that identity with your provider.
For a contact form, keep the verified site address in From and put the visitor’s address in Reply-To. Pretending to send from the visitor’s Gmail address creates an authentication problem.
Choose a supported API or OAuth connection when appropriate. For conventional SMTP, obtain the exact host, port, encryption mode and credentials from the provider.
Activate only one plugin responsible for routing normal WordPress mail. Two SMTP plugins can compete over the same hooks and make the result harder to explain.
Authenticate the domain, not just the mailbox
SPF authorizes sending infrastructure, DKIM provides a signature, and DMARC connects authentication to the visible From domain through alignment. Follow your provider’s exact DNS instructions; do not paste a generic SPF record over existing records used by other services.
Google’s email sender guidelines distinguish requirements for all senders from stricter bulk-sender requirements. For a production domain, configure SPF, DKIM and DMARC correctly even when your volume is small. Introduce an enforcement policy only after checking legitimate sending sources and alignment. Authentication helps establish identity; it does not guarantee inbox placement.
3. WP Mail SMTP Pro vs Lumo Mail SMTP: what to compare
| Requirement | WP Mail SMTP Pro | Lumo Mail SMTP |
|---|---|---|
| Basic connection | Provider-specific mailers and an Other SMTP setup documented by the vendor. | SMTP plus provider integrations; the reviewed registry includes Gmail, Outlook, Brevo, SendGrid, Mailgun, Postmark and Amazon SES. |
| Mail visibility | Pro email logs; delivery verification depends on the mailer and supported provider integration. | Email logs, test interface and reporting; do not interpret a basic sent status as confirmed inbox delivery. |
| Recovery | Additional connections can supply a configured backup connection, subject to license availability. | The reviewed send path tries a configured backup after a primary send failure. |
| Routing and volume | Smart Routing and other advanced features depend on the current offering. | Connections, conditional routing and queue tools are available in the product; check your plan. |
| Migration | Confirm the vendor’s supported migration options for your starting plugin. | A WP Mail SMTP importer maps supported saved settings, with limits discussed below. |
WP Mail SMTP Pro is a sensible candidate when its supported mailer, documentation and licensing fit your existing stack. Lumo Mail SMTP is worth evaluating when you want mail administration alongside the other Lumo tools, particularly logs and connection workflows. Compare the features included in the plan you would actually use—not every feature mentioned somewhere on a product page.
4. Configure WP Mail SMTP Pro step by step
Install and select a connection
Download the plugin from your WP Mail SMTP account. In WordPress, open Plugins → Add Plugin → Upload Plugin, select the ZIP, install and activate it. Follow the vendor’s upgrade instructions if Lite is already installed. Take a settings backup first and avoid leaving a competing SMTP plugin active.
Run the setup wizard, or open WP Mail SMTP → Settings → General. Under the primary connection, set the From Email and From Name, then select the mailer. With a provider integration, follow that mailer’s authorization steps. Use Other SMTP when your provider has supplied SMTP credentials.
Enter SMTP settings deliberately
Use the provider’s SMTP host, not automatically your website hostname. Port 587 with TLS and port 465 with implicit TLS/SSL are common combinations, but the provider’s instructions decide which is correct. Enable authentication when required and enter the supplied SMTP username and password. Some services issue a dedicated SMTP credential rather than accepting your normal account password.
Force From Email can make the sender consistent across plugins. Before enabling it, check whether any existing workflow intentionally uses a different verified identity. For contact forms, preserve a useful Reply-To address so that replying still reaches the visitor. Save the settings. See the vendor’s Other SMTP instructions for the current field layout.
Test both the connection and a real workflow
Open WP Mail SMTP → Tools → Email Test. Send a test to a mailbox you control. Read the result, then check the actual inbox and spam folder. If you use additional connections, select and test each intended connection separately.
Next, trigger the workflow that originally failed: submit a test form, request a password reset for a dedicated test user, or send an email from a test order. Use test data and avoid charging a real customer. A successful diagnostic message does not prove that a form’s recipient setting or a WooCommerce notification is correct.
If your license includes email logging, enable the appropriate log settings and choose a retention period. Keep full message content only when you need it. Logs can contain personal information, reset links or other content that should not remain in the database indefinitely.
Add a backup after the primary route works
Configure an additional connection first, then select it as the backup in General settings. The official backup connection guide explains this sequence. Test the backup independently before relying on it. A second connection to the same failing infrastructure may provide little resilience.
5. Configure Lumo Mail SMTP step by step
Download your installation ZIP from your Lumo account, then use Plugins → Add Plugin → Upload Plugin. After installation and activation, open Lumo WP → Mail SMTP. Complete any license activation required by your edition. The following labels come from the reviewed 2.17.3 admin view.
General: establish the sender identity
In General, enter the From Name and From Email that belong to your verified sending domain. Decide whether to force them across wp_mail() messages. In the source, these overrides are conditional: merely filling in a sender does not mean every plugin’s identity will be replaced unless the corresponding force option is enabled.
Providers: configure one primary route
Open Providers and configure your chosen provider. For SMTP, enter the host, port, encryption, authentication setting, username and password. Match the provider’s requirements rather than experimenting with random ports. Save the connection and select the intended primary provider in the relevant general settings.
If you choose a Google or Microsoft OAuth integration, complete that connection’s authorization flow rather than assuming a normal mailbox password will work. Do not copy OAuth instructions from an unrelated provider or reuse production credentials in screenshots.
A configured badge is not a delivery test
In the reviewed admin code, the configured indicator is based on the selected provider rather than proof of inbox receipt. Treat it as a configuration status. Continue to the test and recipient checks before calling the setup complete.
Send Test, then inspect Email Logs
Use Send Test in the plugin header, or open the Test Email section. Send to a mailbox you control. Then open Email Logs and inspect the matching entry. Record the recipient, time, selected connection, status and any error. Compare that evidence with the provider’s dashboard and the actual mailbox.
The SMTP provider also has a connection-probe path in the code. A connection check can establish that the server is reachable and authentication works, but it is not equivalent to sending the application’s full message to a recipient. Use both kinds of evidence where available.
Logging and Email Control: keep them intentional
In Logging, choose retention and decide whether message content and tracking are necessary. Open and click tracking adds a separate measurement layer; privacy software, proxies and automated scanners can affect those signals. For diagnosing basic delivery, status, error and provider-event information are more useful than an open-rate percentage.
Review Email Control before disabling any WordPress notifications. Reducing unwanted administrative messages can be useful, but do not accidentally suppress password resets or the very notification you are troubleshooting. Change one category at a time and test its expected behavior.
6. Three source-code details that affect production behavior
A fallback cannot recover every missing email
Lumo’s reviewed Mailer send path invokes the backup when the primary send operation fails. It cannot infer that a successfully accepted message will later bounce or land in spam. “Primary accepted, recipient never saw it” therefore requires provider-event investigation, not an assumption that the fallback should have run.
The global fallback branch also excludes a backup whose provider identifier is the same as the primary provider identifier. Do not assume that adding a second account of the same provider automatically creates that global failover route. Confirm the exact connection behavior in the installed version.
Routing rules can be narrower than they look
In the reviewed routed-send path, populated sender, recipient and subject conditions are combined: all specified conditions must match. Sender and recipient rules support wildcard matching; subject matching uses a case-insensitive substring. The first matching enabled connection is selected. A rule without a concrete condition is not treated as a match by that path.
For example, a recipient pattern for *@example.test plus the subject condition “invoice” should not match every invoice sent anywhere. It should match an invoice addressed to that domain. Test one message that should match, one with the wrong recipient and one with the wrong subject. This catches a routing mistake that an ordinary SMTP test cannot reveal.
A queue changes when mail is sent
Lumo schedules its queue worker through WordPress cron. In the reviewed send path, a queued message can return success while it is still pending. That matters for password resets and time-sensitive codes: the application may say the message was sent while the worker has not processed it yet.
Start with a working immediate-send configuration. If you need queuing, verify how cron is triggered on your hosting, inspect pending messages and measure the delay with controlled tests. A one-minute scheduled interval is not a promise that every message will leave within one minute. Traffic, cron triggering, server load and retries all affect processing.
Successful sending is not a security audit
Do not disable TLS certificate verification as a production fix. Resolve the hostname, certificate chain or hosting configuration with your provider. Review the security behavior of your installed release before deployment; this source review is not a complete security audit of either product.
7. Troubleshoot by symptom
| Symptom | Useful next check | Avoid |
|---|---|---|
| Authentication failed | Verify the SMTP credential type, username and provider permissions. | Repeatedly changing unrelated WordPress settings. |
| Connection timed out | Check the provider endpoint and whether the host permits outbound traffic on that port. | Assuming a different SMTP plugin can bypass a network block. |
| TLS or certificate error | Check the hostname, certificate chain and server trust store with the host/provider. | Disabling certificate validation to make the error disappear. |
| Test works; form does not | Check the form recipient, trigger, From and Reply-To settings. | Treating one test message as a complete application test. |
| Accepted but not in inbox | Inspect bounce/suppression events, authentication results and spam. | Calling a sent log entry proof of inbox delivery. |
| Messages remain queued | Check cron execution, worker errors and provider limits. | Increasing retries without understanding the failure. |
| Duplicate messages | Check duplicate triggers, competing mail plugins and manual resends. | Resending an uncertain transaction repeatedly. |
8. Migrating from WP Mail SMTP to Lumo
Back up the current settings and record a working test result. Deactivate the old mail-routing plugin without deleting its saved settings, then configure the replacement. Lumo’s importer reads the saved wp_mail_smtp option and maps supported settings; it is not evidence that every possible mailer, log or routing rule will migrate.
The reviewed mapping includes SMTP, Google/Outlook OAuth, SendGrid, Mailgun, Postmark, Brevo and Amazon SES. If your starting provider is unsupported, configure it manually through a supported route. Review any OAuth reconnection requirement. Do not assume credentials defined only in configuration constants will be present in the saved option being imported.
After import, verify the sender, primary connection, any backup and every conditional route. Repeat your application-level tests. Keep a rollback plan until the replacement has passed them, and remove unused credentials only after you know which connection is actually sending.
9. A small acceptance test beats a large feature list
Use a test sheet with five columns: trigger, expected recipient, expected connection, observed log status and actual mailbox result. Start with a diagnostic message, then a form submission, a password reset and an order notification if the site has a store. Record results rather than relying on memory.
Confirm the expected message is created exactly once.
Confirm the selected connection matches your routing plan.
Check receipt in a mailbox you control and inspect spam as well.
Check provider events and message authentication results when available.
If using a backup or queue, test that behavior separately in a controlled environment.
Confirm logs retain only the data and duration you need.
Choose the plugin that makes those checks clear for the person maintaining the site. A reliable email setup is a chain of correct application settings, authenticated identity, working transport and observable outcomes. The SMTP plugin is an important link in that chain; it is not the entire chain.
Sources and review scope
WP Mail SMTP: setup wizard; additional connections; setup and backup guides linked above.
Lumo Mail SMTP 2.17.3 source review: includes/Core/Mailer.php, PluginManager.php, PhpMailerSender.php and WpMailSmtpImport.php; includes/Queue/QueueManager.php; SMTP provider and admin views.
WP Mail SMTP Pro 4.9.0 source review: src/Pro/Emails/Logs/Email.php distinguishes sent, waiting and delivered statuses. Official documentation supplies the setup instructions.
Reviewed October 24, 2026. Illustrations explain the workflow; they are not screenshots or measured delivery results. No live inbox-placement comparison or provider outage simulation is claimed.
Originally published on LumoWP.
Top comments (0)