Maintenance & Security

WordPress Contact Form Not Sending Emails? Here’s How to Fix It

Is your WordPress contact form not sending emails? Why it happens, how to check whether enquiries are being lost, and the reliable fix using SMTP and proper email authentication.

Close-up of a mail app icon on a phone screen
On this page
  1. First, check whether you’re losing enquiries
  2. Why WordPress email fails
  3. The fix: send through SMTP
  4. Set up SPF, DKIM and DMARC
  5. Keep a copy of every enquiry
  6. Other things to check
  7. Test it every month
  8. Frequently asked questions

Why is my WordPress contact form not sending emails? In most cases WordPress is trying to send email through your web server, which isn’t set up to deliver mail reliably. The messages get blocked or land in spam. The fix is to send through a proper email service using SMTP, and to set up your domain’s email authentication.

This is one of the most expensive website problems a business can have, because it’s silent. The form says “Thank you”, the visitor waits, and nobody ever reads the enquiry.

First, check whether you’re losing enquiries

Do this now, even if you think your form works:

  1. Open your website in a private browser window.
  2. Fill in the contact form with a real email address and send it.
  3. Wait a few minutes. Check the inbox and the spam folder of the address that should receive enquiries.

If it doesn’t arrive, or lands in spam, you have a problem. Also check that the form sends to the right address. Forms often still send to a former employee or the developer who built the site.

Why WordPress email fails

By default, WordPress sends email using PHP’s mail function on your web server. That causes three problems:

  • The server isn’t a trusted sender. Gmail, Outlook and others don’t recognise it as allowed to send for your domain.
  • The “From” address doesn’t match. The email says it’s from your domain but comes from a hosting server that your domain never authorised.
  • Shared servers have poor reputations. If another site on the same server sends spam, your emails suffer.

Some hosts block outgoing mail entirely, so nothing is sent at all.

The fix: send through SMTP

SMTP means sending email through a real email service, the same way your email app does, instead of through the web server.

  1. Choose a sending service. Options include your business email provider (Google Workspace or Microsoft 365) or a transactional email service.
  2. Install an SMTP plugin. Several reputable, free plugins exist. Pick one that’s actively maintained.
  3. Connect it using the details from your email service. Many plugins can connect to Google or Microsoft without storing your password in WordPress.
  4. Set the “From” address to an address on your own domain, such as hello@yourbusiness.com, not a Gmail address.
  5. Send a test email from the plugin’s settings and check that it arrives in the inbox.

Set up SPF, DKIM and DMARC

Even with SMTP, emails can land in spam if your domain’s DNS records aren’t set up. These three records tell other mail servers which services may send email for your domain:

  • SPF lists the services allowed to send for your domain.
  • DKIM adds a digital signature that proves the email wasn’t changed.
  • DMARC tells receiving servers what to do with emails that fail the checks.

Google and Yahoo now require these from bulk senders, and they help every sender. I explain them in plain language in SPF, DKIM and DMARC for small businesses.

Keep a copy of every enquiry

Email can always fail, so don’t let it be the only place enquiries are stored.

  • Turn on entry storage in your form plugin, so every submission is saved in the dashboard.
  • Or use a plugin that logs every email WordPress sends, so you can see what went out and whether it failed.

If emails ever stop, you can still recover the enquiries from the dashboard.

Other things to check

  • Spam protection that’s too aggressive. Some anti-spam tools block real submissions. Check the form’s spam log.
  • A JavaScript error on the page. If the form button does nothing, a script conflict may be stopping it. Test with your caching or optimisation plugin turned off.
  • Caching. Some forms break when the page is cached. Exclude the contact page from caching if needed.
  • The data privacy notice. If you collect personal information in the Philippines, the Data Privacy Act applies. Add a short consent line and link to your privacy policy.

Test it every month

A form that works today can break after a plugin update, a hosting change or a DNS change. Make a monthly test submission part of your routine. It’s on my WordPress maintenance checklist, and form testing is included in my WordPress support and maintenance.

Frequently asked questions

My form says the message was sent. Why didn’t I get it?

That message only means WordPress handed the email over. It doesn’t mean it was delivered. Without SMTP and proper DNS records, it’s often blocked or filtered further along.

Can I use my Gmail address as the “From” address?

Avoid it. Your website isn’t authorised to send email as Gmail, so those messages are likely to be rejected. Use an address on your own domain.

Do I need a paid email service?

Not always. Your existing business email account often works fine for a small site’s form notifications. Busier sites and shops may need a transactional email service.

Why do customers not get my order confirmation emails?

It’s the same problem. WooCommerce and booking plugins use WordPress email too, so setting up SMTP fixes those as well.

About the author

Vincent Earl Panoncial is a WordPress developer and the founder of VEP Studio. He has built and maintained 100+ WordPress websites, most of them at digital marketing agencies, and now works directly with businesses on development, maintenance and webmaster services.

Need a hand with your WordPress site?

Tell me what your website needs and you’ll get a clear plan and an honest answer on cost before any work starts. Get a free consultation →

Featured photo by Brett Jordan on Unsplash.

Share this article