When Contact Form 7 forms fail to send emails, it’s usually due to a few common issues. Below, I break down the typical causes and corresponding solutions.
I go through how to fix configuration errors, server settings, plugin conflicts, and even get over PHP mail limitations.
Why is Contact Form 7 not sending email?
While there can be many reasons why Contact Form 7 is not sending emails properly, they usually fall into two main buckets:
- The emails are actually not being sent – due to various configuration issues or server limitations
- The emails are being sent, you’re just not seeing them in your inbox – aka. they don’t arrive
I’ll try to go through all of that:
1. Incorrect email configuration in Contact Form 7
The most frequent culprit is actually a misconfigured “From” or “To” address field in Contact Form 7’s mail settings. If those addresses are incorrect, the resulting message starts looking like email spoofing – in other words, don’t expect it to actually be delivered anywhere.
By default, CF7 might use the form submitter’s email as the “From” address. Or, you might be tempted to use your own personal email address there. This creates some issues.
For example, sending an email “from” an email like karol@gmail.com
when my website is on themeisle.com
results in an error. Many hosts and email providers block or flag such emails as spam because (actual error message): “Sender email address does not belong to the site domain.”
This is meant to prevent spam and phishing (since spammers often spoof email addresses). If CF7 shows a configuration warning about the sender address domain, this is likely the issue.
👉 How to fix this:
Simply configure Contact Form 7 to use an email address under the site’s own domain as the sender.
Go to Contact → Contact Forms → Mail tab, and set the “From” field to an address like contact@yourdomain.com
or wordpress@yourdomain.com
.

It’s best if this email actually exists, though it’s not a requirement. It’s just that some hosts block outgoing mail from nonexistent addresses. So consider creating the mailbox in your hosting control panel if the emails are still not being delivered even if you’ve gone through this step.
While you’re at it, also set the “Reply-To” header so that when you hit reply (when you want to respond to the person who contacted you), the email actually goes to that person.
In the Additional Headers field, add: Reply-To: [your-name] <[your-email]>

Important!
While we’re here, also double-check the “To” address in the CF7 settings. It should be the email where you want to receive form messages (your actual address). Typos here can obviously prevent delivery. Contact Form 7 will normally show an error if this field is blank or invalid.
By default, CF7 will use the [_site_admin_email]
variable in the “To” field. This is correct as long as the email address you have assigned to the main admin user is correct. If you’re not sure, just put your actual email address there instead of the variable.
Also make sure that the email has a subject and body text. A very short message can fail on certain hosts or trigger spam filters.
2. PHP mail limitations
If your form was working before and suddenly stopped sending emails (with no changes on your end), the issue might lie with your server’s mail
function.
A quick lesson. WordPress uses the wp_mail()
function to send all its email – for whatever purpose and by whatever element of WordPress – this includes CF7 (it also uses wp_mail()
). However, that wp_mail()
function actually relies on the underlying PHP mail()
function.
But here’s the problem. On some hosting providers, PHP mail might be limited in some way. For instance, hosts can temporarily block email sending from your site if they detect unusual activity (like a spike in form submissions, which could indicate spam or a brute-force attack). There may be invisible limits (e.g. max emails per hour) or misconfigurations.
If Contact Form 7 shows a red error border on submission (e.g. “Failed to send your message”), it indicates a mail server error.
One common scenario: if the form is sending to an address on the same domain (e.g. sending to karol@yourdomain.com
) but your domain’s email is actually hosted elsewhere (like Google Workspace or Outlook 365), the server might be trying to deliver it locally and failing. For example, on cPanel hosts you may need to set your email routing to “Remote” so the message is routed out to the external mail server instead of looking for a local mailbox.
👉 How to fix this:
First, verify with your hosting provider that your server can send PHP mail. If it was working previously, it should probably continue to work. You can ask the support to give you a quick answer.
The host can check server mail logs to see if emails were sent or blocked. If you use cPanel and an external email service for your domain, log into cPanel and ensure the Email Routing (MX settings) is set to use the remote mail exchanger:

Correcting this setting can immediately fix the issue of emails not even leaving the server.
3. Server refusing to deliver email
If the two steps above didn’t fix your issue, then it’s probably the right moment to realize one thing:
Your web server is optimized to host your WordPress site, not necessarily to send emails – from Contact Form 7 or otherwise.
This becomes even more problematic if you’re on a shared hosting. In that scenario, there are multiple other sites – clients – just like you, all trying to send their emails at the same time and from the same server. Some of those users send little email, some send a lot. Either way, the entire server’s deliverability is impacted by each individual user.
This can have various consequences, the main one being that the server’s reputation can get hit, which in plain English means that the receiving servers might not trust your server as much any more and decide to flag your messages as spam.
Also, emails sent via PHP mail lack modern authentication (SPF, DKIM), which just adds another puzzle piece contributing to your email being mistaken for spam. Many popular email providers (Gmail, Yahoo, Outlook) aggressively filter unauthenticated emails.
And the worst thing is that this can happen without the email ever showing up in your spam folder, especially if it’s rejected outright by the receiving mail server’s filters.
👉 How to fix this:
In short, the solution is this: use an SMTP plugin and a dedicated email sending service instead of relying on your server’s PHP mail.
SMTP uses proper authentication and a mail server to send emails, which drastically improves deliverability. Unlike your hosting server, these servers are optimized specifically for sending emails (and keeping those emails out of recipients’ spam folders).
You have multiple options for SMTP plugins for WordPress. Some of the most popular ones are:
Each one of these plugins is free, but you may have to upgrade to a premium version to access some of the advanced features.
I’ll use WP Mail SMTP for the tutorial below.
First, install and activate the plugin on your site. This is a standard WordPress plugin, so you can install it normally. A setup wizard should appear. Click on Let’s Get Started and then choose an SMPT mailer you want to use.

As you can see, there’s a lot of options available. If you’re not sure which one to pick, Brevo is a great solution that you can also use for free as long as you won’t be sending more than 300 emails per day. Here’s a review of Brevo + how to set it up.
Of course, any further settings will depend on the sender that you choose, but in general, you can expect to have to provide an API key of some kind, set your sending domain (your site) and maybe login/password to your sender account.

Alternatively, you can pick Gmail as your sender, but keep in mind that you might experience a new range of problems with that. Here’s what WP Mail SMTP says about integrating Gmail:

You decide if that’s okay or not. Setting up the Gmail sending service is a somewhat lengthy process because you’ll need to create a Google Cloud API key to use it. Here’s a link to the developer’s documentation. I recommend following it carefully.
Once you’re done through the setup, test if everything works correctly:
Just send a test email using the WP Mail SMTP plugin. It’s very simple. Go to WP Mail SMTP → Tools → Email Test and provide your email address in the Send To field and click on Send Email.

If you do receive the email, you’re good to go!
Using SMTP essentially bypasses the host’s PHP mail limitations and delivers emails through a real mail server with authentication, so your Contact Form 7 emails are far more likely to reach you.
Now the best part is that Contact Form 7 will now automatically send its emails using the dedicated sending service – you don’t need to do any other config inside CF7 itself.
4. Other plugins conflicting
Interference from other plugins can also cause CF7 emails to fail. Contact Form 7 has built-in spam filtering (and often integrates with Google reCAPTCHA or Akismet). If a submission is flagged as spam, CF7 just discards the email and typically shows an error with an orange border on the form frontend.
Other potential conflicts may involve JavaScript errors from your theme or another plugin preventing the form from submitting properly (CF7 submits via AJAX). If the form hangs or gives a generic error, check your browser console for errors.
Additionally, if you have any security or email plugins installed, they might be affecting outgoing mail. For example, if you had an SMTP plugin previously configured but that config is no longer correct then this will naturally disrupt mail delivery.
👉 How to fix this:
Start by testing the contact form yourself and checking the response message you get from CF7:
- Red border error means a hard sending failure – the email wasn’t sent at all.
- In the case of orange errors, consider your spam prevention. Disable your captchas temporarily. If using Akismet or another anti-spam plugin integrated with CF7, check its logs or temporarily turn it off, too.
Next, do a plugin conflict test: disable other plugins that might be interfering. Start with plugins related to email or ones you remember sending you email. Plugins for other forms, security, performance are usually good first suspects.
If the form starts sending when a certain plugin is off, you’ve found your conflict. Check that plugin’s settings or contact its support.
Other diagnostic tools and best practices
If you’re still having trouble figuring this out, there are a couple more things you can do:
Set up email logging
Install a plugin like WP Mail Logging. It records every outgoing email attempt from your WordPress site.
Basically, after submitting your form, check the log to see if an email send attempt was made.
- If you see an entry for the form email and it’s marked “Successful” (and shows no errors), WordPress successfully handed it off, so the problem is likely deliverability.
- If you see an entry with an error, or no entry at all, that indicates the send didn’t even occur. So possibly a configuration issue or conflict preventing CF7 from executing
wp_mail()
.
This info guides your next steps (focus on server settings vs spam issues). Remember to clear or disable the log when done testing, so it doesn’t fill your database indefinitely.
Store form send attempts in the database
You can use our own Redirection for Contact Form 7 plugin for that.
One of its free features is that it’s going to store all CF7 submissions in WordPress (apart from CF7 sending the email).
Use it as a safety net. Basically, you can always retrieve messages from the wp-admin even if emails fail. This is especially useful while you fix the email problem, so nothing gets lost.
Check your domain’s DNS settings
Simply speaking, your domain name needs to be configured correctly if you want it to be able to send email. There are specific DNS records that handle this.
First, use an online testing tool to check your domain’s DNS for SPF/DKIM configuration. Also verify MX records if you use external email hosting (to ensure emails aren’t being misrouted internally).
Your domain needs an SPF record that includes your sending server (or your SMTP service) and a DKIM record if available. This isn’t strictly required for the form to send, but it strongly improves chances that your emails aren’t blocked as spoofed.
If you switched to an SMTP service, they often provide the necessary DNS settings to add during initial setup.
Other common Contact Form 7 errors
Some of you are going to encounter certain errors while fixing the email not sending issue. In this section, I’ll dive into why the errors occur and how to fix them:
“There was an error trying to send your message. Please try again later”
This particular error is caused by a reCAPTCHA issue or misconfiguration of the contact form.
☑️ Fixing misconfiguration
Go to Contact → Contact Forms. You are likely to see the following message: “Misconfiguration leads to mail delivery failure or other troubles. Validate your contact form now.”
Click on Validate Contact Form 7 Configuration and then validate your form.
That’s it. The error should disappear.
☑️ Fixing reCAPTCHA
If you don’t see the “Misconfiguration leads to mail delivery failure or other troubles” message, then the error is likely caused by your form’s reCAPTCHA config.
Contact Form 7 only allows you to use reCAPTCHA v3 by default, which is known to cause different types of errors on a WordPress website. The most effective way of dealing with this problem is to downgrade from reCAPTCHA v3 to v2 with the help of a plugin like this one.
“Invalid mailbox syntax is used”
This error occurs when you make a mistake in your email address “From” field.
You can fix this error by checking for typos and formatting issues in the email address.

“Misconfiguration leads to mail delivery failure or other troubles. Validate your contact forms now.”
This one is a rare error, and it usually appears when a new validation item is added to the plugin by the developer. This can happen after you update the plugin to a newer version. After upgrading to that version, you can start seeing the misconfiguration error.
To fix the error, go to Contact → Contact Forms. The plugin should show you the following message: “Misconfiguration leads to mail delivery failure or other troubles. Validate your contact form now.”
Click on Validate Contact Form 7 Configuration and then validate your form.
That’s it. The error will disappear.
Final thoughts on Contact Form 7 not sending email
If you’re having issues with Contact Form 7 not sending emails, chances are there’s something wrong with the plugin’s configuration.
👉 Here’s my guide on how to configure this plugin correctly, by the way.
I hope you’ve found your solution in this guide and that your forms are working now!
If I were to point out the single best solution to any email sending problems like this, it would be switching your site to SMTP rather than using WordPress native mailing functions. As I mentioned, web servers aren’t commonly made to send email. That’s why SMTP services (such as Brevo) will do a lot better job.
Either way, if you have any questions about how to fix Contact Form 7 not sending email, let us know in the comments section below!
Or start the conversation in our Facebook group for WordPress professionals. Find answers, share tips, and get help from other WordPress experts. Join now (it’s free)!