Fixing WordPress contact form email delivery

Why WordPress contact form emails fail and how to fix them by configuring SMTP, setting up email authentication records and troubleshooting common deliverability problems.

Fixing WordPress contact form email delivery

If your WordPress contact form isn't sending emails, or messages are arriving in spam folders instead of the inbox, you're likely losing enquiries without realising it. This is one of the most common WordPress issues, and it doesn't just affect contact forms. Password reset emails, WooCommerce order confirmations, user registration notifications and any other email WordPress sends can all be affected by the same underlying problem.

The good news is that the fix is well understood, and once your email is configured properly it tends to stay reliable.

Why WordPress emails fail

By default, WordPress sends emails using PHP's built-in mail() function. This is a basic method of sending email directly from the server without any authentication. It doesn't verify who the sender is, and it doesn't go through a proper mail server.

The problem is that most email providers (Gmail, Outlook, Yahoo and others) treat unauthenticated emails with suspicion. Messages sent via PHP mail() frequently end up in spam folders, get rejected outright or never leave the server at all. Many hosting providers also throttle or disable the function entirely on shared hosting plans.

On top of this, if your form's "From" address is set to a free email address (like a Gmail or Outlook address) rather than an address on your own domain, the receiving server will see a mismatch between where the email claims to be from and where it actually originated. This almost guarantees a failed authentication check and increases the chance of the message being flagged as spam.

Check your form plugin settings

Before changing anything else, verify the notification settings in your form plugin:

  • Make sure email notifications are actually enabled and that the To address is correct.
  • Set the From Email to an address on your own domain (for example, noreply@yourdomain.com) rather than a free webmail address. This doesn't need to be a real mailbox, but it does need to match your domain.
  • Set the From Name to your site or business name so recipients recognise the sender.

These settings alone won't fix the underlying deliverability problem, but incorrect values here can prevent emails from sending even when everything else is configured properly.

Set up SMTP

The most reliable fix is to stop using PHP mail() and instead route your emails through a proper SMTP (Simple Mail Transfer Protocol) server. SMTP authenticates the sender and delivers email through a dedicated mail server, which is how email is designed to work.

You'll need two things: an SMTP-compatible WordPress plugin and an email service to send through.

Install an SMTP plugin and configure it with the following:

  1. Set the From Email to a domain-based address and the From Name to your business name.
  2. Choose which email service to send through. You generally have three options: a dedicated transactional email service (designed specifically for sending application-generated emails like form submissions and order confirmations), your hosting provider's built-in SMTP server, or a third-party email account you already have. Transactional email services typically offer the best deliverability and provide useful features like delivery tracking and bounce handling.
  3. Enter the API keys or SMTP credentials from your chosen provider. These are available in the provider's dashboard.
  4. Send a test email from the plugin's settings to confirm delivery.

Configure email authentication records

Even with SMTP configured, receiving servers may still flag your emails if your domain's DNS records don't confirm that your email service is authorised to send on your behalf. There are three DNS records you should set up:

SPF (Sender Policy Framework) tells receiving servers which mail servers are allowed to send email for your domain. Without an SPF record, any server can claim to be sending on your behalf, and most email providers will treat that as suspicious.

DKIM (DomainKeys Identified Mail) adds a cryptographic signature to each email, allowing the receiving server to verify that the message hasn't been altered in transit and that it genuinely came from an authorised sender.

DMARC (Domain-based Message Authentication, Reporting and Conformance) ties SPF and DKIM together and tells receiving servers what to do when a message fails authentication checks, whether to deliver it, quarantine it or reject it entirely.

Your SMTP provider's documentation will give you the exact DNS records to add. You'll need access to your domain's DNS settings, which are usually managed through your domain registrar or hosting provider's control panel. Allow time for DNS propagation after adding or changing records, as changes can take up to 48 hours to take effect globally.

Check spam folders and hosting quotas

Sometimes emails are being sent successfully but are landing in the recipient's spam folder rather than failing entirely. Ask someone to check their spam folder and mark your messages as "Not spam" if they find them there. This helps train their email provider to trust future messages from your domain.

Also check whether your hosting account has reached its email sending quota. Many shared hosting plans limit the number of emails you can send per hour or per day. If you're hitting this limit, a dedicated transactional email service will remove that restriction.

Check for plugin conflicts

Security plugins and rate-limiting tools can sometimes block outgoing SMTP connections. If you've configured everything correctly but emails still aren't sending, try temporarily deactivating your security plugins and testing again. If email works with them disabled, check their settings for firewall rules or connection restrictions that might be blocking outgoing mail.

Enable email logging

If you're not sure whether the problem is with sending or receiving, an email logging plugin can help. These tools record every email WordPress attempts to send, along with the status (sent, failed) and any error messages from the SMTP server.

This is particularly useful for confirming whether your form plugin is actually generating emails and whether those emails are failing at the SMTP stage or being sent successfully but rejected by the recipient's server.

Test properly

When testing your email setup, send messages to a real external email address rather than to yourself or to another address on the same domain. Emails between addresses on the same server often bypass the normal delivery checks and can appear to work even when external delivery would fail.

It's also worth testing with multiple email providers (Gmail, Outlook, Yahoo) since each has its own spam filtering rules. A message that reaches one inbox might be flagged by another.

Need help with email deliverability?

If contact form emails still aren't arriving after following these steps, my emergency WordPress support service can audit your mail configuration, DNS records and server settings to identify the problem.

Adam Greenough

Written by Adam Greenough

Freelance web developer with over 15 years of experience building and fixing WordPress sites. I work with businesses across the UK on everything from emergency support to full builds.

Need hands-on help?

I offer emergency WordPress support with a no-fix, no-fee guarantee.