Skip to content
← All Insights

Why Your WordPress Contact Form Stops Sending Email — And How to Fix It

Why Your WordPress Contact Form Stops Sending Email — And How to Fix It

Your contact form looks fine. The submit button works, the confirmation message appears, and everything seems to be functioning normally. But the emails never arrive. No notification in your inbox, no lead in your CRM, nothing.

This is one of the most common WordPress support requests we handle — and the fix is almost never where people expect it to be.

The Root Cause: WordPress Doesn’t Send Email Reliably

WordPress uses a PHP function called wp_mail() to send email. By default, this function uses your server’s PHP mail configuration — not an authenticated email account. Most modern email providers, including Gmail, Outlook, and Microsoft 365, treat PHP mail as suspicious and either send it to spam or reject it outright.

This means your form is technically working. The email is being sent. Your host is just sending it in a way that the recipient’s mail server doesn’t trust — so it never arrives.

Check Spam First

Before changing anything, check the spam or junk folder of the email address your form sends to. Also check any email filtering rules that might be silently moving messages. If you find form submissions there, the fix is simpler — you need to authenticate your sending domain rather than reconfigure WordPress entirely.

The Fix: SMTP Authentication

The correct fix is to route WordPress email through an authenticated SMTP connection instead of PHP mail. This means connecting WordPress to a real email account — your business Gmail, Microsoft 365 inbox, or a transactional email service — and sending through that account’s verified infrastructure.

The plugin we use for this is FluentSMTP. It’s free, actively maintained, and supports every major email provider including Gmail, Microsoft 365, Amazon SES, Mailgun, and SendGrid.

Once installed, go to FluentSMTP settings and connect it to your sending email account. The exact steps depend on your provider — Gmail uses OAuth, Microsoft 365 requires an Azure app registration, and transactional services use API keys. After connecting, send a test email from the plugin’s test screen to confirm delivery before touching anything else.

Microsoft 365 Specifically

If your business email runs on Microsoft 365, be aware that Microsoft has been phasing out basic SMTP authentication since 2022. Many M365 accounts now have it disabled at the tenant level, which means username and password SMTP connections are rejected regardless of whether the credentials are correct.

The solution is OAuth 2.0 authentication through an Azure app registration. We’ve written a detailed guide on this exact setup if you’re in this situation.

Check Your Form Plugin Settings

Once SMTP is configured and test emails are delivering, check your form plugin’s notification settings specifically:

  • Gravity Forms: Forms → your form → Settings → Notifications. Confirm the “Send To” email address is correct and the notification is active.
  • Contact Form 7: Check the Mail tab in your form settings. Confirm the To field contains the right address and the From field uses your domain email, not a @gmail or @yahoo address.
  • WPForms: Form builder → Notifications panel. Confirm it’s enabled and the email address is correct.

A common mistake is having the From address set to something like wordpress@yoursite.com or a generic address that doesn’t exist. Your From address should match the domain you’re sending from — ideally the same address you connected in FluentSMTP.

Check Your SPF Record

Even with SMTP configured correctly, emails can still land in spam if your domain’s SPF record doesn’t authorize your sending server. SPF is a DNS record that tells receiving mail servers which servers are allowed to send email on behalf of your domain.

You can check your SPF record using MXToolbox. If your record doesn’t include your SMTP provider’s sending servers, add them. Your email provider’s documentation will give you the exact string to add.

When the Form Works But Specific Emails Don’t Arrive

If most form submissions arrive but occasional ones don’t, the issue is usually on the recipient’s side — their mail server or spam filter is rejecting specific messages. This can happen when form submissions contain URLs, certain keywords, or come from IP addresses that have been flagged.

In this case, a transactional email service like Mailgun or SendGrid gives you better deliverability than routing through a standard inbox. They maintain dedicated sending infrastructure with strong sender reputations and provide delivery logs so you can see exactly what happened to each message.

The Quick Diagnosis Checklist

  • Check spam folder first
  • Install FluentSMTP and connect to an authenticated email account
  • Send a test email and confirm delivery
  • Check your form plugin’s notification settings
  • Verify your From address matches your domain
  • Check your SPF record with MXToolbox
  • If still failing, check your host’s mail logs for bounce messages

In most cases, installing FluentSMTP and connecting it to a real email account resolves the issue completely. It’s a 10-minute fix for a problem that can cost you leads every single day it goes unfixed.