Premium hosting, support and maintenance for Australian businesses

Insights & resources

Why Your Contact Form Emails Aren’t Arriving (Hint: It’s Probably Your Server)

Thoughtful woman at an office desk with a laptop, looking away from the screen

When a WordPress contact form stops sending email, the form usually works fine. The problem is how the email leaves your website. By default, WordPress hands messages to the web server to send, without logging in to a real mail service, so Gmail and Outlook often junk or reject them. The fix is to send form emails through your actual email provider using SMTP, with the right From address and DNS records.

Key takeaways

  • A “thank you” message on screen doesn’t mean the email arrived. It only means WordPress handed it off.
  • WordPress sends through the web server by default, which inbox providers increasingly distrust.
  • Never use the visitor’s email address as the From address. Put it in Reply-To instead.
  • Sending through SMTP, with SPF and DKIM set up, fixes most missing form emails.
  • Save form entries in WordPress too, so nothing is lost if email fails again.

How do I know my form emails are going missing?

This fault is silent, which is why it’s so costly. The form shows its success message, the visitor leaves happy, and the enquiry never reaches you. Many owners only notice when enquiries dry up or a customer calls asking why nobody replied.

Test it now. Fill in your own form from a phone, using a personal Gmail or Outlook address, and mention something you’ll recognise. Then check your inbox, your junk folder and any shared mailboxes. If nothing arrives within a few minutes, you have a delivery problem.

Why does WordPress fail to send form emails?

1. It’s sending through PHP mail on the web server

Out of the box, WordPress uses PHP’s built-in mail function. The WordPress core code even warns that a successful result “does not automatically mean that the user received the email successfully” (WordPress core). It just means the server accepted the job. What happens next depends on a server that was never set up to be a trusted mail sender.

2. The From address doesn’t belong to your website

Many forms are set to send “from” the visitor’s own address, so you can hit Reply. To Gmail, that looks like your web server pretending to be someone at gmail.com. That’s exactly what spoofed spam looks like, so it gets blocked. The From address should be on your own domain, with the visitor’s address in the Reply-To field.

3. SPF and DKIM are missing or wrong

SPF and DKIM are DNS records that prove a server is allowed to send email for your domain. Since February 2024, Google has required everyone sending to Gmail to set up SPF or DKIM (Gmail Help). Google also notes that mail from servers not listed in your SPF record can be marked as spam (Google Workspace). If your SPF lists Microsoft 365 but not your web server, the form’s emails fail the check.

Man reading a message on his smartphone at a desk with a laptop and office phone
Test your form from a phone and check the inbox and the junk folder Photo: Pexels

4. The email never leaves the server

This one catches a lot of businesses. If your email is on Microsoft 365 or Google Workspace, but the web server still thinks it handles mail for your domain, it delivers form emails to a local mailbox nobody checks. The messages exist, just not where you look.

5. The server is blocked or rate-limited

Some hosts limit or block outgoing mail from websites. On shared hosting, your server’s address may also have a poor reputation because of another site’s spam. If your own site has been hacked and is sending junk, that’s more serious; our guide to a website sending spam emails covers it.

6. The form itself has broken

Sometimes the problem is earlier. A plugin update, a JavaScript error or a misconfigured CAPTCHA can stop the form submitting at all. It’s one of the common WordPress problems we see after updates.

What does a reliable setup look like?

Two ways a contact form email can be sentA contact form is submitted. Path A: PHP mail from the web server, with no login and often no SPF or DKIM match, usually ends in the junk folder or is silently rejected. Path B: SMTP through your email provider, logged in and passing SPF and DKIM, is delivered to the inbox.A visitor submits your contact formPath A: PHP mail from the web serverNo login, and often no SPF or DKIM matchResult: junk folder, or silently rejectedPath B: SMTP through your email providerLogged in, and passes SPF and DKIM checksResult: delivered to the inbox
Same form, same message. How it’s sent decides whether you ever see it.

How do I fix it?

  1. Confirm the form submits. Turn on entry storage in your form plugin, or check its entries screen. If entries appear but emails don’t, the problem is delivery.
  2. Fix the From address. Set it to an address on your own domain, such as [email protected]. Put the visitor’s email in Reply-To.
  3. Send through SMTP. Install a reputable SMTP plugin and connect it to your email provider, such as Microsoft 365 or Google Workspace, or to a transactional email service.
  4. Check your DNS records. Make sure SPF includes the service sending your form mail, and turn on DKIM for it. Add a DMARC record if you don’t have one.
  5. Fix local delivery. If your email is hosted elsewhere, tell the web server not to handle mail for your domain.
  6. Test again. Send test entries to a Gmail and an Outlook address and confirm they land in the inbox, not junk.

If DNS records are unfamiliar territory, our guide to setting up a business email address explains SPF, DKIM and DMARC in plain English.

Cafe owner working on a laptop behind the counter
A quick monthly test submission catches the problem before it costs you Photo: Pexels

How do I stop it happening again?

Make a test submission part of your monthly routine, and always after plugin updates. While you’re checking the site, it’s a good time to fix broken links too. Keep entry storage switched on, so an email failure never means a lost lead.

If you’d rather not chase this yourself, our fast WordPress repairs team can trace and fix missing form emails. For ongoing cover, our website maintenance plans include form checks after updates on Advantage and above, and you can reach us through website support when something looks wrong. If a bigger fault has taken the site down, see our guide to emergency WordPress repair.

Frequently asked questions

Why does my form say the message was sent when I never got it?

The success message only means WordPress handed the email to the server. It can’t see what happens after that. If the email is rejected or junked by the receiving mail service, the form still shows success. That’s why testing delivery, not just submission, matters.

Do I need an SMTP plugin for Contact Form 7?

Usually, yes. Contact Form 7, like most form plugins, sends through WordPress’s standard mail function. An SMTP plugin makes those emails go through your real email provider instead, which is far more reliable. It works for every form plugin on the site.

Why are my form emails going to junk?

Usually because they fail SPF or DKIM checks, or the From address doesn’t match the server sending them. Sending through SMTP with your own domain in the From address, plus correct SPF and DKIM records, normally solves it.

Can I get back the enquiries I missed?

Sometimes. If your form plugin stores entries, they’ll be in the WordPress dashboard. Emails delivered to a local mailbox on the server may also still be there. If neither was set up, the messages are usually gone, so turn on entry storage now.

Is this my host’s fault?

Partly, sometimes. Hosts that block outgoing mail or share a poorly rated server address make things worse. But the main fix, sending through SMTP with correct DNS records, is a website setting. A good host or maintenance provider will help you set it up.

Sources

  1. wp_mail() in pluggable.php, WordPress core source code
  2. Email sender guidelines, Gmail Help
  3. Set up SPF, Google Workspace Admin Help

Want us to look after this for you?

Hosting, updates, backups and security, handled by an Australian team, so you can get back to running your business.