If contact form leads never reach your inbox, password reset emails go missing, or WooCommerce order emails land in spam, you have the most common silent failure in WordPress. WordPress not sending emails rarely shows an error. The site says “Thank you, your message has been sent” and the message simply disappears. I’ll explain why that happens, how to confirm where the email is failing, and how I set up SMTP and the DNS records that make email arrive reliably. I also cover how to make sure a lead is never lost even if email fails.
WordPress not sending emails: why it happens
Out of the box, WordPress hands every email to your web server and hopes for the best. Web servers are built to serve pages, not to be trusted mail senders. Several things go wrong from there:
- No authentication. The email claims to come from your domain, but nothing proves the server is allowed to send for it. Gmail, Outlook and Yahoo treat that as suspicious. Gmail and Yahoo have tightened their sender rules since 2024, and unauthenticated mail fares worse than ever.
- Shared reputation. On shared hosting, your site shares a server, and an IP address, with many others. If one of them sends spam, your mail suffers too.
- Mail disabled. Some hosts turn off the server’s mail function entirely to stop abuse.
- A spoofed “From” address. Many forms send the email “from” the visitor’s own address. Your server isn’t allowed to send as gmail.com, so the message gets rejected.
Confirm where the email is failing
Before changing settings, find out whether WordPress is trying to send at all.
- Request a password reset to a Gmail address and an Outlook address. Check inbox and spam on both.
- Submit your contact form with a test message and note the exact time.
- Install an email logging plugin, or use the log in your SMTP plugin once it’s installed. It records every email WordPress tried to send.
- Check whether your form plugin stores entries in the database. If it does, you can recover leads that never arrived by email.
If the log shows the email as sent but nobody received it, the problem is delivery and authentication. If the log is empty, the form or plugin isn’t triggering the email, and that is a configuration problem inside WordPress.
Set up SMTP the right way
SMTP means WordPress logs in to a proper email service and sends through it, just like your email app does. Here’s how I set it up.
1. Choose a sending service
- A transactional email service such as Mailgun, Postmark, SendGrid, Amazon SES or Brevo. These are built for website email and are my default for sites with forms and stores.
- Your Google Workspace or Microsoft 365 account can work for very low volume, such as a small brochure site.
2. Install an SMTP plugin
WP Mail SMTP, FluentSMTP and Post SMTP are all solid. Connect with the provider’s API or an API key where possible rather than a plain mailbox password. If the plugin supports it, store the key in wp-config.php rather than in the database.
3. Fix the From address
Set the From email to an address on your own domain, such as website@yourdomain.com, and force it for every plugin. In your form settings, put the visitor’s email in the Reply-To field instead. You can still hit Reply and answer the customer directly.
4. Send a test and check the headers
Send a test email from the plugin to a Gmail account. Open it, choose “Show original”, and confirm that SPF, DKIM and DMARC all say PASS. If any say FAIL, the DNS records in the next step need work.
Fix your DNS: SPF, DKIM and DMARC
These three records prove to the world that your email is genuine. Your sending service will tell you exactly what to add.
- SPF lists the services allowed to send email for your domain. You may only have one SPF record per domain, so merge new services into the existing record instead of adding a second one.
- DKIM adds a digital signature to each message. Your provider gives you one or more records to copy into DNS.
- DMARC tells receiving servers what to do with mail that fails the checks. Start with a monitoring policy of
p=noneand a reporting address, then tighten it once reports look clean.
Be careful here. If your business email runs on Google Workspace or Microsoft 365, those services must stay in your SPF record. Replacing the record instead of editing it can break your everyday email, which is a much bigger problem than a missing form notification.
Make form leads impossible to lose
Email is a notification, not a database. For a business that depends on leads, I never rely on email alone.
- Turn on entry storage in your form plugin so every submission is saved on the site.
- Send leads straight into your CRM with a webhook or integration. On client sites I often route form leads into GoHighLevel, where the team gets alerts and follow-up starts automatically. My GoHighLevel setup covers this.
- Submit a test lead every week, or automate the test, so you notice a failure in days rather than months.
- Make sure your form also fires a tracked conversion, so a sudden drop in leads shows up in your reports.
At a glance
- Test password reset and form emails to Gmail and Outlook.
- Install email logging to see what WordPress tried to send.
- Choose a transactional email service and install an SMTP plugin.
- Use a From address on your own domain and put the visitor in Reply-To.
- Add SPF, DKIM and DMARC records without breaking your existing email.
- Confirm all three show PASS in a test message.
- Store form entries and send leads to your CRM as a backup path.
Related reading: how to fix the WordPress critical error safely and how to fix the error establishing a database connection in WordPress.
FAQ
Why do my WordPress emails go to spam?
Usually because they’re not authenticated. Sending through a proper service with SPF, DKIM and DMARC in place fixes most spam folder problems.
Can I send through my regular Gmail account?
For a tiny site it can work, but sending limits and security changes make it fragile. A transactional email service is more reliable for business use.
Will SMTP also fix WooCommerce order emails?
Yes. Once SMTP is set up, every email WordPress sends goes through it, including order confirmations, password resets and admin alerts.
How do I know if I already lost leads?
Check whether your form plugin stored entries. If it did, compare them with what reached your inbox. If it didn’t, turn storage on today.
If you suspect leads have been slipping away, I can set up reliable email and a backup path for every form. Get a free website review or read about my WordPress fixes.





