Caldera Forms is dead. If you’re still running it on your WordPress site, you’re working with a plugin that hasn’t received a single security patch since early 2022. Saturday Drive…
Table of Contents
Your WPForms notification emails stopped arriving and you have no idea when it started. Leads disappeared. Customer messages went unanswered. The form worked fine on the frontend, but WPForms not sending email is one of the most common WordPress problems, and the cause is almost never the plugin itself.
The real issue sits deeper. WordPress relies on the PHP mail() function by default, and most hosting providers either restrict it or disable it entirely. Without SMTP authentication, your form emails get rejected before they reach anyone’s inbox.
This guide covers the actual causes behind WPForms email delivery failure, how to diagnose the problem, how to configure SMTP correctly, and what DNS records and notification settings to check so your emails arrive every time.
Why WPForms Emails Fail to Send
WPForms itself rarely causes email failures. The actual problem sits one layer deeper, inside how WordPress handles outgoing mail.
By default, WordPress uses the PHP mail() function to send every email your site generates. That includes form notifications, password resets, order confirmations, and admin alerts. The PHP mail() function does not authenticate the sender. It sends messages without SPF verification, without DKIM signing, and without any proof that your server is allowed to send email on behalf of your domain.
Receiving mail servers like Gmail, Outlook, and Yahoo treat unauthenticated messages as suspicious. According to EmailTooltester’s 2024 testing across 15 major email platforms, the average deliverability rate was just 83.1%. That means roughly 1 in 6 emails never reached the inbox.
For WordPress sites still using PHP mail(), the numbers are worse. WP Mail SMTP’s internal data from over 3 million installations shows that sites relying on PHP mail() without authentication see deliverability rates around 64%. Sites using authenticated SMTP hit about 96.4%.
So when your WPForms notification goes missing, the form plugin did its job. It handed the email to WordPress. WordPress handed it to PHP mail(). And PHP mail() dropped it into a void because no receiving server trusted it.
There’s also an important distinction to make. “Not sending” and “sending but landing in spam” are two different problems. If your server’s PHP mail function is disabled entirely (common on shared hosting), the email never leaves your server. If it does leave but lacks authentication, it might land in the recipient’s spam folder or get silently rejected. Checking which scenario you’re dealing with determines the fix.
Common Causes of WPForms Email Delivery Failure
Multiple things can break email delivery at once. Took me a while to learn that, actually. You fix one problem and assume the emails will flow, but there’s usually a second or third issue hiding behind the first.
Here’s what goes wrong most often.
PHP mail() Limitations on Shared Hosting
Most WordPress sites run on shared hosting. When your site uses PHP mail(), emails go out from the same IP address as potentially hundreds or thousands of other websites on that server.
If any of those sites send spam (and they often do), the IP reputation tanks for everyone. Your perfectly legitimate WPForms notification gets treated like junk because your neighbor on the server was blasting phishing emails last week.
Many hosting providers disable PHP mail() entirely. GoDaddy, Bluehost, and HostGator have all restricted or blocked the function on shared plans to prevent spam abuse. WP Engine disables it by default and requires a third-party email service. If your host has done this, no WordPress plugin can send email through the default method. Period.
| Hosting Provider | PHP mail() Status | Workaround |
|---|---|---|
| GoDaddy | Restricted on shared plans | Use SMTP with port 465 or API mailer |
| Bluehost | Limited sending rates | Use SMTP plugin with external provider |
| WP Engine | Disabled entirely | Use third-party transactional email service |
| SiteGround | Rate-limited | SMTP recommended for reliability |
| Kinsta | Restricted outbound | External email service required |
From Address and Domain Mismatch Issues
This one catches people off guard constantly.
If your WPForms notification sends from [email protected] but your site is yourdomain.com, receiving servers see a mismatch. Gmail especially flags this hard. The “From” address must match the domain your site actually lives on.
In February 2024, Gmail and Yahoo rolled out stricter sender authentication requirements. Emails without valid SPF and DKIM records now face rejection or spam filtering, not just lower priority placement. Google’s updated guidelines specifically require that the domain in the sender’s “From” header aligns with SPF and DKIM domains. A mismatch means your email fails alignment checks before any human ever sees it.
Switch your WPForms “From Email” to something like [email protected] and make sure that address actually exists. One change, big difference.
How to Test Whether WPForms Is Actually Sending Emails
Before you start fixing things, figure out what’s broken. I’ve seen people reconfigure their entire SMTP setup when the real issue was a typo in the notification email field.
Using the WP Mail SMTP Test Email Feature
If you have WP Mail SMTP installed (and you probably should, given it has over 5 million active installations according to WordPress.org), head to WP Mail SMTP > Tools > Email Test.
Send a test email to an address you can check immediately. If it arrives, WordPress can send email. The problem is somewhere in your WPForms notification configuration. If it fails, the issue is at the server or authentication level.
Checking Server Mail Logs
cPanel users: Log into your hosting dashboard and look for “Track Delivery” under the Email section. This shows whether the server attempted to send the message and what response the receiving server gave back.
No cPanel access? Install a plugin like WP Mail Logging. It captures every outgoing email attempt with timestamp, recipient, subject, and headers. If the email shows up in the log but never arrives, your server sent it and the receiving end rejected it. If it doesn’t show up in the log at all, the email never fired.
Testing Across Multiple Email Providers
Send test emails to Gmail, Outlook, and Yahoo accounts. Each provider handles spam filtering differently.
Yahoo’s deliverability rate sits at about 81.33% according to Opensend’s 2024 data, well below Gmail’s 95.3%. If your email arrives at Gmail but not Yahoo, the problem is likely authentication gaps that Yahoo treats more strictly. GlockApps’ Q1 2025 data shows that Outlook’s inbox placement rate dropped by 22.56% compared to Q1 2024, making Microsoft’s filters among the toughest right now.
Your mileage may vary depending on which providers your audience uses. Test all three before assuming the problem is fixed.
Setting Up SMTP to Fix WPForms Email Delivery
SMTP is the fix for almost every WordPress email problem. Not a workaround, not a band-aid. The actual fix.
SMTP (Simple Mail Transfer Protocol) replaces the broken PHP mail() function with authenticated, encrypted email delivery through a dedicated mail server. It’s the same protocol your email client uses when you send a message from Gmail or Outlook. Your WordPress email settings just need to be pointed at a real mail service instead of the default PHP function.
Configuring WP Mail SMTP with Gmail
Best for: Small sites, personal projects, low email volume.
Gmail is the most common free mailer option people start with. WP Mail SMTP connects to Gmail through OAuth 2.0 authentication, which is more secure than basic SMTP credentials.
- Install WP Mail SMTP and run the setup wizard
- Select Gmail / Google Workspace as your mailer
- Create OAuth credentials in Google Cloud Console (the wizard walks you through this)
- Authorize the connection and send a test email
Limits to know: Free Gmail accounts cap at 500 emails per day. Google Workspace accounts allow 2,000 per day. If your contact form gets heavy traffic, you’ll hit these ceilings fast.
Configuring WP Mail SMTP with a Transactional Email Service
Best for: Business sites, ecommerce, anything where email delivery actually matters to revenue.
Transactional email services like SendGrid, Brevo (formerly Sendinblue), and Amazon SES are built for exactly this. They handle authentication automatically, maintain clean IP reputations, and give you delivery tracking out of the box.
SendGrid: Offers a free tier of 100 emails per day. Solid API integration. Popular with developers.
Brevo: Free plan covers 300 emails per day. Clean interface. Good for non-technical users who also want email marketing features.
Amazon SES: Cheapest at scale (fractions of a penny per email). Requires more technical setup. Not the best choice if you’re not comfortable with AWS consoles.
After choosing a provider, the setup follows the same pattern. Get API credentials from the provider, enter them in WP Mail SMTP, configure your “From” address to match your domain, and send a test email. The whole process takes about 15 minutes if you don’t get sidetracked.
DNS Records That Affect WPForms Email Delivery
This is the part most tutorials gloss over. And it’s honestly where a huge chunk of delivery failures come from.
You can set up SMTP perfectly. You can pick the right provider. But if your DNS records don’t tell receiving servers that your email is legit, those servers will still reject or spam-filter your messages.
SPF Records
SPF (Sender Policy Framework) is a DNS TXT record that lists which mail servers are authorized to send email on behalf of your domain.
When Gmail receives an email claiming to come from [email protected], it checks your SPF record. If the sending server isn’t on the authorized list, the email fails SPF verification.
You add or update SPF records through your domain registrar’s DNS panel (Cloudflare, Namecheap, GoDaddy, wherever your DNS lives). Each transactional email provider gives you the specific SPF string to include.
One common mistake: having multiple SPF records. DNS allows only one SPF record per domain. If you have two, both can fail. Merge them into a single record using the include: mechanism.
DKIM and DMARC
DKIM (DomainKeys Identified Mail) adds a cryptographic signature to your outgoing emails. It proves the message came from your server and wasn’t tampered with in transit. Your email provider generates the DKIM key. You paste it into your DNS as a TXT record.
DMARC (Domain-based Message Authentication, Reporting, and Conformance) ties SPF and DKIM together. It tells receiving servers what to do when an email fails authentication checks. The minimum requirement since February 2024 (per Google and Yahoo’s updated policies) is p=none, which monitors without blocking. But p=quarantine or p=reject gives stronger protection against spoofing.
DMARC adoption grew to 53.8% in 2024 according to Opensend, an 11-percentage-point jump from the previous year. That growth accelerated specifically because of Gmail and Yahoo’s mandate. If you haven’t set up DMARC yet, you’re in the shrinking minority.
Verifying Your DNS Setup
Use MXToolbox to check your SPF, DKIM, and DMARC records. The tool runs a lookup against your domain and flags errors like duplicate SPF records, missing DKIM signatures, or DMARC policies that don’t align.
Google Admin Toolbox is another solid option, specifically if you’re sending through Google Workspace. It checks the same records but also validates the format against Google’s sender requirements.
Run these checks after every DNS change. DNS propagation takes up to 48 hours, so test again the next day to confirm everything resolved correctly.
WPForms Notification Settings That Cause Missed Emails
Sometimes the problem isn’t your server, your SMTP, or your DNS. It’s a checkbox you forgot to tick inside WPForms.
Disabled or Misconfigured Notifications
Open your form in the WPForms builder. Click Settings > Notifications. Check that the notification toggle is actually turned on.
This sounds obvious, but it happens constantly after duplicating a form. WPForms copies the form structure, but notification settings can carry over in unexpected states. I’ve debugged form email issues for people who spent hours checking SMTP logs when the notification was simply off.
Smart Tag and Reply-To Problems
WPForms uses smart tags to dynamically pull field values into notification settings. The {adminemail} tag pulls the WordPress admin email. The {fieldid="1"} tag pulls whatever the user typed in a specific field.
If a smart tag references a field that doesn’t exist (maybe you deleted it during a form redesign), the “Send To” or “Reply-To” address becomes empty or malformed. The email either doesn’t fire or bounces immediately.
Check every smart tag in your notification settings against your actual form fields. Make sure the field IDs match. It’s a two-minute check that saves hours of head-scratching.
Conditional Logic Silently Skipping Notifications
WPForms lets you add conditional logic to notifications. You might set it so a notification only sends when a dropdown value equals “Sales Inquiry” or when a checkbox is selected.
The problem? If your logic condition never evaluates to true, the notification never fires. And WPForms won’t warn you about it. There’s no “your conditional logic prevented this email from sending” alert in the form entries.
If you’re troubleshooting missing emails, temporarily disable all conditional logic on your notifications. If emails start arriving, your conditions are too restrictive or referencing the wrong field values. Rebuild the logic one condition at a time until you find the one that’s blocking delivery.
Multiple Notifications With Hidden Errors
WPForms allows multiple notification rules per form. You might have one going to the admin and another going to the user as a confirmation. If one notification has an error (bad email address, broken smart tag), it can sometimes disrupt the processing of other notifications in the queue.
Test each notification individually. Disable all but one, submit the form, check delivery. Then enable the next one and repeat. Tedious? Yes. But it isolates the broken notification fast. If you’re running forms that collect leads or intake information, you really can’t afford to miss these.
Plugin and Theme Conflicts That Block WPForms Emails
Plugins account for 95% of reported WordPress security vulnerabilities, according to Hostinger’s 2025 data. But security isn’t the only thing they break. Plugin conflicts are one of the most frustrating causes of WPForms email failures because the symptoms look identical to server-level problems.
The email just doesn’t arrive. No error message. No log entry pointing to the culprit. You check your SMTP settings, verify DNS records, and everything looks fine. Then you deactivate one seemingly unrelated plugin and the emails start flowing again.
Security Plugins That Interfere with Outgoing Email
Wordfence is the most common offender. Its firewall can block outgoing HTTP requests that some SMTP plugins and transactional email services rely on. If your email provider uses an API connection (rather than direct SMTP), Wordfence may flag those API calls as suspicious and silently block them.
Sucuri’s firewall operates similarly. It sits between your WordPress site and the outside world, filtering requests. When it misidentifies an outgoing email API call as a threat, the email never reaches the mail server.
The fix isn’t to remove your security plugin. Whitelist your email provider’s IP addresses or API endpoints in the firewall settings. Both Wordfence and Sucuri allow this in their configuration panels.
Caching Plugins and Form Submission Processing
This one’s tricky and easy to overlook.
WP Rocket, W3 Total Cache, and similar caching plugins can interfere with form submissions when aggressive page caching serves a cached version of the form’s confirmation handler. The form appears to submit, the user sees a success message, but the backend process that triggers the email notification gets skipped.
WP Rocket’s own documentation lists dozens of plugins that conflict with its optimization features. If you’ve recently enabled a new caching setting and WPForms emails stopped working at the same time, the cache is your first suspect.
How to Run a Proper Conflict Test
- Switch to a default WordPress theme (Twenty Twenty-Four works)
- Deactivate all plugins except WPForms and WP Mail SMTP
- Submit a test form entry and check if the email arrives
- Reactivate plugins one at a time, testing after each
When the email stops working, you’ve found the conflict. From there, check the conflicting plugin’s documentation for known issues, or reach out to their support team with specifics. Most WordPress contact form plugins and SMTP tools maintain conflict lists you can reference.
Hosting-Specific Email Restrictions and Workarounds
Your hosting provider dictates what your WordPress site can and can’t do with email. Some hosts give you plenty of room. Others lock things down so tight that no amount of plugin configuration will fix the problem without an external email service.
Knowing your host’s specific restrictions saves hours of troubleshooting the wrong thing.
| Hosting Provider | Email Policy | Daily Limit | Recommended Fix |
|---|---|---|---|
| WP Engine | PHP mail() restricted, SMTP discouraged | Low (API preferred) | Use third-party API mailer (SendGrid, Mailgun) |
| Kinsta | Transactional email supported, capped | 150–3,000 depending on plan | Use external service for higher volume |
| Cloudways | Elastic Email add-on or custom SMTP | Varies by add-on tier | Configure SMTP add-on or external API |
| GoDaddy (shared) | Ports 25 and 587 often blocked | Restricted | Use API-based mailer to bypass port blocks |
| Flywheel | No email hosting, transactional only | Limited | Use external transactional email service |
WP Engine and Premium Managed Hosts
WP Engine’s official documentation states it clearly: use a third-party email provider. They don’t block outgoing email entirely, but their infrastructure is optimized for web serving, not mail delivery. SMTP connections from WP Engine servers use dynamic IPs, which hurts deliverability because receiving servers can’t build trust with a constantly changing sender address.
Kinsta takes a similar approach. Their Starter and Pro plans cap transactional email at 150 messages per day. Business plans allow up to 1,000. If your website forms generate more notifications than that, you’ll hit the ceiling and emails will silently stop sending.
Shared Hosting Providers
GoDaddy’s shared plans are notorious for blocking outbound SMTP ports. Port 25 is almost always blocked. Port 587 gets restricted on certain plan tiers. If WP Mail SMTP shows a connection timeout error, the port is likely the issue.
Bluehost and SiteGround both impose hourly and daily sending limits on shared hosting. SiteGround typically allows around 500 emails per hour. Bluehost varies by plan but generally sits in the same range.
The workaround for all of these is the same: use an API-based email provider instead of direct SMTP. Services like SendGrid, Brevo, and Mailgun connect through their API rather than through SMTP ports, which bypasses port-blocking restrictions entirely. WP Mail SMTP supports API connections for all major providers.
When to Contact Hosting Support
Contact your host when:
- SMTP connections time out even with correct credentials and port settings
- Your server IP appears on email blacklists (check with MXToolbox)
- You need specific ports unblocked for a business email service
Don’t bother contacting them when the issue is clearly DNS-related (SPF, DKIM, DMARC records), plugin conflicts, or WPForms notification misconfiguration. Those are on your side to fix. Hosting support will just point you back to your WordPress dashboard anyway. If you’re running any types of forms that generate email notifications, understanding your host’s limits upfront prevents surprises later.
Monitoring WPForms Email Delivery After Fixing the Problem
Fixing the email problem once isn’t enough. It can break again after a WordPress update, a plugin change, a hosting migration, or a DNS modification you forgot about.
The worst part? Silent failures. Your WPForms notifications stop arriving and nobody notices for days or weeks. Leads vanish. Customer inquiries go unanswered. Password reset emails bounce. And you’re the last person to find out.
Email Logging and Failure Alerts
WP Mail SMTP Pro includes built-in email logging that records every outgoing message with its status, timestamp, recipient, and whether it succeeded or failed. The Pro version also has failure alerts that notify you instantly through email, Slack, SMS (via Twilio), or webhooks when a message fails to send.
If you’re on the free version, the WP Mail Logging plugin provides basic logging without the alerting features. Good enough for manual checks but won’t tell you about problems in real time.
Setting Up Routine Delivery Tests
Monthly minimum. Send a test email from WP Mail SMTP to Gmail, Outlook, and Yahoo addresses on the first of every month. Check that all three arrive in the inbox (not spam).
After every change. WordPress core update? Test. Plugin update? Test. Hosting migration? Definitely test. DNS changes? Test the next day after propagation completes.
Mail-Tester.com gives you a deliverability score out of 10 for any test email you send. It checks SPF, DKIM, DMARC, blacklist status, and content quality. Anything below an 8 needs attention. Aim for 9 or higher.
Tracking Delivery Through Your SMTP Provider’s Dashboard
Every transactional email service provides its own analytics. What to watch:
- Delivery rate: Should stay above 95%. Any drop below 90% signals a problem.
- Bounce rate: Keep below 2%. Rates above 5% trigger filtering from major providers, according to Opensend’s 2024 ecommerce email data.
- Spam complaint rate: Google requires this stays below 0.3% per their 2024 sender guidelines. Anything higher risks throttling or rejection.
SendGrid, Brevo, and Amazon SES all display these metrics in their dashboards. Google Postmaster Tools is another free resource that shows how Gmail treats email from your domain, including spam rate, authentication status, and IP reputation.
What to Do When Emails Stop Working Again
After a hosting migration: Your server IP changed. SPF records may still point to the old host. Update your DNS records to reflect the new sending IP or re-verify your domain with your transactional email provider.
After a plugin update: WP Mail SMTP or WPForms updates occasionally reset settings or introduce compatibility changes. Check your mailer configuration, “From” address, and notification settings after any update to either plugin.
After a DNS change: Even unrelated DNS changes (like switching nameservers to Cloudflare) can affect email records. Verify SPF, DKIM, and DMARC are intact using MXToolbox. DNS propagation takes up to 48 hours, so re-test after that window.
Building a contact form that works reliably means treating email delivery as ongoing maintenance, not a one-time setup. The technical side of form notifications only works when every layer, from WPForms to SMTP to DNS to the receiving mail server, stays in sync. Break one link and the whole chain fails silently.
If your form security setup includes honeypot fields or CAPTCHA alternatives, make sure those don’t interfere with email triggers either. Occasionally, anti-spam measures that block bot submissions can also suppress legitimate notification processing if misconfigured.
FAQ on WPForms Not Sending Email
Why is WPForms not sending email notifications?
WordPress uses the PHP mail() function by default, which lacks authentication. Most hosting providers restrict or disable it. Without SMTP authentication, receiving servers like Gmail and Outlook reject or spam-filter your form notification emails silently.
How do I fix WPForms email delivery failure?
Install WP Mail SMTP and connect it to a transactional email service like SendGrid, Brevo, or Amazon SES. This replaces the unreliable PHP mail() function with authenticated SMTP delivery, which fixes the problem for most WordPress sites.
Why are my WPForms emails going to spam?
Your domain likely lacks proper DNS authentication records. Set up SPF, DKIM, and DMARC records through your domain registrar. Without these, email providers have no way to verify your messages are legitimate.
Does my hosting provider affect WPForms email delivery?
Yes. Hosts like WP Engine, Kinsta, and GoDaddy restrict outbound email on shared and managed plans. Some block SMTP ports entirely. Using an API-based email provider bypasses these hosting-level restrictions.
How do I test if WPForms is actually sending emails?
Go to WP Mail SMTP > Tools > Email Test and send a test message. If it arrives, your server can send email and the issue is in your WPForms notification settings. If it fails, the problem is server-level.
Can plugin conflicts stop WPForms from sending emails?
Absolutely. Security plugins like Wordfence and Sucuri can block outgoing API requests. Caching plugins like WP Rocket sometimes interfere with form submission processing. Deactivate plugins one by one to find the conflict.
What SMTP port should I use for WPForms email?
Port 587 with TLS encryption is the standard for most SMTP providers. Port 465 uses SSL. Port 25 is almost always blocked on shared hosting. If connections time out, your host may be blocking the port.
Why did WPForms emails stop working after a WordPress update?
Updates to WordPress core, WP Mail SMTP, or WPForms can reset mailer configurations or introduce compatibility issues. Check your SMTP credentials, “From” address, and notification settings after every update. Then send a test email.
Do I need a paid SMTP plugin to fix WPForms email?
No. The free version of WP Mail SMTP handles basic email delivery. Paid versions add email logging, failure alerts, and backup connections. For most sites, the free plugin with a provider like Brevo’s free tier is enough.
How do I monitor WPForms email delivery long-term?
Use WP Mail SMTP’s email log to track sent messages. Send monthly test emails to Gmail, Outlook, and Yahoo. Check your SMTP provider’s dashboard for bounce rates and keep spam complaints below 0.3% per Google’s sender guidelines.
Conclusion
WPForms not sending email almost always traces back to how WordPress handles outgoing mail, not the form plugin itself. The default PHP mail() function fails on most modern hosting environments, and email providers like Gmail and Yahoo now reject unauthenticated messages outright.
The fix follows a clear path. Configure WP Mail SMTP with a reliable transactional email service. Set up SPF, DKIM, and DMARC records in your DNS. Verify your WPForms notification settings and rule out plugin conflicts.
But fixing it once isn’t the end. Monitor your delivery rates through your SMTP provider’s dashboard. Send test emails monthly. Check your email logs after every WordPress core update or hosting migration.
Email deliverability breaks quietly. The sites that stay ahead are the ones that treat form notification delivery as ongoing maintenance, not a set-and-forget task.


