Here's a problem I see more than almost any other: a business website with a contact form that looks perfectly fine. Visitors fill it in, click send and see a thank-you message. But the email never arrives. Sometimes for weeks or months. Nobody notices until a customer calls asking why they never got a reply.
I'm Aldrian, an independent developer. I fix contact forms, quote forms, booking forms and notification emails that don't arrive, land in spam or fail silently.
I also take this seriously on my own site. My contact forms send through a proper email API from my own domain, with the visitor set as the reply-to address. And they only show "Your message was sent" when the message actually was sent. A fake success message hides problems, so I don't use them.
Why form emails stop arriving
The server's built-in mail function
By default, WordPress and many websites send email through the server's basic mail function. Email providers like Gmail and Outlook increasingly reject or spam-filter these messages, because they can't verify who sent them.
Missing email authentication
Your domain needs DNS records called SPF, DKIM and DMARC that tell email providers which services are allowed to send email for you. Without them, or with them set up wrong, your form emails look suspicious.
The "From" address doesn't match
Forms often send "from" the visitor's email address. To Gmail, that looks like your website is pretending to be someone else, so it gets blocked. The right setup sends from your own domain and puts the visitor's address in "Reply-To."
Hosting blocks outgoing mail
Some hosts limit or block email sending entirely, especially on cheaper plans.
Wrong recipient
The notification still goes to an old email address, a former employee or a typo.
Plugin or update problems
A form plugin update, a security plugin or a caching setup can break submissions without obvious errors.
Spam protection gone wrong
CAPTCHA or anti-spam settings can block real people, or stop working entirely after keys expire.
The email arrives, but in spam
Delivered isn't the same as seen. Messages landing in spam are effectively lost.
How I fix it
1. Test the whole path
I submit test entries and follow them: does the form submit, is the email generated, does it leave the server and where does it land?
2. Check the logs
Server mail logs, plugin logs and email service logs show where messages fail.
3. Send properly
I set up sending through a reliable transactional email service via SMTP or API, from an address on your domain, with the visitor's email as reply-to.
4. Authenticate your domain
I add or fix SPF, DKIM and DMARC records, carefully, so your normal business email keeps working too.
5. Store submissions
Where it makes sense, form submissions are also saved in the website's database or sent to a spreadsheet or CRM, so nothing is lost even if an email fails.
6. Add honest feedback
Forms show success only when the message was actually accepted, and a clear error with another way to reach you if it wasn't.
7. Add monitoring
Optional regular test submissions and alerts so you find out quickly if delivery breaks again.
Platforms I work with
- WordPress forms like Contact Form 7, WPForms, Gravity Forms, Fluent Forms and Elementor forms
- WooCommerce order and customer emails
- Custom forms on static sites, React apps and serverless functions
- Booking, quote and inquiry forms
Email services I can set up
Transactional email services such as Brevo, Postmark, Mailgun, Amazon SES, Resend and SendGrid, or SMTP through Google Workspace or Microsoft 365 where appropriate. I'll recommend one that fits your volume and budget. API keys are stored securely, never in public code.
WooCommerce emails too
Order confirmations, shipping updates and password resets that don't arrive cause support tickets and lost trust. The same fixes apply, and I test each email type.
Common mistakes
Using the visitor's email as the sender. It's one of the most common causes of blocked form emails.
Adding a second SPF record. Domains should have only one SPF record. Two can break email authentication entirely.
Setting DMARC to reject too early. Strict DMARC before everything is authenticated can block your own legitimate email.
Showing "sent" when it wasn't. It hides failures from you and your visitors.
Never testing the form. Test after every significant update.
A quick test you can do today
Open your website on your phone, fill in your own contact form with a real email address and send it. Then check the inbox that's supposed to receive it, including the spam folder. Do the same with a Gmail address as the sender. If the message doesn't arrive within a few minutes, or lands in spam, something needs fixing. Many owners are surprised by the result.
How it works
- Tell me which form isn't working and where emails should go.
- Share access to the website and DNS if possible.
- I diagnose and send a fixed quote.
- I fix and test with real submissions to real inboxes.
- You get a summary of what was wrong and what changed.
Let's make sure every inquiry reaches you
Tell me about the form that's not working. I'll reply as soon as possible with next steps.




