Skip to content

Blog 5 min read

Your contact form isn't sending emails. Here's why

Why WordPress contact forms stop sending, or send straight into spam, and how to fix it so the enquiries reach you.

Your website is sending the email. Gmail or Outlook is binning it, because it turned up claiming to be from your business and had no way of proving it.

Out of the box, WordPress hands form emails to the web server and lets the server post them. That server isn't your email provider. So a message lands saying it's from hello@yourbusiness.co.uk, the receiving end checks your domain for anything that vouches for the machine that sent it, finds nothing, and treats it as a fake. Spam folder if you're lucky. If you're not, it vanishes and nobody gets told. The fix is to send form emails through a proper email sending service and add two records to your domain saying that service is allowed to send as you. Half an hour's work for somebody who's done it before, and a week of swearing for somebody who hasn't.

The form looks fine, and that's the problem

A broken contact form doesn't look broken. The visitor fills it in, presses send, and gets a green tick and a thank you. That tick means the website did its bit. Whether an email arrived anywhere is a separate question it doesn't ask.

So nobody complains. The person who wanted to hire you assumes you can't be bothered replying and rings the next firm on Google, and you put the lack of enquiries down to a slow month.

Craig, who runs Genius Division (the agency behind Better), said on camera back in 2024 that on websites we didn't build, contact forms go nowhere 90% of the time. That's his own count from the sites that land on our desk. Nobody ran a survey, and the original had a swear word in the middle of it.

Why WordPress form emails go missing

Nothing vouches for the server

Two records on your domain do the vouching. SPF is a list of the servers allowed to send email as you. DKIM is a signature stamped on each email, which the receiving end checks against a key published on your domain. Your SPF record lists your email provider, Microsoft or Google or whoever, and your web server isn't on it. The web server can't sign anything with your DKIM key either. So the email fails both checks before anyone reads a word.

If your domain also has a DMARC record telling everyone to reject mail that fails those checks, the email doesn't even make it to spam. It gets refused at the door.

The form is pretending to be the visitor

Some forms set the "from" address to whatever the visitor typed in. So your web server sends an email claiming to come from somebody's Gmail account, and spam filters treat that as the forgery it is. The visitor's address belongs in the reply-to field, where hitting reply still gets you back to them. The "from" should be an address on your own domain.

It's going to someone who left

The form sends to whoever set it up. Whoever set it up left in 2021, and their mailbox was switched off a month later. Or it goes to an info@ address that forwards to another address that was deleted when you changed email provider. The emails are arriving perfectly. Nobody's there.

The host won't send it

Some hosting companies limit or switch off email from their servers, because a hacked website on shared hosting is a spam cannon and they'd rather not be blocklisted. Fair enough from where they're sitting. You just don't get told.

Something got updated

A plugin update changes how the form plugin talks to the rest of the site, or the spam protection on the form stops loading, and every submission fails without a sound. This is the one we see after somebody presses "update all" on a Friday afternoon. It's also why we test forms after updates, which we've written about in what website maintenance includes.

A form that was never going to work

Earlier this year, a business owner asked Craig to look at his website because the contact form didn't work. He'd built the site himself on one of the big website builders, with an AI tool talking him through it, so this one isn't WordPress. Same problem, though.

Craig went up to his office to have a look. The form needed records adding to his domain and a key generating for the email sending service. The AI had told him to do both, step by step. He'd read the instructions and not understood any of it. Why would he? They're written for people who do this for a living. The website looked finished and had never sent a single enquiry.

Test yours properly

Fill in your form from your phone, using a personal email address, and write something you'll recognise. Then check the inbox it's meant to land in, spam folder included, and whether pressing reply goes back to your personal address.

Once isn't enough, mind. A form that worked in March can stop in June. One way it happens is dull: the business moves its email to Microsoft 365, somebody redoes the domain records, and nobody remembers the website was sending email too. The SPF record gets rewritten without it, and from that day the form emails fail.

The proper fix

Send the website's email through a transactional email service (Postmark, Mailgun, Amazon SES and Brevo all do this) using an SMTP plugin, so it goes out through a company whose job is getting email delivered. SMTP is just the standard way email gets handed from one server to the next. Then:

  • add the service to your SPF record and publish its DKIM key on your domain
  • set the "from" address to one on your own domain, with the visitor's address as reply-to
  • make sure the form keeps a copy of every entry inside WordPress
  • send a test from the live site and check the email's headers say SPF and DKIM passed

The copy inside WordPress is the safety net. If the email fails, the enquiry is still sat in the website waiting for you. Some form plugins store entries by default. Contact Form 7, one of the most used, doesn't unless you add another plugin to do it.

Done properly, that's a one-off job. Checking it still works is the bit that never ends.

What we do about it

Every Better plan includes an email and contact form health check: we send test submissions and make sure they arrive. Better+ adds spam protection on the forms, because a form that works and fills your inbox with offers of cheap SEO from strangers is only slightly better than one that doesn't. The full list of what we look at is on what makes us Better.

We'd tell you to test your form every month. We also charge for testing your form every month, so take that how you like. You can do it yourself for free with a phone and a spare five minutes. You won't remember to, and that's how the enquiries go missing in the first place.

If a customer has ever said "I filled in your form and never heard back", believe them, and go and check.

Contact form not working?

Book a call and we'll test your form, find out where the emails are going, and fix it.
Book a call