Skip to content
webfixed

Guides / WordPress

Why is my WordPress contact form not sending emails?

By the WebFixed team. Last updated 21 September 2026.

The short answer

In most cases the form itself is working, and the email is being rejected or sent to spam after it leaves your website. By default WordPress sends email using the web server’s PHP mail function, which has no authentication, so Gmail, Outlook and other providers often block it. The fix is to install an SMTP plugin such as WP Mail SMTP and connect it to a proper mail service, then set the form’s From address to an address on your own domain. This applies equally to Contact Form 7, WPForms, Gravity Forms, Elementor forms and similar plugins, because they all hand their email to WordPress to send.

The most common causes

  • The site sends through PHP mail. The message comes from a web server with nothing to prove it is allowed to send for your domain, so receiving mail servers reject it or file it as spam.
  • The From address is wrong. If the form sends the email as though it came from the visitor’s own address, for example a gmail.com address, the receiving server sees a forgery and blocks it.
  • The notification is going to the wrong place, such as an old address or a mistyped one.
  • The email is arriving, but in spam or a filtered folder.
  • Your host limits or blocks outgoing mail from websites, which some do to control spam.
  • A spam protection setting, such as a reCAPTCHA key that has stopped working, is blocking the submission before any email is created.

Check the form’s email settings

Start with the settings inside the form plugin, because they take two minutes to check.

  1. In Contact Form 7, go to Contact, then Contact Forms, open your form and click the Mail tab.
  2. Check the To field holds the address that should receive enquiries.
  3. Set the From field to an address on your website’s own domain, for example website@yourdomain.co.uk. Contact Form 7 shows a configuration warning if the From address does not belong to the site’s domain.
  4. To be able to reply directly to the visitor, put Reply-To: [your-email] in the Additional Headers box, rather than using the visitor’s address as the From address.
  5. In WPForms, open the form, go to Settings, then Notifications, and check Send To Email Address, From Email and Reply-To in the same way.
  6. Save the form and send a test submission from the live page.

Send through SMTP with a proper mail service

SMTP is the standard method mail programs use to send email through an authenticated account, which means the receiving server can see the message is genuine. An SMTP plugin makes WordPress send this way. WP Mail SMTP is the most widely used, and Post SMTP and FluentSMTP do the same job.

The plugin needs a service to send through. Options include a transactional email service such as Brevo, Mailgun, Postmark, SendGrid or Amazon SES, several of which have a free allowance that covers a typical contact form, or the Google Workspace or Microsoft 365 account you already use for business email.

  1. Install and activate WP Mail SMTP from the Plugins screen.
  2. Go to WP Mail SMTP, then Settings, or follow the setup wizard.
  3. Set From Email to an address on your domain and turn on the option to force that From address, so every plugin uses it.
  4. Choose your mail service from the list of mailers and follow the plugin’s instructions to connect it. Most services use an API key, a long code you copy from your account with the mail service, rather than your email password.
  5. Save the settings.

Treat an API key like a password. Paste it into the plugin yourself and do not send it to anyone by email.

SPF and DKIM in plain terms

SPF and DKIM are two records added to your domain’s DNS, the settings that tell the internet where your website and email live. SPF is a published list of the services allowed to send email for your domain. DKIM adds a digital signature to each message so the receiver can confirm it was not altered and really came from an approved sender. Gmail, Yahoo and Microsoft now expect both, and mail without them is far more likely to be rejected.

Your mail service gives you the exact records to add, and they go in the DNS settings wherever your domain’s nameservers point, which is usually your domain registrar, your host or Cloudflare. Most services then show a green tick or a Verified status once the records are found.

A domain can only have one SPF record. If one already exists, add the new service to it instead of creating a second record, because two SPF records cause both to fail. Take a screenshot of your DNS settings before changing anything, as mistakes here can stop your normal email working.

Test that it works

  1. Go to WP Mail SMTP, then Tools, then Email Test, and send a test to an address you can check. The plugin reports whether the message was accepted and flags problems with your domain’s records.
  2. Submit the real form on the live page using a different email address from the one that receives enquiries.
  3. Check the inbox, the spam folder and any filtered folders. If it landed in spam, mark it as not spam and add the From address to your contacts.
  4. Send tests to both a Gmail address and an Outlook or Microsoft 365 address if you can, as they filter differently.

If the form shows an error on screen and no email is created at all, the problem is in the form, not the delivery. Check the spam protection settings, and look for a plugin conflict by briefly deactivating recently added plugins.

Keep a copy of every enquiry

Email can fail again in future, so store submissions on the site as well. For Contact Form 7, the free Flamingo plugin saves every message in the dashboard. The paid versions of WPForms and Gravity Forms store entries as standard. An email log, which WP Mail SMTP’s paid version and Post SMTP both offer, records every message the site tried to send and whether it succeeded.

When to get help

Stop and ask if you are unsure about editing DNS records, since a mistake there can interrupt all of your business email, or if the test email reports success but messages still never arrive. It is also worth asking when enquiries have been going missing for some time and you need to find out what was lost. WebFixed fixes this kind of problem for a fixed price agreed up front, with one-off fixes from £39 including VAT and nothing charged until you accept the quote.

Related questions

Why did my contact form stop working when I changed nothing?
Email providers have tightened their rules on unauthenticated mail, and hosts change their mail settings from time to time. A form that relied on PHP mail can stop being delivered without any change on your website.
Does this affect WooCommerce order emails too?
Yes. Order confirmations, password resets and new order notifications all go through the same WordPress mail function, so setting up SMTP fixes those at the same time.
The form says the message was sent, so where did it go?
The success message only means WordPress handed the email to the server. It does not confirm delivery. The message was most likely rejected or filtered by the receiving mail provider, which is what SMTP, SPF and DKIM put right.