“Your contact form is broken, I never got a reply.” It is one of the most common messages a site owner gets, and the reflexive answer is to blame the sender’s spam folder. Usually that is wrong. The problem is almost always on your side, and a handful of logs will point straight at it.
WordPress forms fail quietly. A submission can be captured perfectly and the notification email can still vanish, because WordPress email delivery is fragile by default. Before you assume the recipient’s spam filter ate it, work through the checks that actually reveal what happened. Here are nine, ordered so you confirm the submission first, then follow the email, and find the real culprit fast.
Bottom line first
Most “the form is broken” reports are not spam filters and not the form. They are email deliverability: WordPress sends through PHP mail by default, which many hosts block or fail to authenticate, so notifications silently die or land in spam. The fastest path is to confirm the submission was actually captured, then read an email log to see whether WordPress even tried to send and what failed. Switching to authenticated SMTP and setting up SPF and DKIM fixes the majority of cases. And sometimes the spam filter blocking real people is your own.
Table of Contents
1. The form’s own notification settings
Start with the boring, common mistake. Open the form’s notification settings and confirm the recipient email address is correct and has no typo, that notifications are actually enabled, and that any conditional logic is not silently suppressing the email. A shocking number of “broken form” reports come down to a mistyped recipient or a notification toggle left off. Rule this out in thirty seconds before touching anything technical.
2. Confirm the submission was captured
Next, find out whether the data even reached your site. Form plugins like WPForms, Gravity Forms, and Fluent Forms store entries in the database, so check whether an entry exists for the test submission. Contact Form 7 does not store submissions by default, so install the free Flamingo add-on to capture them. If the entry is there, the form works and you have an email problem, not a form problem. If it is not, the submission never arrived, and your next stop is the browser.
3. The browser console and network tab
If nothing was captured, the submission may have failed before it left the visitor’s browser. Open the browser developer tools, submit the form yourself, and watch the console for JavaScript errors and the network tab for the form’s request. A failed or missing request means a script conflict or error is blocking submission, often from another plugin or the theme. This tells you the problem is front-end, not email, and points you at a conflict to isolate.
4. WordPress debug.log
Turn on WordPress’s own logging to catch server-side errors during submission. Enable WP_DEBUG and WP_DEBUG_LOG in wp-config.php, following the official WordPress debugging guide, then reproduce the submission and read wp-content/debug.log. A PHP error or fatal warning at the moment of submission will show up here, and it frequently explains a form that saves nothing or sends nothing. Just remember to turn debug display off on a live site.
5. An email log
This is the single most useful check. Install an SMTP plugin such as WP Mail SMTP or FluentSMTP and turn on its email log, which records every message WordPress attempts to send, including form notifications, with a sent or failed status and the error. If the log shows the email was never attempted, the problem is the form or a hook. If it shows an attempt that failed, you have the exact error to fix. This one log ends most guessing.
6. Move off PHP mail to authenticated SMTP
Here is the fix behind most vanished emails. By default WordPress sends through the PHP mail function, which many hosts block or send unauthenticated, so messages fail or get flagged as spam. Connecting WordPress to an authenticated SMTP service or email API through a plugin makes your notifications come from a trusted, verified sender, which dramatically improves delivery. If you do only one thing on this list, do this, because it resolves the largest share of cases outright.
7. Email authentication: SPF, DKIM, and the From address
Even authenticated sending needs correct DNS. Gmail, Yahoo, and Outlook now reject or spam-file mail that lacks proper SPF and DKIM records, so confirm those are set for your sending domain and that DMARC is not silently failing. Just as important, the form’s From address should be on your own domain and match your sending service, not the visitor’s address, since a mismatched From is a classic reason a message is flagged. With Contact Form 7 in particular, aligning the From address to your domain fixes many delivery problems.
8. Your host’s mail restrictions
Sometimes the wall is the host. Some managed hosts block outbound SMTP entirely and require you to send through an email provider’s API instead, while others block the old port 25 but allow 587 or 465. If your SMTP attempts keep failing to connect, check your host’s documentation for exactly what they permit and which ports or providers they support. Matching your setup to the host’s rules is often the missing piece when the log shows connection failures.
9. Your own anti-spam settings
Finally, the twist in the title: the spam filter eating your submissions may be yours, not the recipient’s. Aggressive honeypots, a strict Akismet setup, or a misconfigured reCAPTCHA or Turnstile can silently block genuine visitors, so their message never becomes an entry or an email at all. Test the form as a normal user in a private window, and review your anti-spam settings for anything rejecting real people. Before blaming a mail server, make sure your own defenses are not the thing turning customers away.
Frequently asked questions
Why is my WordPress contact form not sending emails?
Usually email deliverability, not the form. WordPress sends through PHP mail by default, which many hosts block or fail to authenticate, so notifications silently fail or go to spam. Switching to authenticated SMTP and setting SPF and DKIM records fixes most cases.
How do I know if my form submission was received?
Check the form plugin’s entries in the database. WPForms, Gravity Forms, and Fluent Forms store them automatically, while Contact Form 7 needs the free Flamingo add-on. If an entry exists, the form works and you have an email problem rather than a form problem.
What is the best way to debug WordPress form emails?
Install an SMTP plugin with an email log, such as WP Mail SMTP, which records every message WordPress tries to send with a sent or failed status and the error. Combined with enabling debug.log, it shows exactly where a notification is breaking.
Why do my form emails go to spam?
Commonly because they are unauthenticated or come from a mismatched sender. Gmail and others now require SPF and DKIM, and a From address that is not on your domain looks suspicious. Sending through authenticated SMTP from your own domain greatly improves inbox placement.
Could my own site be blocking form submissions?
Yes. An overly strict honeypot, Akismet configuration, or reCAPTCHA can silently reject real visitors before their message is saved or emailed. Test the form as a normal user and review your anti-spam settings, since the filter blocking submissions is sometimes your own.
The bottom line
When a WordPress form “breaks,” resist blaming the recipient’s spam folder and follow the evidence instead. Confirm the submission was captured, watch the browser and debug.log for errors, and above all read an email log to see what WordPress actually sent. The real fix is usually moving off PHP mail to authenticated SMTP with proper SPF and DKIM, and occasionally loosening your own anti-spam. For more on running a faster, healthier WordPress site, see our guide to AVIF versus WebP for WordPress images, and browse The Other Stream’s Web Design section.