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 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.
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: email@example.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.
- 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.
- Scroll down to find List of Allowed Domains or and click the “+” plus to add your domain name.
- Scroll all the way to the bottom and select the recipient domain in the “If” dropdown.
- In the subsequent dialog box, add the domain you wish to allow. Click Save to return to the main screen.
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!