Next-Level Code. Nexuvibe Style ...

Hrs
Min
Sec
WordPress Contact Form Email Troubleshooting

Contact Form 7 & WPForms Not Sending Emails?
Here’s the Definitive Solution

You installed a contact form. Visitors are filling it out. But the messages are never reaching your inbox. This guide explains exactly why, and shows you how to fix it once and for all, regardless of which form plugin you use.

11 min read
Updated 2026
Form Plugin Fix Guide
Contact Form 7 and WPForms not sending emails – complete troubleshooting guide and SMTP fix for WordPress contact form email delivery problems in 2026

Here is a scenario that plays out on WordPress sites every single day. A business owner installs a contact form, tests it by filling it in themselves, and does not receive the notification email. They check their spam folder, nothing. They reinstall the form plugin. Still nothing. They try a different form plugin. Same result. The problem, they eventually discover, has nothing to do with the form plugin at all.

Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Formidable Forms, every major WordPress form plugin uses the same underlying mechanism to send email. They all route messages through WordPress’s built-in wp_mail() function, which by default uses your web server’s PHP mail handler. And that PHP mail handler is the actual source of the problem. It was never designed to send transactional email reliably, it sends from an IP address with no authentication credentials, and modern spam filters treat everything it produces as suspicious.

This means that fixing a contact form email problem almost always requires fixing the underlying WordPress email infrastructure rather than adjusting settings within the form plugin itself. Understanding this distinction is the difference between spending hours tweaking form settings that cannot solve the problem and implementing the actual fix in under thirty minutes.

This guide covers both layers: the form-plugin-specific settings that can cause email problems on their own, and the WordPress email infrastructure fix that solves the root cause permanently across Contact Form 7, WPForms, Gravity Forms, and every other form plugin you might be running.

What this guide covers
Why contact form email problems are almost always a WordPress infrastructure issue, not a form plugin problem.
Contact Form 7 specific settings that can independently cause email failures.
WPForms specific settings that are commonly misconfigured.
Gravity Forms, Ninja Forms, and Formidable Forms: what is different and what is the same.
The permanent fix: configuring SMTP so that all form emails are delivered reliably, regardless of form plugin.
How to use an email log to confirm form submissions are being delivered and track any that are missed.

Why your contact form emails are not arriving: the actual explanation

When you submit a contact form on a WordPress site, the sequence of events is this: the form plugin processes the submission and calls wp_mail() to send the notification email. WordPress then hands that email to your web server’s PHP mail handler, which attempts to deliver it directly to the recipient’s mail server.

That delivery attempt fails, or lands in spam, for a specific set of reasons. The web server sending the email is not listed in your domain’s SPF record as an authorized sender. The email carries no DKIM cryptographic signature proving it came from your domain. On shared hosting, the sending IP may be shared with hundreds of other sites and may be on email blacklists due to the behavior of other tenants. The email claims to be from your domain but arrives from a server that has no proven relationship with that domain.

The critical point most troubleshooting guides miss
Switching from Contact Form 7 to WPForms, or from WPForms to Gravity Forms, does not fix this problem. Changing form plugins does not change how WordPress sends email. The email infrastructure is shared by every form plugin on your site. The only way to fix the delivery problem is to fix the delivery infrastructure, which means configuring SMTP so that WordPress sends email through a properly authenticated mail server rather than through PHP mail.

There are, however, form-plugin-specific settings that can cause or worsen email delivery problems independently of the infrastructure issue. These are worth checking first, because they are quick to diagnose and easy to fix, and in some cases they are the sole cause of the problem on an otherwise well-configured site.

🔗Switching to the Nexu Mail SMTP plugin for WordPress bypasses unreliable PHP mail handlers, ensuring contact form notifications reach your inbox reliably. →

Contact Form 7: specific settings that cause email failures

Contact Form 7 is the most installed WordPress plugin (its WordPress.org listing shows its install count clearly) of any kind, with over five million active installations. It is also the form plugin most commonly associated with email delivery complaints, not because it is poorly built, but because of its massive install base and because several of its default settings create conditions that spam filters flag.

The “From” email address problem
Most common CF7 email problem

By default, Contact Form 7 sends notification emails with the submitter’s email address in the “From” field. This is the setting that catches most people: [your-email] in the Mail tab’s “From” field means the notification email appears to come from the visitor’s email address (e.g., [email protected]) but is actually sent by your web server.

The fix: Change the “From” field to an email address at your own domain, for example, [email protected] or [email protected]. This eliminates the domain mismatch that spam filters penalize heavily. The visitor’s email address should go in the “Reply-To” field so you can still reply directly to them, but it should not appear in the “From” field.

Reply-To field configuration
Easy to overlook, important for usability

Once you have moved the visitor’s email address out of the “From” field and into the “Reply-To” field, check the “Additional Headers” section of the CF7 Mail tab and add: Reply-To: [your-email]. This ensures that when you click “Reply” on the notification email in your inbox, your email client addresses the reply to the visitor who submitted the form, not to your own noreply address. This is a usability fix, not a delivery fix, but it is important for making the form actually useful once delivery is working.

🔗For businesses requiring automated document delivery, learning how to attach PDF files to Gravity Forms notifications ensures clients receive contracts or receipts instantly. →

“To” email address in CF7 mail settings
Often overlooked after site migration

The “To” field in Contact Form 7’s Mail tab defaults to the WordPress admin email address using the [_site_admin_email] tag. If your WordPress admin email address is incorrect, outdated, or pointing to a mailbox that nobody monitors, notifications are going to the right place, just not where you expect them. Check Settings > General in WordPress to verify the admin email is correct and actively monitored.

CF7 spam filtering blocking legitimate submissions
Often confused with delivery failure

Contact Form 7 has its own spam filtering built in, separate from your server’s spam filters. If Akismet is active or if you have configured CAPTCHA, some legitimate submissions may be silently filtered as spam before they even reach the email stage. This means CF7 considers the submission spam and never calls wp_mail() at all. Check CF7’s flame icon in the admin, submissions marked as spam appear there. If you are seeing submissions in the spam log that should not be there, review your spam filter settings.

WPForms: specific settings that cause email delivery problems

WPForms has a more polished interface (you can review its features on the WordPress.org plugin page ) than Contact Form 7 and somewhat more opinionated defaults, which means the specific misconfiguration points are different, but the underlying infrastructure problem is identical.

Dynamic From Email causing domain mismatch
WPForms version of the CF7 from-address problem

WPForms allows you to use Smart Tags in the From Email field, which means some forms are configured to send notifications with the submitter’s email address as the From address, exactly the same problem as CF7’s default. Navigate to each form’s Settings > Notifications and check the “From Email” field. If it contains a smart tag like {field_id="1"} (which pulls the email field from the form), change it to a fixed address at your own domain. Use the submitter’s email in the Reply-To field instead.

Notifications disabled or conditionally set to never trigger
A WPForms-specific footgun

WPForms Pro includes conditional logic that can be applied to notifications, meaning a notification only sends if certain form conditions are met. If conditional logic is applied to your notification and the conditions are not being satisfied by real submissions, no email is sent. This is a feature that can be accidentally applied or left from a previous configuration. In the form editor, check Settings > Notifications and look for any conditional logic rules that might be preventing the notification from firing for all submissions.

Using WPForms entry storage as a workaround, and why it is not enough
A common but insufficient workaround

WPForms Pro stores form entries in the WordPress database, which means you can review submissions even if email notifications fail. Many site owners discover this and use it as a substitute for fixing the email problem, checking the entries dashboard manually instead of receiving notifications. This works until the volume of submissions makes manual checking impractical, or until an urgent inquiry sits unread because nobody checked the dashboard that day. Entry storage is a useful backup, not a replacement for working email notifications.

🔗Implementing WordPress email logging for delivery tracking ensures you never miss critical form submissions, even when PHP mail fails silently. →

Gravity Forms, Ninja Forms, and Formidable Forms: what is different

The same root infrastructure problem affects every WordPress form plugin. But each plugin has its own notification settings interface, and the specific places to check vary.

Gravity Forms

Gravity Forms stores notifications under Form Settings > Notifications for each individual form. The “From Email” field should be set to a domain-matching address, not a dynamic field value. Gravity Forms also has a “Send Email” field in the notification that needs to be enabled, it can be accidentally disabled. One Gravity Forms-specific issue: if you are using the Conditional Routing feature, check that the routing conditions are correctly configured and not filtering out more submissions than intended. Gravity Forms has good diagnostic tools under the System Status page (covered in detail in the Gravity Forms email troubleshooting guide ) that can flag configuration issues.

Ninja Forms

Ninja Forms uses an “Email” action within each form’s notification settings. In the form builder, check the Emails & Actions tab and look for the Send Email action. The “From Address” setting here has the same domain mismatch problem as CF7 and WPForms if it is set to a form field value. Additionally, Ninja Forms has a known behavior where email notifications can be disrupted by certain caching configurations, if you have a caching plugin active, check whether there is a compatibility setting in your cache plugin for forms.

Formidable Forms

Formidable Forms manages email notifications under the Actions & Notifications section of each form. The “From” field configuration follows the same principle, it should use a domain-matching email address rather than a field value. Formidable Forms also supports email routing to different recipients based on field values, which is powerful but can result in notifications going to unexpected addresses if the routing logic is misconfigured. Test each routing path individually to confirm notifications are reaching the right inbox.

The permanent fix: configuring SMTP for all your WordPress forms

After you have checked and corrected the form-plugin-specific settings above, there is one more step that makes all of the above fixes durable and extends reliable email delivery to every form and every email notification your WordPress site sends. That step is configuring SMTP.

Without SMTP, even a perfectly configured Contact Form 7 or WPForms setup is dependent on your web server’s PHP mail function, which is unreliable, unauthenticated, and susceptible to spam filtering regardless of how well the form-level settings are configured. With SMTP, every email your site sends, form notifications, password resets, WooCommerce order confirmations, everything, goes through a proper, authenticated mail server that is trusted by Gmail, Outlook, and every other major receiving mail system.


Nexu Mail SMTP plugin settings – configure SMTP to fix Contact Form 7 and WPForms not sending emails in WordPress by routing form notifications through authenticated mail server

SMTP configuration in Nexu Mail SMTP – WordPress SMTP plugin for fixing contact form email delivery. works with Contact Form 7, WPForms, Gravity Forms, Ninja Forms, and every other form plugin.

Nexu Mail SMTP fixes WordPress contact form email delivery at the infrastructure level, meaning it works identically for Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Formidable Forms, and any other form plugin that uses wp_mail(). You configure SMTP once, in one place, and all form notifications benefit automatically.

The setup process is the same regardless of which form plugin you use: enter your SMTP provider credentials, set a From Email address at your own domain, run a test send, and confirm delivery. From that point forward, every contact form submission notification on your site goes through authenticated SMTP rather than PHP mail, and your spam-filter problems go away with it.

Why a form submission log changes everything about contact form management

Even with SMTP correctly configured, there is still one operational blind spot that most WordPress site owners live with: they have no record of what was sent and when. A potential client fills in your contact form on a Sunday afternoon. You receive the notification, plan to respond Monday morning, and then realize you cannot find the email. Was it delivered? Was it something you accidentally deleted? Did it go to spam? Without an email log, this question is unanswerable.


Nexu Mail SMTP email log showing Contact Form 7 and WPForms notification emails with delivery status – track every form submission notification and resend missed emails from WordPress dashboard

Email log in Nexu Mail SMTP – WordPress contact form email tracking and resend plugin. a searchable record of every form notification your site has sent.

An email log that records every outgoing message from your WordPress site, including every contact form notification, closes this gap entirely. Every submission generates a log entry with the recipient, subject line, timestamp, and delivery status. If you need to find a specific submission, you search the log. If a notification was sent but you cannot find it in your inbox, you can resend it directly from the log with a single click.

For businesses where contact form submissions represent potential sales inquiries, client communications, or support requests, this is not an edge-case convenience feature. It is the difference between running your contact workflow on hope and running it on documented, verifiable data.

What the log lets you do that nothing else can
If a prospective client emails you saying “I filled in your contact form three days ago and never heard back,” you can search the log by date and recipient, confirm whether the notification was sent and to which address, and if it failed for any reason, identify why and resend it immediately. Without the log, the only honest answer you can give is “I’m not sure what happened.” With the log, you can resolve the situation in under two minutes with complete information.

Complete checklist: fixing contact form email delivery step by step

Step
Applies to

Check the recipient’s spam folder first
All form plugins

Set “From Email” to a fixed address at your own domain
CF7, WPForms, all others

Move visitor email to Reply-To field, not From field
CF7, WPForms, all others

Verify WordPress admin email is correct and monitored
All form plugins

Check for conditional logic silently blocking notifications
WPForms, Gravity Forms

Check CF7 spam log for legitimate submissions being filtered
Contact Form 7

Configure SMTP through Gmail, Outlook, or transactional provider
All form plugins, permanent fix

Add SPF and DKIM DNS records for your sending domain
All form plugins, authentication fix

Activate email log to track and confirm all form notifications
All form plugins, ongoing visibility

Contact form email problems have a reputation for being mysterious and difficult to solve. In practice, the vast majority of them share the same root causes: a From Email address set to a third-party domain, an untested underlying email infrastructure relying on PHP mail, or both. Work through the checklist above in order, implement SMTP, and test after each step. For most sites, reliable contact form email delivery is a thirty-minute fix once you know what you are actually looking for.

The form plugin you choose matters far less than the underlying WordPress email infrastructure that all of them depend on. Fix the infrastructure once with Nexu Mail SMTP’s universal WordPress form email delivery solution, and Contact Form 7, WPForms, Gravity Forms, and every other form plugin on your site benefits automatically, with a full email log to prove it.

🔗To ensure reliable email delivery, businesses should configure WordPress SMTP plugins instead of relying on the default PHP mail handler. →

Works with CF7 · WPForms · Gravity Forms · Ninja Forms · Formidable

One fix. Every form plugin. Zero missed enquiries.

Nexu Mail SMTP fixes WordPress contact form email delivery at the infrastructure level, so every notification from every form plugin reaches your inbox, logged, tracked, and resendable.

Nexu Mail SMTP – fix Contact Form 7 WPForms Gravity Forms email not sending with SMTP and email log

Nexu Mail SMTP by NEXU WP
Universal WordPress SMTP · Email Log · Resend · All Form Plugins Supported


Get Nexu Mail SMTP

Picture of Mahdi Jabinpour

Mahdi Jabinpour

As a sales-driven developer and the founder of NexuWP, Mahdi focuses on building WordPress solutions that don't just work—they convert. From AI-powered bulk translation engines to high-efficiency media offloading, he helps business owners automate the "grind" so they can focus on global growth. He is a pioneer in integrating advanced LLMs into the WordPress workflow.

RELATED POSTS

RELATED POSTS

3 Reviews
Richard Brown 4 months ago

Still not getting emails

Mansour jabinpour 4 months ago

We apologize for the trouble.

Elizabeth Hernandez 5 months ago

Hey everyone! Just had to share how much this guide saved me hours of frustration, no joke. i was about to lose it because my WPForms submissions kept disappearing into the void, and I was convinced the plugin was the problem. Nope! turns out it was my server's PHP mail handler all along, which I never would've figured out on my own. The way this guide breaks everything down made it so clear why my emails were getting eaten by spam filters.

Mansour jabinpour 5 months ago

We wrote this guide to save you time, and Let us know if you need anything else!

John Rodriguez 5 months ago

We made the switch to this SMTP setup after we kept losing leads from Contact Form 7 submissions that just never showed up. People would fill out forms, but the messages were going straight into the void. The guide's step by step instructions for setting up SMTP totally fixed it no more missing inquiries. it only took about 15 minutes once we had our host's credentials handy. the only thing to note is you'll have to dig into your hosting settings a bit, but that's really on your provider, not this solution

Mahdi Jabinpour 5 months ago

We created this guide because we know how frustrating lost leads can be.

Please log in to leave a review.