Maintenance
Fix Broken WordPress Contact Forms Without Guesswork
If your WordPress contact form looks fine but no messages arrive, the problem is usually not the form itself. It is often broken email delivery, a plugin conflict, a JavaScript error, or a form plugin setting that quietly stopped working after an update.
The safest fix is to test the full path from browser to inbox, starting with submission capture inside WordPress and ending with mail delivery at your email provider. Back up first if you plan to change plugins, SMTP settings, or theme code.
What “broken contact form” usually means
A form can fail in several different ways, and the symptom tells you where to look:
- The form submits, but nothing reaches your inbox.
- The page reloads and shows an error like “There was an error trying to send your message.”
- The form spins forever or the submit button does nothing.
- Spam protection blocks real users.
- Messages arrive sometimes, but not reliably.
That last one is especially common on WordPress sites. A form can be working on the website side while the email part fails silently because the server is not allowed to send mail the way your form plugin expects.
The most likely causes
Broken contact forms usually come down to one of these issues:
- Email delivery problems. WordPress uses PHP mail or server mail by default on many sites, and many hosts limit or filter it.
- Missing SMTP setup. Messages are generated, but the server cannot authenticate properly with the mailbox provider.
- Plugin conflicts. Caching, security, or form-related plugins can interfere with submission or JavaScript validation.
- Theme or script errors. A broken theme file, minified script, or optimization plugin can stop the form from submitting.
- Spam filters or reCAPTCHA issues. Legitimate messages get blocked before they are sent.
- Bad recipient settings. The “To” address, “From” address, or reply-to header is misconfigured.
If the form worked before and stopped after an update, see WordPress Site Broke After an Update? Here's What Happened and How to Fix It. If the site is showing a broader error or “critical error” message, that guide may be the better starting point than this one.
Step 1: Confirm whether the form is actually submitting
Start by testing the form in a clean browser window, ideally in an incognito/private tab. Fill it out with a real inbox you control and watch what happens after you click submit.
Then check whether WordPress recorded the submission. Some form plugins store entries in the dashboard, while others need an add-on for entry storage. If the entry appears in WordPress but not in your email inbox, the form is working and the mail delivery path is the problem.
Step 2: Check your inbox, spam folder, and mail logs
It sounds obvious, but the first place to check is still the inbox and spam folder of the recipient address. If the message appears in spam, the form may be sending but the sender details are triggering filters.
If you have access to mail logs through your host or an SMTP plugin, look for one of these patterns:
- Messages are sent but rejected by the destination server.
- Messages fail authentication.
- Messages are not being attempted at all.
That distinction matters. If the form submits successfully and logs show a delivery failure, you should focus on SMTP and sender identity. If nothing is sent, the issue is likely inside WordPress, the form plugin, or the browser.
Step 3: Fix email delivery the right way
On many WordPress sites, the most reliable fix is to send form mail through authenticated SMTP instead of relying on default server mail. This is especially important on shared hosting, where mail from WordPress may be throttled or treated as suspicious.
Use a reputable mail provider or your host’s recommended mail service, then configure the form plugin so the “From” address matches a domain address you control. In many cases, the “From” should be something like [email protected] or [email protected], while the visitor’s email goes in the reply-to field.
Do not use the visitor’s email address as the sender if your mail provider rejects spoofed sender domains. That setup often worked years ago and now causes intermittent failures.
If you need a broader step-by-step for message sending problems, the closest relevant guide is There Has Been a Critical Error on This Website: What It Means and How to Fix It when the issue is part of a larger site malfunction, or WordPress Site Hacked? Here's How to Clean It Up — Safely if the form behavior changed after suspicious activity.
Step 4: Rule out plugin conflicts safely
Form issues often come from another plugin, not the form plugin itself. Caching, optimization, security, cookie banners, and JavaScript delay tools are common culprits.
Safest way to test:
- Back up the site.
- Disable caching and optimization features temporarily if you can do so safely.
- Test the form again.
- If that does not help, deactivate all plugins except the form plugin.
- Test again.
- Reactivate plugins one by one until the form breaks again.
If you are on a live site and cannot afford downtime, do this during a low-traffic window or on a staging copy. If your host supports staging, use it. That is much safer than guessing at random on production.
Step 5: Look for JavaScript or console errors
If the submit button does nothing, spins endlessly, or the form only fails on one page, inspect the browser console for errors. Many form plugins depend on JavaScript for validation, anti-spam checks, and AJAX submission.
Typical causes include:
- A script optimization plugin delaying or combining JavaScript too aggressively.
- A missing asset after a theme change.
- Another plugin loading the same library twice.
- Broken reCAPTCHA or CAPTCHA configuration.
To test, temporarily exclude the form page and the form plugin assets from JavaScript optimization, then clear all caches and retest. If the form starts working, you have found the class of problem, even if you still need to tune the exclusion list.
Step 6: Verify the form settings themselves
Bad settings are a surprisingly common reason for missing messages. Check the recipient address carefully, especially if someone recently edited the form.
Review these items:
- The recipient email address is correct and actively monitored.
- The sender address is on the same domain or otherwise allowed by your mail provider.
- The reply-to field uses the visitor’s email address, not the sender field.
- Required fields are not accidentally blocking valid submissions.
- Spam protection keys, if used, are valid and match the current site domain.
If your form plugin supports test emails, send one from inside the plugin settings and compare that result with a real front-end submission. A plugin-level test can pass while front-end submission fails because of JavaScript or caching issues.
Step 7: Check the page, theme, and recent changes
If the form used to work and the site was recently edited, review anything that changed around the same time:
- Theme files or page builder templates
- Header/footer scripts
- Security hardening rules
- Cache or minification settings
- Plugin updates
- Domain, SSL, or email provider changes
It is also worth checking whether the form is embedded on multiple pages but failing only on one. That often points to a page-level script conflict rather than a global site issue.
How to prevent form failures later
Once the form works again, make it easier to keep working:
- Use authenticated SMTP or a transactional mail service.
- Keep one reliable backup of the site and test restores occasionally.
- After major updates, test contact forms, checkout forms, and login flows.
- Avoid over-aggressive JavaScript optimization on pages with forms.
- Use a domain email address for form sender fields.
- Keep plugin count lean and remove tools you no longer need.
If your site has a history of update-related breakage, a small maintenance routine can prevent a lot of repeat incidents. For a practical framework, see What to Do When a WordPress Update Breaks Your Site and A Sensible WordPress Backup Strategy You Can Actually Restore.
When to call a professional
Bring in help if the form still fails after you have checked email delivery, plugin conflicts, and JavaScript errors, or if the site handles leads, bookings, or payments and every failed submission costs money. A good engineer can trace the full path quickly, fix the root cause, and tell you exactly what changed.
If you want a backup-first diagnosis before making more changes, use free diagnosis. If the site is down or the form is blocking revenue right now, Emergency Rescue is the fastest path. Mend’s senior engineers fix broken WordPress sites fast, usually the same day, and every paid fix includes a plain-English report plus a fixed-or-your-money-back guarantee.
If you prefer secure access without sharing passwords, you can connect the site through Mend Connect. That keeps the handoff simple and revokeable, which is especially useful when a form problem turns out to be a deeper site issue.
Quick troubleshooting order
- Submit a real test entry and confirm whether WordPress receives it.
- Check inbox, spam, and mail logs.
- Switch to authenticated SMTP if you are relying on default server mail.
- Test with caching, optimization, and security plugins disabled.
- Check browser console for JavaScript errors.
- Review recipient, sender, reply-to, and spam protection settings.
- Test after recent updates or theme changes.
Frequently asked questions
Why does my WordPress contact form send no email, but no error appears?
The form may be submitting correctly while email delivery fails silently. This is often caused by server mail limits, missing SMTP setup, or sender settings that your mail provider rejects.
Should I use the visitor’s email address as the “From” address?
Usually no. It is safer to use an address on your own domain and put the visitor’s email in the reply-to field. That avoids spoofing and improves deliverability.
Can caching or optimization plugins break contact forms?
Yes. JavaScript delay, minification, and aggressive caching can block form scripts or CAPTCHA assets. Test the form with those features temporarily disabled.
What is the safest way to test a broken form on a live site?
Back up first, then test on a staging copy if possible. If you must test on production, change as little as possible and check one variable at a time so you know what fixed it.