WordPress contact form not working

Why your WordPress contact form is losing you customers

If your WordPress contact form isn't sending emails, the form itself isn't the problem. It still looks fine, the submit button still says "sent", but the enquiries aren't reaching your inbox and the customers aren't coming back. Here's why it happens, how to test yours, and how to fix it.

Published 16 January 2026 - 4 minute read

The silent failure

The worst kind of broken is the kind you can’t see. A WordPress contact form that fails loudly, with a red error on the page, gets fixed the same day. A form that takes the submission, flashes “Thanks, we’ll be in touch”, and then silently drops the email on its way out? That one bleeds customers for months.

If you have a WordPress site and your contact form runs through a plugin like Contact Form 7, WPForms, Ninja Forms, or Gravity Forms, there’s a good chance you’re in this situation right now and don’t know it. The form still works. The emails just aren’t arriving.

The real cost

The trades and small services we’ve spoken to who switched from a WordPress contact form often describe the same pattern in hindsight. Enquiries were coming in, then over a few weeks they slowed, then they stopped. They blamed the season, the economy, Google. Then someone tested the form and found it had been broken for months.

A quiet period for a dog walker or a plumber is rarely the market. It’s usually the form. If your website generates most of your leads, a silently broken form is the single most expensive bug in your business. Two enquiries a week at an average job value of £150 is more than £15,000 a year walking past you.

Why it breaks

WordPress doesn’t run its own mail server. When a contact form is submitted, the email is passed through WordPress’s wp_mail() function, which by default drops it into PHP’s built-in mail function, which then hands it to your hosting company’s mail server to deliver. There are four common places this chain breaks:

  • Your host blocks or throttles outgoing mail. Most shared hosts (Bluehost, SiteGround, Hostinger) rate-limit PHP mail or rewrite the sender to something generic. Gmail and Outlook then mark it as suspicious.
  • SPF, DKIM, and DMARC reject the message. If your domain’s email records say “only Google can send mail from @yourbusiness.com” and your WordPress server tries to send as you, it gets dropped without a bounce.
  • A plugin update changes the sending behaviour. You update WordPress, a form plugin, or an SMTP plugin. Something in the config no longer matches. Submissions start failing the next morning.
  • Spam filters quietly tighten. Gmail’s spam policy changed in 2024. Many forms that worked fine before now land in spam without warning, and most people don’t check the spam folder of the address their website sends to.

How to test if your WordPress contact form is broken

Don’t test with your own email address. Your own domain’s mail server often accepts its own mail even when outside recipients don’t. Instead:

  1. Open your site in a private window (so you’re signed out of WordPress).
  2. Fill in the contact form using a personal Gmail or Outlook address you own.
  3. Wait five minutes. Check the inbox. Check spam. Check promotions.

If the test email didn’t arrive, or it landed in spam, your real customers are hitting the same wall. Now multiply that by every enquiry you’ve had in the last six months.

How to fix a WordPress contact form that’s not sending emails

There’s a technical workaround. Install an SMTP plugin, sign up for a transactional email service, configure SPF and DKIM records on your DNS, and route notifications through that instead of PHP mail. It works. It also costs money, needs a technical person, and leaves you maintaining a plugin and a paid service on top of everything else WordPress already asks you to keep patched. You’re still relying on WordPress, PHP, your host, and a third-party mail provider. Four things that can quietly break.

The simpler fix is to stop asking WordPress to send email at all. An external feedback widget sits on your site as a small button in the corner, accepts submissions on its own infrastructure, and emails you directly from a service whose only job is delivering that email. Nothing touches your WordPress mail stack.

That’s what Hi Widget does. You paste one line of code into your theme header or a snippet plugin, the button appears on every page, and when someone leaves a message it arrives in your inbox immediately. £9/month, works on WordPress.com Business plans and any self-hosted WordPress site, sets up in about two minutes.

And once the basics are working, the Pro plan (£19/month) adds polls so visitors can vote on ideas (“Which service should we add next?”) and custom forms so you can ask exactly what you need up front (quote details, preferred dates, service options) rather than emailing back and forth. Same install, same script tag, more control over what you collect.

Frequently asked questions

Why is my WordPress contact form not working?

In most cases the form itself is fine; the email delivery behind it has broken. WordPress routes form submissions through wp_mail, which by default uses PHP’s built-in mail function and your host’s mail server. Hosts throttle it, inbox providers like Gmail now reject unauthenticated mail, and a plugin update or spam filter change can quietly stop delivery without any error on the page.

How do I fix a WordPress contact form that's not sending emails?

You have two options. Install an SMTP plugin like WP Mail SMTP and connect it to a transactional email service such as SendGrid or Mailgun (technical, needs DNS changes and ongoing maintenance). Or bypass WordPress’s mail stack entirely with an external widget like Hi Widget, which accepts submissions on its own infrastructure and emails you directly in about two minutes.

How do I test if my WordPress contact form is broken?

Open your site in a private browsing window so you’re logged out of WordPress, fill in the contact form using a personal email address you own (Gmail, Outlook), and wait five minutes. Check the inbox, spam, and promotions folders. If the test message doesn’t arrive or lands in spam, real customers are hitting the same problem.

Why is Contact Form 7 not sending emails?

Contact Form 7 doesn’t send email itself; it hands submissions to WordPress’s wp_mail function, which uses PHP’s mail function by default. When your host blocks or throttles PHP mail, or when Gmail rejects the message for failing SPF/DKIM authentication, Contact Form 7 reports success on the page but the email never arrives. Switching to SMTP or using an external form widget avoids the issue.

Why is WPForms not sending emails?

WPForms uses wp_mail the same way Contact Form 7 does, so it fails for the same reasons: shared-host PHP mail blocks, missing SPF/DKIM authentication, and Gmail’s 2024 bulk-sender rules. The WPForms team publishes WP Mail SMTP as the recommended fix. An external widget that doesn’t depend on WordPress mail at all is the simpler alternative.

Will Hi Widget work with WordPress?

Yes. Paste one line of code into your theme’s header or a Code Snippets plugin. It works on WordPress.com Business plans and any self-hosted WordPress site. No PHP, no database changes, no plugin conflicts.

Can I do more than collect contact form submissions with Hi Widget?

Yes. The Starter plan (£9/month) gives you the feedback button. The Pro plan (£19/month) adds two extras. Polls let you run a single-question vote on any page (“Should we open on Sundays?”, “Which service would you like to see next?”) and show the results to people as they vote. Custom forms let you ask exactly what you want with dropdowns, checkboxes, and radio buttons, which is useful for quote requests, booking preferences, and any time you’d otherwise need a back-and-forth email chain.

Stop losing customers to a silent form.

Install Hi Widget in two minutes. Free to try. No credit card required.