Picture this. You just finished building a very basic WordPress website using any one of several popular contact form plugins including WPForms, Gravity Forms, Ninja Forms, Pirate Forms, or the old stalwart (and arguably the easiest contact form plugin to set up and configure), Contact Form 7.
Maybe you’ve designed a detailed custom contact form with all the bells and whistles to gather as much information from users as possible. Or maybe you have decided to stick with a basic WordPress contact form and avoid complications. Your next step is to test your form. But, upon sending your first test message, you get an error that says that the message failed to send, or even worse — a confirmation displays in your browser saying the message was sent successfully, but you can’t find it anywhere in your inbox.
The Contact Form 7 plugin should be fairly easy to set up; all the video tutorials you’ve watched and blogs you’ve read say so. You dutifully follow all the instructions and send your first test message. But, to your dismay, you find no emails in your inbox. You might conclude that your Contact Form 7 plugin is broken.
What are you going to do now??!!
Has this ever happened to you? If so, you are not alone. According to the GoDaddy representative I spoke with yesterday (08/21/18) this issue is so common, he has personally had to train at least three different email support divisions within the company on how to fix it. In this blog post, I will explain the steps necessary to solve this contact form problem.
Why isn’t my contact form sending to my email?
There are a few reasons you may be experiencing the issue of “contact form not sending to email” including contact form plugin not set up correctly, issues with SMTP (Simple Mail Transfer Protocol) configuration, or overzealous spam filters. Let’s discuss each of these in more detail.
Ensuring correct contact form plugin setup
First, you must make sure your contact form email (and SMTP plugin, if applicable) settings are all set up correctly.
According to many YouTube videos and web tutorials, it should be a cinch to get a basic contact form working. Let me show you how easy it is supposed to be.
YouTuber Jordan Alexo says Contact Form 7 is probably the easiest contact form for newbies to set up.
“This plugin is ideal for beginners. Who normally don’t want to spend time setting up complex features or learning coding. You can nearly install this plugin and immediately start using it in your WordPress website.”
— Jordan Alexo
Another popular YouTuber, Bjorn Allpas at WPLearningLab provides these guidelines about what the fields in the Mail tab are:
- To: The email address where the contact message is sent upon submit
- From: The email address that the messages will be coming from.
That’s pretty much all you need to know to have an up-and-running simple and basic contact form. Allegedly.
That didn’t work for me, so I started troubleshooting.
Setting up WP Mail SMTP
Next, I began looking at SMTP as the possible culprit based on this article from WPForms, maker of another popular contact form plugin. The article has this to say on why using an SMTP plugin might be the answer to getting WordPress contact forms to send:
WordPress uses the PHP mail function to send emails generated by WordPress or any contact plugin like WPForms. However, many WordPress hosting servers are not configured to use the mail function.
Additionally, in order to reduce spam, your email provider often checks whether your email is originating from the location it claims to be originating from. For example, if your email server is yahoo.com but your email claims to be sent from your website’s domain, chances are your form notification will be blocked before it even reaches the spam folder.— WPForms.com
Many articles about this contact form not sending issue — including this one from Contact Form 7’s own website — mention recent (since 2016) policy changes within ISP’s and web hosts trying to prevent spam. These sources explain that the email message sent from the contact form may end up in your Spam folder if the domain of the website where the contact form resides doesn’t match the domain of the email.
Calling GoDaddy for support
I installed WP Easy SMTP contact form plugin easily enough. The configuration seemed easy, but apparently I had something wrong. The plugin includes a handy “Test” button where you can see if your form is sending. If you are not receiving any emails from a contact form, one of two things is the case: Either your form cannot send or your form is sending, but your email is not reaching the inbox.
At first my form was not sending. After a bunch of troubleshooting, I called GoDaddy. Their representative had no clue, though he tried to be helpful. He said he had never heard of this issue, but he verified that the servers were working on his end. That’s something I might get into more later — the trouble with saying “the servers” and not clarifying whether you are talking about email servers, web servers, or some other kind of server. I realize it is likely that non-technical folks might just refer to “the servers” because that was what they were taught, and if asked, they couldn’t tell you what a server really does.
But, at the time I didn’t know that I needed to ask to be transferred to Email Support. GoDaddy has an entire support division dedicated to just email.
GoDaddy couldn’t help me, though. I prepared to resume troubleshooting by first disabling WP Easy SMTP. All of a sudden my contact form was sending — at least it was saying
Thank you for your message. It has been sent.
That was a clue, but left me even more confused. I was using Mozilla Thunderbird as my desktop email management application since it was free. I had my Spam/Junk folder set up also and had consistently checked it, but nothing ever was received in it. So, I ruled out that my contact emails were being routed to spam. Part of the problem is ambiguous language. Big time.
Next, I tried to solve my contact form issue by creating this scenario (not the real domain):
- Web URL: mydomain.com
- From Email: eric@mydomain.com
Imagine my surprise when it didn’t work.
I had trouble changing the site email address (the one you enter when you first setup and install your WordPress self-hosted website) also. It had a gmail address and I tried to change it to eric@mydomain, and a message displayed under the email field saying the email change was pending. This means go to your email and click the “confirm email change” button in your inbox. But, when I checked my inbox — you guessed it: there was no confirmation email. I’m guessing this issue and the contact form not sending are both related.
So SMTP wasn’t necessary in my situation, and neither contact form emails, nor emails sent from the WordPress application were getting through.
My second call to GoDaddy
I posted some calls for help on WordPress.org and Stack Overflow immediately after that original call to GoDaddy. The most useful tip is I got from the forums was that It most likely was an issue with GoDaddy and Office365 and that I should call GoDaddy again to get them to configure the servers.
Then I called GoDaddy and this time was surprised to end up in the right division “Email Support” talking to an intelligent, courteous, and knowledgeable representative who was very familiar with this issue. He said the root cause was that Microsoft Exchange was intercepting the emails from the contact form. He explained that though it is important for the “From” email to have the same domain as the website the contact form lives on, because of GoDaddy’s added email security measures, and something about whether it was a cPanel email versus a dedicated email (?), one more thing was required before the contact form could act correctly: I needed to set up a spam email exception in Exchange Admin Center (EAC).
He walked me through it and I have recorded the steps here for you. Based on how hard I looked for this information on the internet and the amount of other people having similar issues and no solutions, I believe this is the first time these steps have been presented as a solution to the issue of contact form not sending emails.
How to set up a Microsoft Exchange spam email exception in Office365
You will notice the Microsoft Exchange Admin dashboard looks a bit like the dashboard in WordPress.org self-hosted websites. Here are the steps to login to Microsoft Exchange Admin Center and set an email spam exception for your web domain:
- Log into your GoDaddy email account
- In the same browser, different tab, navigate to https://outlook.office.com/ecp
- In the Exchange Admin Center (also called “Exchange management center” when translated from Dutch into English) click Protection (or Security) in the dashboard navigation menu on the left.
Creating a new spam filter exception (Credit: Eric Hepperle, 2018) - In the new menu that appears at the top, click Spam Filter. In my browser it was the third option from the left. Click the plus sign.
- Enter the new spam policy filter name and description. Leave other settings alone and scroll down.
Enter name and description for new spam filter exception (Credit: Eric Hepperle, 2018) - Scroll down to find List of Allowed Domains or and click the “+” plus to add your domain name.
Click plus to add allowed domain (Credit: Eric Hepperle, 2018) - Scroll all the way to the bottom and select the recipient domain in the “If” dropdown.
Select address domain in the If dropdown (Credit: Eric Hepperle, 2018) - In the subsequent dialog box, add the domain you wish to allow. Click Save to return to the main screen.
Click add button to complete the process (Credit: Eric Hepperle, 2018)
Now your contact form should be working.
If I missed anything or you have suggestions for improvement please let me know in the comments below. Please share this post if you liked it!
Did they happen to mention how to do this, if you’re not using Office 365? It seems this is happening to our plugin. But our client who uses Godaddy is not using Office 365, so this particular method won’t work for him.
My understanding is that GoDaddy uses Microsoft Exchange on their backend and this is irrespective of whether or not a given GoDaddy customer uses Office 365 on their personal or business machine. Therefore, this technique should work for anyone. I recommend contacting GoDaddy support, referencing my blog post and see what they say. If you get someone knowledgeable (like I did after a few tries) they should understand and will be able to walk you through.
Good luck and let me know if it works out.
For the good of the universe, I had similar issues using Contact Form 7 with my Godaddy supported wordpress site. I spent several hours working on it before I called GoDaddy. In my case, the form would say that the mail was sent but would never arrive at my GoDaddy e-mail address. Also, when I clicked, “Forgot my password” on the WordPress login screen it wouldn’t go through either, so the problem was with WordPress not sending e-mail, not my plugin having a problem. In any extent, the mail support guy fixed it in like 2 seconds. He said in… Read more »
Thanks for sharing this tip, Nick!
Yes exactly you will have to change the default mail routing setting from auto-detect to using external mail server, although it indeed is using godaddy legacy secureserver.net server.
It had taken me so long to find a fix for this issue on my website and was beginning to think GoDaddy hosted WordPress with Office365 just wasn’t going to work with contact forms. Thank you so much for documenting your problem solving. Contact form submissions now appear in Inbox every time. Cheers!
Thanks for your comment Justin! I’m so glad my research efforts helped you!
If you try to do this now. A warning comes up at the bottom that says: “WARNING: Do not add domains you own or popular domains (e.g. microsoft.com) to the Domain allow list. This is considered high risk since it creates opportunities for bad actors to send you mail that would otherwise be filtered out.” I have had my office 365 hacked before. So I won’t be doing this method for this reason. Thank you anyways.
Thanks for letting us know about this Lowell! Websites are constantly changing their systems so what worked a year ago may not work tomorrow. It is a constantly moving target, unfortunately.
What about the SMTP info, what did you write there? in Easy SMTP plugin? also did you change anything in the MX Cords of the cPanel?
I wish I could remember. I have memory issues with brain fog so I am most successful when I write everything down. I know I had to dig and do a lot of research and I believe I may have used these two videos as sources. Perhaps they will help:
– https://www.youtube.com/watch?v=bgxfiL1GJfY
– https://www.youtube.com/watch?v=bT6o5dKAQcE
This is amazing thank you so much I was stuck for almost two weeks solely because of this contact form issue. I applied this solution and also the elementor pro form works great with this.
So happy to hear this works with Elementor!
Thank you!! This work perfectly for me to help a customer get their web form submittals!
I am glad the article was helpful Sarah! Make sure to subscribe to be notified about new posts. I’ll be posting a lot more in the upcoming weeks! 🙂
good article. What if you have Bluehost instead of godaddy? I use my domain name email as the “From Email”(WP mailSMTP plugin). Do I need to contact Bluehost and ask them to setup a spam email exception? Thanks.
Good question Harold. I’m not sure what Bluehost’s procedure is for that, but I would imagine it would be similar to GoDaddy’s. I would encourage you to contact Bluehost directly or check their website FAQ. I did a quick Google search and found this link for you — Hope it helps! https://www.bluehost.com/help/article/email-deliverability-problems
I’ll add a few cents to this. Since Godaddy isn’t hosting my DNS Records, On my side, within CPANEL, Email Routing -> Changed to remote mail exchanger.
For the email to spam issue, I did two things:
1. Updated the Contact 7 form to include an additional header, “MyStupidHeader: FromMySite”
2. Opened the exchange admin site outlook.office.com/ecp and in mailflow, rules, added a rule “bypass spam filtering, that reads if the message header matches the following pattern: “MyStupidHeader” with value “FromMySite”.