Not just websites. Experiences.
Contact form not sending emails? Here's why website leads quietly land in spam, how to test your form in two minutes, and the DNS fix that stops it.
Howdy. Here’s a fun way to ruin your afternoon: fill out your own website’s contact form and wait. Not for a reply from yourself, obviously. Just for the email to show up anywhere at all.
A surprising number of small business sites have a contact form that looks great, says “Thanks! We’ll be in touch,” and then sends your hottest lead straight into a spam folder, or into nothing. The form isn’t broken. It’s worse. It’s lying politely.
The short version
Usually because your website is pretending to be you, and the inbox doesn’t believe it. When someone fills out your form, the site fires off an email “from” your business address, but it’s actually coming from your web host’s server, which has no permission to send for your domain.
That’s like mailing a letter with the bank’s return address written in crayon. Gmail and Outlook look at it, squint, and toss it in junk. Or they don’t deliver it at all, and nobody tells you.
I see this all the time: a site that’s been “getting no leads” for months, and when I open the form plugin’s logs there are entries sitting there. Real people. Real requests. Asking for quotes that never arrived anywhere a human would look. That one stings.
Yes, and that’s the trap. A lot of forms were set up years ago when inboxes were way more forgiving, and they’ve been quietly decaying since.
The big shift: Google’s email sender guidelines say anyone sending to a Gmail account has to set up SPF or DKIM, and that’s been enforced since February 1, 2024. Bulk senders have to do both, plus DMARC. Microsoft started pushing Outlook.com in the same direction for high-volume senders in 2025.
Your little contact form isn’t a bulk sender. Doesn’t matter. The inboxes got stricter for everybody, and the “it’s always worked” setup was coasting on a grace period that ended.
(If you’ve also changed email providers, moved hosts, or had a nephew “clean up the DNS” at some point, add a few more reasons to the pile.)
Fill it out yourself. Today. From your phone, using a personal Gmail address, like a real customer would.
Then check three things:
If anything’s off, it’s not a “someday” problem. Every day it stays broken is a day you’re paying for a website that hangs up on people.
Send the form’s email through a real mail service instead of the web server, and set up your domain’s authentication records so inboxes trust it.
In plain words, that means three DNS records doing three jobs:
On WordPress, the usual move is an SMTP plugin connected to a proper sending service (or to your Google Workspace or Microsoft 365 account), then adding the records that service gives you. It’s not glamorous. It’s maybe an hour of careful work. And it’s the difference between a form that collects leads and a form that collects dust.
One honest warning: DNS is the part people get wrong, because it’s fiddly and the mistakes are invisible. Two SPF records on one domain, for example, is a classic half-assed fix that breaks both of them. If you’re not sure who even controls your DNS, my post on who owns your domain is a good place to start, because you can’t fix records you can’t log into.
Not entirely, no. Email should be the alert, not the only copy.
Every form on a site I build saves its entries in the dashboard too, so if an email ever goes missing, the lead is still sitting there. It’s the cover-your-ass backup nobody thinks about until they need it, and then they think about it a lot.
A few other things I’d add while you’re in there:
That’s the stuff I mean when I talk about how I work: the boring plumbing gets checked before anyone argues about fonts.
Most often because the email claims to come from your domain but is sent by a server that isn’t authorized to send for it. Without SPF, DKIM and DMARC lined up, Gmail and Outlook treat it as possibly forged.
Once a month, and any time you change hosts, email providers, plugins or DNS. It takes two minutes, and it’s the cheapest insurance your website will ever have.
Please don’t. Sending as an @gmail.com address from your web server is exactly the kind of impersonation Google says not to do. Send from your own domain, through an authorized service, and put the customer’s address in the reply-to field.
A contact form is the one part of your website whose whole job is to make your phone ring, so it deserves more attention than the hero image, not less. Go test yours right now. If the email never shows up, or you’re not sure what any of those three-letter records are doing, send me a note and I’ll track down where your leads have been hiding. Odds are they’ve been there the whole damn time.