Maintenance
Why WordPress Contact Forms Stop Sending Email
If your WordPress contact form sends nothing, the problem is usually not the form itself. In most cases, the message is being blocked by mail delivery, a plugin conflict, a bad recipient setting, or spam protection that is too aggressive.
The safest way to fix it is to test the form, confirm whether the submission is being created at all, then work outward from the simplest causes: form settings, email delivery, plugin conflicts, and server mail configuration. Back up your site before changing anything risky.
What broken contact forms usually look like
Contact form problems do not always look the same. Sometimes the form appears to work, but no email arrives. Sometimes the button spins forever, the page reloads with no confirmation, or users see a validation error even when every field is filled in.
You might also notice that form submissions work in one browser but not another, or that messages only fail for certain recipients. That often points to a JavaScript issue, a caching problem, or a mail delivery issue rather than a broken form field.
The most likely causes
When a contact form stops working in WordPress, the root cause is usually one of these:
- The “From” address is set to a domain that your server cannot send as, so mail gets rejected or marked as spoofed.
- WordPress is using
wp_mail(), but the server’s mail function is blocked, misconfigured, or poorly trusted by inbox providers. - A plugin or theme conflict is breaking the form’s JavaScript or AJAX submission.
- Spam protection such as CAPTCHA, honeypot rules, or firewall rules is blocking real users.
- Caching or optimization is serving a stale page or breaking scripts required by the form.
- The form plugin settings changed after an update, migration, or domain move.
- The site is sending mail, but it is landing in spam because the domain does not have proper SPF, DKIM, or DMARC records.
Fix it step by step, starting with the safest checks
1. Test the form from the front end
Submit the form yourself using a real inbox you control. Note exactly what happens: does the page confirm success, reload, show an error, or do nothing? That tells you whether the issue is with the form submission, the email delivery, or both.
If the form plugin stores entries, check whether the submission is being saved in the dashboard. If entries are saved but mail is not arriving, the problem is almost certainly delivery, not the form fields.
2. Check the recipient and sender settings
Open the form settings and confirm the destination email address is correct. It is easy to typo the recipient or leave an old address in place after a site or staff change.
Then inspect the sender settings. The safest setup is usually to send from an address on your own domain, such as [email protected], while setting the reply-to field to the visitor’s email address. Do not set the “From” address to the visitor’s address unless your form plugin specifically recommends it and your mail setup supports it.
3. Rule out a mail delivery problem
WordPress core does not send mail through a modern transactional mail service by default. On many hosts, PHP mail is unreliable or restricted, and messages quietly fail or get filtered.
If your form plugin supports SMTP or a transactional mail service, configure it and send a test message. This is often the single most effective fix. If you already use SMTP, check that the credentials, port, encryption, and sender domain are still valid after any hosting or password changes.
Also verify your domain’s SPF, DKIM, and DMARC records. These DNS records help receiving mail servers trust messages that claim to come from your domain. If they are missing or incorrect, contact-form mail is much more likely to land in spam or be rejected.
4. Disable caching and optimization on the form page
Cache plugins, script minifiers, and some performance tools can break forms, especially ones that rely on JavaScript, AJAX, or nonce values. Exclude the contact page from page caching first, then test again.
If the form still fails, temporarily disable features such as JavaScript delay, combine, minify, and defer settings. Re-test after each change. If the form starts working, re-enable optimizations one at a time until you find the setting causing the breakage.
5. Look for plugin or theme conflicts
Contact forms often fail after a plugin update, theme change, or security plugin rule change. A conflict can stop form submission, block the AJAX request, or interfere with the email handler.
The safest test is to use a staging site. If you have one, temporarily switch to a default theme and deactivate nonessential plugins, then test the form again. If the form starts working, reactivate plugins one by one until the problem returns.
If you do not have staging, make a backup first. Then disable plugins in groups, not one at a time forever, so you can narrow the cause without a long outage.
6. Check spam protection and security rules
CAPTCHA and anti-spam tools can be too aggressive, especially after IP reputation changes, firewall rule updates, or site migrations. A form may appear normal but fail silently for visitors while passing only for admins.
Review CAPTCHA keys, honeypot settings, firewall blocks, and security plugin logs. If you recently changed domain names, re-issue the CAPTCHA keys for the new domain. If a security plugin is flagging legitimate submissions, whitelist the form endpoint or reduce the rule sensitivity.
7. Verify the form plugin itself
Some forms break because of missing plugin files, corrupted settings, or outdated add-ons. If the plugin has a built-in test mail feature, use it. If it has entry logging, confirm whether submissions are being recorded.
If the plugin was recently updated and the issue started afterward, review its changelog and settings first. Sometimes a field mapping, notification template, or reCAPTCHA integration needs to be reconfigured after an update.
8. Inspect the browser console and network request
If the form looks fine but submits poorly, open your browser’s developer tools and watch for JavaScript errors or failed network requests. A broken script, blocked file, or 403 response often explains why the form button does nothing.
Common clues include a failed REST API request, an uncaught JavaScript error, or a blocked request to a third-party validation service. Those errors usually point directly to the plugin or optimization layer causing the break.
A practical diagnosis order that saves time
If you want the shortest path to a real fix, use this order:
- Submit a test entry and confirm the exact failure.
- Check recipient, sender, and reply-to settings.
- Send a mail test through SMTP or your mail plugin.
- Temporarily disable caching and script optimization on the contact page.
- Test for plugin or theme conflicts on staging.
- Review CAPTCHA, security plugin, and firewall settings.
- Confirm SPF, DKIM, and DMARC records for the sending domain.
That sequence covers the most common causes without jumping straight into risky changes.
How to prevent contact forms from breaking again
Once the form is working, stabilize it so it stays working. Keep the form plugin updated, but test updates on staging first when possible. Use a proper mail delivery setup instead of relying on default server mail. Exclude contact pages from aggressive cache rules, and avoid changing sender addresses without checking authentication records.
It also helps to document which plugin powers the form, which SMTP service you use, and which page exclusions your cache plugin needs. When something breaks later, you will not have to rediscover the setup from scratch.
If you want a broader way to avoid update-related surprises, read this guide on WordPress broke-after-update issues. If you suspect the form is just one symptom of a larger site problem, browse the full WordPress fix guides.
When to call a professional
Bring in help if the form breaks after a migration, if mail is failing across the whole site, if you see security blocks you do not understand, or if you are not comfortable changing DNS, SMTP, or plugin settings. Those are all fixable issues, but the wrong change can affect every email your site sends.
If you need a fast, backup-first diagnosis, Mend can inspect the site, identify the exact failure point, and fix it with a plain-English report of what changed. Start with free diagnosis if you are not sure what is wrong, or use Quick Fix for a smaller form or mail problem that needs a same-day engineer.
If the site is completely unreliable, submissions are urgent, or the issue is tied to a hacked plugin, broken update, or mail outage, Emergency Rescue is the safer path. If you want secure access without sharing passwords, you can also connect your site securely with the free Mend Connect plugin.
What a real fix should include
A proper fix does more than make one test message arrive. It should confirm the form submits correctly, verify the email reaches the intended inbox, and make sure the delivery path is authenticated enough to survive inbox filtering. If the root cause was a conflict or bad optimization setting, the fix should also make it clear which setting caused the break so it does not return.
That is especially important if your form sends leads, support requests, or order inquiries. A broken form can look like a quiet inconvenience while it is actually cutting off revenue and customer communication.
If you have already checked the obvious settings and the form still fails, it is usually faster to diagnose the mail path and plugin conflict together than to keep guessing. Mend handles that kind of WordPress fix every day, with a backup-first workflow and a fixed price before work starts.
Frequently asked questions
Why does my WordPress contact form work in the dashboard test but not on the live page?
That usually means the form settings are fine, but something on the front end is breaking submission. Common causes are cache, JavaScript errors, a theme conflict, or a security rule blocking the request.
Should I use the visitor’s email address as the From address?
Usually no. Use a sender address on your own domain and set the visitor’s email as Reply-To instead. That avoids mail authentication problems and reduces the chance of rejection.
How do I know if the problem is email delivery or the form itself?
If submissions are saved in the plugin but no email arrives, it is a delivery problem. If the form will not submit or shows errors, it is more likely a JavaScript, plugin, or spam-protection issue.
What is the safest first step before changing anything?
Back up the site, then test the form and check whether entries are being stored. That gives you a clear starting point and protects you if a setting change makes things worse.