Contact form not sending email

Your WordPress contact form says "sent". The email never arrives.

No error shows on your site. The customer sees a thank-you message, and the enquiry never reaches you. Here is why it happens, how to check it yourself, and what I do about it.

Why it happens

Four reasons it fails without an error.

It sends from a placeholder address

By default, WordPress sends site mail from a placeholder address, not a real address on your own domain.

Your domain doesn't vouch for it

Since February 2024, Gmail has required SPF or DKIM from every sender (Google). SPF lists the servers allowed to send mail for your domain, and DKIM signs each message for it. If your site's mail has neither, it falls short of what Gmail requires.

It sends "from" your customer

Some forms send each enquiry "from" the address the customer typed in. Yahoo and AOL publish a policy telling other inboxes to reject mail that uses their address but did not come from them, so those enquiries fail for every Yahoo or AOL customer.

Nobody tests it

The form says "sent" whether or not the email arrives. Unless someone sends a test and checks the inbox, nobody knows.

Check it yourself

Three steps, from your phone.

  1. 01

    Send a test enquiry

    Fill in your own form the way a customer would, using a Gmail address. Put "test" in the message and note the time.

  2. 02

    Check the inbox, and who it's from

    Look in the inbox your form sends to, and in its spam or junk folder. If nothing arrives within a few minutes, the form isn't reaching you. If it arrived, look at the sender. If it shows the Gmail address you typed, or an address that isn't a real one on your domain, that is one of the causes above.

  3. 03

    Try a Yahoo or AOL address

    If you or someone in the office has one, send a second test with it. If the Gmail test arrived and this one didn't, your form is probably sending "from" the customer's address.

What I do

Fixed at a price agreed first. Tested every month on a plan.

Fixing your form's mail and the records behind it is a single fix: $250 to $450, with the price agreed before I start. It works on your current host. Read the case file

  • Fixed price, agreed before I start $250–$450, and the quote is valid for 30 days
  • What I set up Mail from a real address on your own domain, through a mail service, signed for your domain, with SPF and DMARC records published. Then I send a test enquiry and check that it arrives
  • Works on your current host No move needed
  • 90-day workmanship warranty If it fails for the same reason within 90 days, I fix it again at no charge
  • Full refund if I can't fix it If I can't fix the problem I quoted for, you get the whole fix fee back
  • Tested every month on a plan On both plans I send a test enquiry through your form every month. If it doesn't arrive, you hear it from me
  • The same setup as my own site My enquiry form works this way, and filters spam without a CAPTCHA puzzle

Want me to look at yours?

Ask for a quote to fix it, or start with the free site check, which reads your domain's email records from the outside, with no logins. No obligation, no sales call.