🔧 Flat-price WordPress fixes from $69 — start with a free diagnosis, no card. Get a free diagnosis →

Guides

Fix WordPress Contact Forms That Send Nothing

Oct 30, 2026 · 10 min read · By the Mend engineering team

If your WordPress contact form says “sent” but nobody receives the message, the form is usually not the real problem. In most cases, the form is working and WordPress email delivery, routing, or spam filtering is failing behind the scenes.

The safest way to fix it is to test the form submission path end to end, check whether WordPress can send mail at all, and then verify spam, SMTP, and plugin conflicts before changing the form itself.

What “broken contact form” usually looks like

Contact form failures tend to fall into a few patterns:

  • The form submits, shows a success message, but no email arrives.
  • The form spins forever, refreshes, or returns an error.
  • Only some submissions arrive, usually from certain email providers.
  • Messages land in spam or the wrong inbox.
  • The form worked before an update, then suddenly stopped.

That last one matters because the visible form can be fine while the mail transport, validation, security layer, or webhook behind it is failing.

The most likely causes

When a contact form appears broken, the root cause is often one of these:

  • WordPress is using PHP mail instead of authenticated SMTP.
  • Your host blocks or throttles outgoing mail.
  • The sender address does not match your domain.
  • Spam protection is too aggressive and blocks real users.
  • A security, caching, or optimization plugin is interfering with the form request.
  • The form plugin, theme, or WordPress core was updated and something changed.
  • DNS or email authentication records are missing, so messages are filtered or rejected.
  • The notification email is going to a full mailbox, a filtered folder, or a different recipient than you expect.

Step 1: Confirm where the failure happens

Start by asking a simple question: does the form fail to submit, or does it submit but the email never arrives?

Test the form from an incognito window, on mobile data if possible, and with a plain message that avoids links and attachments. Then check both the success response and the recipient inbox.

If you get a success message, the issue is probably delivery or routing. If the form errors before submission, the problem is more likely validation, JavaScript, REST API access, or a plugin conflict.

Step 2: Check the form settings first

Before touching anything else, review the form’s notification settings:

  • Make sure the recipient address is correct.
  • Confirm the “from” address is on your domain if the plugin allows it.
  • Check whether replies are being sent to the site address instead of the visitor’s address.
  • Look for conditional logic that may suppress notifications for some submissions.

A surprisingly common mistake is sending mail “from” a Gmail, Yahoo, or other external address while the server is trying to deliver mail on behalf of your site domain. That can trigger rejection or spam filtering.

Step 3: Test site email outside the form

If the form plugin includes a test notification feature, use it. If it does not, send a simple WordPress email from another plugin or tool you trust, then verify whether it arrives.

This tells you whether WordPress itself can send mail. If a test email also fails, the issue is not the form; it is the site’s mail delivery path.

For a deeper look at mail-related failures, see Why WordPress Emails Go to Spam and How SMTP Fixes It.

Step 4: Move from PHP mail to authenticated SMTP

Many shared hosts still allow WordPress to send mail through PHP mail, but that method is unreliable. Messages can be dropped, delayed, or flagged because they are not properly authenticated.

Authenticated SMTP usually fixes the delivery side by sending mail through a real mailbox or trusted transactional provider with proper authentication. That does not guarantee inbox placement, but it usually improves reliability significantly.

Use the mail provider recommended by your host or email service, and make sure your “from” address matches a domain you control. If your DNS supports SPF, DKIM, and DMARC, those records should be aligned with the sender.

If you are unsure how your site is currently sending mail, that is a good place to pause and get help. Mend can diagnose the mail path, test delivery safely, and fix the issue through a backup-first workflow at /start/diagnosis.

Step 5: Check spam, filters, and mailbox rules

If mail is leaving WordPress but never landing where you expect, check the receiving side carefully:

  • Look in spam, promotions, updates, and archived folders.
  • Search by subject line and the visitor’s email address.
  • Review inbox rules, forwarding, and server-side filters.
  • Confirm the mailbox is not full.

Also test with a few different sender addresses. Some providers are stricter than others, and a form may appear broken only when messages are sent to a particular domain.

Step 6: Disable aggressive security or anti-spam layers briefly

Security and anti-spam tools are useful, but they can overreach. If the form worked before and now blocks legitimate users, temporarily disable one layer at a time and retest:

  • reCAPTCHA or hCaptcha integrations
  • firewall or bot protection plugins
  • honeypot or token-based anti-spam modules
  • country or IP restrictions

Do not leave protections off any longer than necessary. The point is to isolate the blocker, then tune the rule so real submissions pass without opening the door to spam.

Step 7: Rule out plugin and theme conflicts

Broken forms often start after an update because another plugin loads JavaScript that conflicts with the form library or modifies the submit request.

Safely test this by:

  1. Backing up the site first.
  2. Switching temporarily to a default theme if you can do so safely on a staging site.
  3. Deactivating performance, security, and caching plugins one at a time.
  4. Retesting the form after each change.

If the problem disappears when a specific plugin is disabled, you have found the conflict. If you need a guide for the broader update-related fallout, see WordPress Site Broke After an Update? Here's What Happened and How to Fix It.

Step 8: Clear caches in the right order

Forms can fail when stale cached assets or page output are served after a plugin update. Clear caches in this order:

  • plugin cache
  • server cache or host cache
  • CDN cache
  • browser cache

Then retest from a private browser window. If your form uses AJAX or a REST endpoint, caching can hide the real behavior until the cache is cleared.

Step 9: Check JavaScript errors and blocked requests

If the form never submits, open the browser developer console and look for errors. A single JavaScript error from another plugin can stop the form script from running.

Also check the Network tab for failed requests, blocked cross-origin calls, or 403/500 responses. If the form uses a REST API endpoint, a security rule or server limitation may be blocking it.

You do not need to be a developer to spot the basics: if the submit button does nothing, or an endpoint returns an obvious error code, that narrows the investigation quickly.

Step 10: Verify the notification chain end to end

A healthy contact form should have a complete path from visitor input to inbox delivery. Verify each link:

  • The form sends a request successfully.
  • The plugin creates the notification.
  • The mail system accepts the message.
  • The recipient mailbox receives it.

If any link breaks, fix that layer first. A form can look correct in the admin area and still fail because one downstream piece is misconfigured.

How to prevent this from happening again

Once the form is working again, keep it stable with a few simple habits:

  • Use authenticated SMTP instead of default PHP mail.
  • Keep only the anti-spam protection you actually need.
  • Test contact forms after updates, not just the homepage.
  • Keep your sending domain aligned with SPF, DKIM, and DMARC where possible.
  • Review form notifications after theme or plugin changes.
  • Maintain a backup you can actually restore, then test it periodically.

If you want a more reliable recovery plan overall, this pairs well with The Backup Test Most WordPress Sites Never Do.

When to call a professional

Call a professional when the form is business-critical, the issue is intermittent, or you have already checked the settings and mail path without finding the cause. It is also wise to get help if you are seeing JavaScript errors, REST API failures, a security plugin conflict, or mail deliverability problems tied to DNS and server configuration.

If you are short on time, Mend can diagnose the full chain, fix the root cause, and send a plain-English report of what changed. Start with a free diagnosis at /start/diagnosis, or go straight to a faster rescue if the site is actively costing you leads at /start/emergency.

If you want secure access without sharing passwords, use /connect. Mend’s engineers work on a backup-first workflow, most fixes are completed the same day, and every paid fix is backed by a fixed-or-your-money-back guarantee.


In the end, a “broken” WordPress contact form is usually a delivery, filtering, or conflict problem, not a form problem. Work from the symptom outward, test each layer once, and you can usually restore it without guessing.

Frequently asked questions

Why does my WordPress contact form say it was sent, but I never get the email?

The form often submits correctly, but WordPress mail is failing or being filtered after submission. The most common fixes are authenticated SMTP, correct sender settings, and checking spam and mailbox rules.

Should I replace my contact form plugin if submissions stop arriving?

Not immediately. First confirm whether the failure is in the form itself or in email delivery, because changing plugins can hide the real cause and create a second problem.

Why did my contact form break after an update?

Updates can change JavaScript behavior, security rules, or notification settings, and that can break submissions or delivery. Check plugin conflicts, clear caches, and retest the form after each change.

What is the safest first step before troubleshooting a broken form?

Back up the site, then test the form in a private browser window and check whether the issue is submission or delivery. If the site is business-critical, use a staging copy or get professional help before making larger changes.