A contact form can fail in the worst possible way: silently. The visitor fills it out, hits send, sees the thank-you message, and moves on. The message never arrives. The business thinks it’s a quiet month. The customer thinks they’re being ignored. Nobody knows anything is wrong.
I’ve found dead forms on sites that had been broken for months. Here’s the setup I use so it doesn’t happen on mine.
Why form email disappears
By default, WordPress sends mail from the web server itself, and to inbox providers, a random web server claiming to be your business looks exactly like what spammers do. Sometimes it lands in spam. Sometimes it’s rejected outright. The form plugin says “sent” either way, because handing the message off is where its job ends.
The fix: send like a real mailbox
Every form on every site I manage sends through a proper mail service, not the web server. An SMTP plugin connected to the business’s actual email service, or a transactional mail provider on bigger sites. Set up once, and messages arrive with correct authentication so inbox providers trust them.
- SMTP or a mail API instead of the server’s default mail function
- SPF and DKIM records set on the domain, so mail authenticates
- The form’s from-address on the business domain, never a free email
- Reply-to set to the visitor, so hitting reply just works
Trust, but verify — on a schedule
Then the habit that actually catches failures: every form gets a real test submission once a month. Not a glance at the settings. An actual message, sent from the public page, confirmed in the inbox. It takes ninety seconds per site, and it’s found problems that no setting screen would have shown me — a host that changed its mail rules, a plugin update that reset the sender.
A backup, too: form entries get stored in the site database, so even if email breaks, nothing is truly lost. The inbox is the alarm. The database is the safety net. With both, a broken form is a ninety-second discovery instead of a lost quarter of leads.



