If your WordPress contact form is not sending emails, the cause is almost always the same one. WordPress tries to send mail with PHP's built-in mail() function, which carries no authentication, so Gmail, Outlook, and even your own host quietly drop it or push it to spam. The form still shows a thank-you message, so nothing looks wrong.

For a service business, that silence is lost work piling up. This guide walks through how to confirm the problem, fix the real cause, and make sure it never breaks again without you knowing. We fix this on the sites we maintain every week, so the steps here are the ones that actually hold.
Your WordPress contact form is not sending emails because WordPress sends mail through PHP mail(), an old method with no password and no signature. Modern mail servers treat unauthenticated mail as suspicious, so they reject it or file it as spam. The form submits fine and shows success, so the failure stays invisible until you notice the leads dried up.
There are six causes we see again and again.
Before you change a single setting, confirm the mail is truly failing and not just sitting in a junk folder. Submit your own form with a real message, check every spam and promotions tab, then install a mail logging plugin so you can see whether WordPress even tried to send. Diagnosis first stops you from fixing the wrong thing for an hour.
Here is the order we use.
That single split, never sent versus sent but rejected, tells you which half of this guide you need.
The fix for almost every case is to stop using PHP mail() and send through an authenticated SMTP connection instead. An SMTP plugin logs your site into a real mail service with a username and a key, so every message is signed and trusted. This one change resolves the large majority of WordPress contact form email problems.
For a business that lives on leads, connect your site to a transactional email service like SendGrid, Postmark, or Amazon SES rather than a personal Gmail connection. Transactional services are built to deliver one-to-one mail reliably, they sign every message, and they show you delivery and bounce data. A Gmail or Workspace connection works for low volume but has daily caps and no real dashboard.
| Mailer | Free tier | Best for | Notes |
|---|---|---|---|
| Gmail or Workspace SMTP | Included with your plan | Very small sites | About 500 a day, no delivery dashboard |
| Brevo | 300 emails a day free | Small business, easy start | Simple setup, decent deliverability |
| SendGrid | 100 emails a day free | Growing business | Strong deliverability and logs, what we run across our client fleet |
| Postmark | Free trial, then paid | Best raw deliverability | Fast, transactional focused |
| Amazon SES | About $0.10 per 1,000 | High volume, lowest cost | More technical to set up |
For most contractors and service businesses, SendGrid or Brevo is the sweet spot. If you send high volume, SES wins on cost.
SPF, DKIM, and DMARC are three DNS records that prove your mail really comes from your domain, and without them even authenticated mail can land in spam. Add all three when you connect a mailer, your provider hands you the exact values to paste.
You add these wherever your DNS lives, usually Cloudflare, your registrar, or your host. Skip them and you will fix sending only to watch your mail sit in spam. If deliverability is wrapped up with a wider security cleanup, our WordPress security work covers the mail side too.
Each form plugin has one or two settings that quietly break delivery even after SMTP is working. Check the plugin, not just WordPress. The three most common forms each have their own trap.
If your form was working and stopped after an update, the update most likely reset your mail settings or your sending credentials expired. Updates are the most common trigger we see for a form that breaks out of nowhere. The five usual suspects each have a quick check.
This is exactly why we test the contact form after every update on a care plan. If you want the safe way to run updates yourself, see our guides on how to update WordPress without breaking your site and how often you should update WordPress.
The reason form failures cost so much is that they are silent, so the fix is to make failure loud. Keep mail logging on, run a real form test on a schedule, and watch your provider's delivery dashboard so a drop sets off an alarm instead of a mystery months later.
We run SendGrid across a fleet of client sites and rebuild form-to-CRM handoffs when they break, so we have seen most of the ways this fails. On our WordPress care plans we test the contact form after every update and monitor delivery, so a broken form gets caught in days, not months.
For a contractor or service business, a contact form that fails for a month is not a technical annoyance, it is lost jobs. One missed inquiry for a $5,000 to $10,000 project is worth more than years of maintenance. The contact form is usually the single most valuable page on the whole site, and it is the one that fails the most quietly.
Put next to that, a care plan at $50 to $200 a month is cheap insurance. See what WordPress maintenance costs.
60+ law firm sites looked after. Forms, payments and your name in Google, watched.
See how we help firms →Because WordPress sends mail through PHP mail() with no authentication, so modern mail servers drop it or mark it spam. The fix is to send through an authenticated SMTP connection or a transactional email service.
Install a mail logging plugin like WP Mail Logging or Check and Log Email, then submit your form. No log entry means WordPress never sent it. A log entry with no delivery means an authentication problem.
In almost all cases, yes. Without SMTP, WordPress falls back to PHP mail(), which most hosts and inboxes no longer trust. An SMTP plugin connects your site to a real, authenticated mail service.
An update often resets the SMTP config, or your sending key expired, your host changed its mail policy, or a security plugin started blocking outbound mail. Re-enter your mail settings and send a test.
Usually because your domain is missing SPF, DKIM, and DMARC records, or the From address does not match your domain. Add the three DNS records your mailer gives you and use a real address on your own domain.
Yes. We set up authenticated sending, fix the DNS, repair the plugin settings, and put your forms on monitoring so they do not break again silently. Reach out through our contact page.
Free site check, plain report, no sales call.
or email contact@backstopweb.com