WordPress Contact Form Not Working: 15 Fixes
A contact form that doesn't work is worse than no contact form at all. Your visitors think they've reached out, but their messages disappear into the void. You lose leads. Nobody knows about it until someone calls saying "I filled out your form three days ago."
Here are the 15 most common WordPress contact form problems and the exact steps to fix each one. Most are simple (2-3 minute fixes). A few require a bit more digging. But all of them are fixable.
Before You Start: Test Your Form
Before troubleshooting, do this first:
1. Fill out your contact form yourself. Does it say "message sent" or "success"? Or do you get an error?
2. Check your email inbox AND spam folder. This catches 50% of "not working" problems immediately.
3. Test WordPress emails directly. Go to your contact form plugin settings and look for an "Email Test" button (WPForms, Gravity Forms, and others have this). Send a test email. Does it arrive?
These three things tell you whether the problem is the form, the email delivery, or the email provider.
The 15 Fixes
Fix #1: Email Going to Spam (The #1 Culprit)
The problem: Your form works fine. You get a "message sent" confirmation. But the email lands in Gmail's spam, Outlook's junk, or never arrives.
Why it happens: Gmail and Outlook now require email authentication (DKIM, SPF, DMARC). WordPress sends emails from your server with zero authentication, so Gmail flags them as suspicious.
The fix: Install the WP Mail SMTP plugin (free version works). This tells WordPress to send emails through a real SMTP server with proper authentication instead of your server's unreliable PHP mail.
Steps:
- Install WP Mail SMTP (free version from WordPress.org).
- Go to WP Mail SMTP > Settings.
- For "Mailer," choose "Gmail" if you use Gmail, or "Mailgun" (free tier available) or "SendGrid" (free tier available).
- Authenticate with your email account (WP Mail SMTP walks you through this).
- Go to WP Mail SMTP > Tools > Email Test, send a test email to yourself.
- If it arrives, your email is fixed.
Expected result: Emails now arrive in the inbox instead of spam. This fixes 90% of email delivery issues.
Fix #2: Web Hosting Has PHP Mail Disabled
The problem: Your form says it submitted, but nothing happens. No email. No confirmation email. Radio silence.
Why it happens: Some budget hosting providers disable PHP's mail() function for security reasons. WordPress can't send any emails.
The fix: Use SMTP (same as Fix #1). SMTP doesn't rely on PHP mail ā it uses a real mail server.
Quick check: In WP Mail SMTP, go to Tools > Email Test and try to send. If it says "PHP mail is disabled," your host blocked it. SMTP will work even if PHP mail is blocked.
Fix #3: Contact Form 7 ā Additional Headers Broken (CF7 6.1.5+)
The problem: Contact Form 7 forms suddenly stopped sending emails after you updated to version 6.1.5 or later (released February 2026).
Why it happens: CF7 6.1.5 added strict validation of the "Additional headers" field to block malicious header injection. If your headers aren't perfectly formatted, emails won't send.
The fix:
- Go to Contact > Edit your form > Mail tab.
- Scroll down to "Additional headers."
- Check if the Reply-To, Cc, or Bcc lines are formatted correctly. Each should be on its own line in this format:
Reply-To: your-email@example.com - Remove any custom headers that don't follow strict format (most custom headers break CF7 now).
- Save the form.
- Test submission.
Expected result: Email sends successfully if your headers are properly formatted.
Fix #4: reCAPTCHA API Keys Are Wrong or Mismatched
The problem: Form displays reCAPTCHA fine, but when you submit, it fails with "reCAPTCHA validation failed" or "There was an error trying to send your message."
Why it happens: You copied the keys wrong, or your Site Key and Secret Key don't match in Google's reCAPTCHA console.
The fix:
- Go to Google reCAPTCHA Admin Console.
- Select your site from the list.
- Copy your Site Key (public key) and Secret Key (private key).
- Go to your form plugin settings (WPForms, Gravity Forms, Contact Form 7, etc.).
- Paste the keys in the reCAPTCHA section. Make sure you put Site Key in the "Site Key" field and Secret Key in the "Secret Key" field (people mix these up).
- Save settings and test.
Verify in Google Console: Make sure the domain listed in Google's console matches your WordPress site's domain exactly (including https:// and www if applicable).
Fix #5: Multiple reCAPTCHA Instances Loading (JavaScript Error)
The problem: reCAPTCHA checkbox shows, but form won't submit. Browser console shows "grecaptcha is not defined" or "reCAPTCHA has already been called."
Why it happens: Two different plugins are loading reCAPTCHA code. Or your theme is loading it, and your form plugin is too. This conflicts.
The fix:
- Right-click your page > Inspect > Console tab.
- Look for red error messages mentioning "grecaptcha" or "reCAPTCHA."
- If you see "reCAPTCHA has already been called," you have duplicates.
- Check which plugins have reCAPTCHA enabled: WPForms, Gravity Forms, Contact Form 7, RafflePress, etc.
- Disable reCAPTCHA in all but one plugin (keep it on the form plugin only).
- Clear your browser cache and test.
Alternative: Switch to hCaptcha or Cloudflare Turnstile if one plugin insists on using reCAPTCHA. They work independently.
Fix #6: Honeypot Anti-Spam Triggered
The problem: Your form has a honeypot field (hidden field that catches bots). But legitimate users can't submit either ā form just silently fails.
Why it happens: The honeypot is too obvious or misconfigured. Some users accidentally fill it out (or browser autocomplete fills it).
The fix:
For WPForms:
- Edit your form > Settings > Spam Protection tab.
- Uncheck "Enable anti-spam honeypot."
- Use reCAPTCHA instead (it's more reliable).
For Contact Form 7:
- Edit your form > in the form code, find the honeypot field (usually something like
[acceptance honeypot-field]). - Remove or comment it out.
- Save and test.
Fix #7: Plugin Conflict (Disable to Test)
The problem: Form worked yesterday, now it's broken. No error message. Just fails silently.
Why it happens: You activated a new plugin, or an update broke compatibility. Cache plugin, security plugin, or optimization plugin can block form submission.
The fix:
- Deactivate ALL plugins except your contact form plugin.
- Test the form. Does it work now?
- If yes, reactivate plugins one by one, testing after each, until it breaks. That's your culprit.
- Once you find it, contact the plugin's support or switch to an alternative.
Common conflict culprits: Cache plugins (WP Super Cache, LiteSpeed Cache), security plugins (Wordfence, Sucuri), optimization plugins (Autoptimize, WP Rocket).
Fix #8: Cache Plugin Blocking Form Submission
The problem: Form won't submit when cache plugin is active.
Why it happens: Cache plugins sometimes break dynamic form processing, especially on pages with multiple forms or complex AJAX.
The fix:
- Go to your cache plugin settings (WP Super Cache, WP Rocket, LiteSpeed Cache, etc.).
- Find "Exclude URLs" or "Exclude pages."
- Add your contact form page (e.g., /contact-us) to the exclusion list so it never gets cached.
- Clear all cache and test.
Expected result: Form submits, but cache plugin caches everything else on your site.
Fix #9: HTTPS/SSL Certificate Issue
The problem: Form submits on your desktop, but fails on mobile. Or reCAPTCHA won't load.
Why it happens: Your site is partially HTTPS (some pages are http://, some are https://). reCAPTCHA and form submission require full HTTPS.
The fix:
- Go to WordPress Settings > General.
- Check that both "WordPress Address" and "Site Address" start with https:// (not http://).
- If they're http, change to https and save.
- Install an SSL certificate (most hosts provide free SSL via Let's Encrypt).
- Force HTTPS: Go to Settings > Discussion and enable "Force SSL on homepage" or use a plugin like Really Simple SSL.
- Clear cache and test.
Fix #10: Cookie Consent Plugin Interfering
The problem: Form shows an error message like "This site requires cookies to be accepted" or form won't submit until cookies are accepted.
Why it happens: Your cookie consent plugin (CookieYes, Cookiebot, Cookie Notice) is blocking form submission until the user accepts cookies.
The fix:
- Go to your cookie plugin settings (e.g., CookieYes > Plugins tab).
- Find your contact form plugin in the list (WPForms, Gravity Forms, etc.).
- Uncheck the checkbox next to it to exclude it from cookie blocking.
- Save and test.
Alternative: Configure your cookie plugin to allow form submission without cookie acceptance, or make cookies non-blocking.
Fix #11: Form Not Displaying (Shortcode Missing or Broken)
The problem: Your contact form page shows nothing ā no form at all.
Why it happens: The shortcode is missing, broken, or pasted in the wrong place (text editor instead of visual editor).
The fix:
For WPForms:
- Edit the page/post where the form should appear.
- Click the WPForms icon in the editor (looks like a form).
- Select your form from the list.
- The shortcode will be inserted automatically.
- Publish and view the page.
For Contact Form 7:
- Go to Contact > Forms and note the form ID (e.g., "Contact form 1").
- Edit the page/post where the form should appear.
- In the content area, paste:
[contact-form-7 id="123"](replace 123 with your form ID). - Publish and view the page.
If still not showing: Check that your theme supports Gutenberg blocks (if using block editor) or Classic Editor (if using legacy editor).
Fix #12: Theme Conflict (Use a Default Theme to Test)
The problem: Form displays, but submits fail. Or reCAPTCHA won't load. No error message.
Why it happens: Your theme has custom JavaScript that conflicts with the form or form plugin.
The fix:
- Go to Appearance > Themes.
- Temporarily activate a default theme (Twenty Twenty-Four, Twenty Twenty-Three, etc.).
- Test your form on the same page.
- If it works, your theme is the culprit. Contact the theme developer or switch themes.
- If it still fails, reactivate your original theme and try another fix.
Fix #13: JavaScript Errors (Check Browser Console)
The problem: Form won't submit. Error message says something generic like "There was an error."
Why it happens: JavaScript error in the form or a conflicting plugin's code.
The fix:
- Right-click your form page > Inspect > Console tab.
- Look for red error messages.
- Read what the error says. It usually points to the problem: "grecaptcha is not defined," "jQuery is not defined," "Undefined variable xyz."
- Google the error message ā it'll often tell you which plugin is causing it.
- Disable that plugin and test.
Common errors: "grecaptcha is not defined" = reCAPTCHA conflict. "jQuery is not defined" = plugin loading jQuery incorrectly. Any error with a plugin name = that plugin is broken.
Fix #14: Form Recipient Email Is Wrong
The problem: Form shows "message sent" but the email goes nowhere (not even spam).
Why it happens: The "Send To" email address in your form settings is typo'd or set to a non-existent email.
The fix:
For WPForms:
- Go to Forms > Your Form > Settings > Notifications.
- Check the "To Email Address" field. Is it correct?
- If it's an admin email placeholder like {admin_email}, go to Settings > General and verify the admin email is correct.
- Save and test.
For Gravity Forms:
- Go to Forms > Your Form > Settings > Notifications.
- Check the "To Email" field.
- Test by sending a notification with the "Test" button.
For Contact Form 7:
- Edit your form > Mail tab.
- Check the "To:" field. Is it your correct email?
- Save and test.
Fix #15: Outdated or Broken Contact Form Plugin
The problem: You've tried everything above. Still doesn't work.
Why it happens: Your plugin is outdated and incompatible with your WordPress version. Or it's a free plugin that's been abandoned.
The fix:
- Check when your form plugin was last updated. Go to Plugins > look at the "Last Updated" date.
- If it says "2+ years ago," it's abandoned. Deactivate it and switch to a maintained plugin.
- Better options: WPForms (very well maintained, free version works), Gravity Forms (professional but costs money), Fluent Forms (affordable).
- When switching: Install the new plugin, recreate your forms (same fields, different plugin), delete the old one.
How to choose a maintained plugin: 100,000+ active installations, 4.5+ star rating, updated within the last 3 months.
Troubleshooting Checklist
If you're stuck, go through this in order:
- ā Check spam folder for emails
- ā Set up WP Mail SMTP (fixes 90% of email issues)
- ā Test form with default theme activated
- ā Deactivate all plugins except form plugin
- ā Check browser console for JavaScript errors
- ā Verify reCAPTCHA API keys if using reCAPTCHA
- ā Check form recipient email address is correct
- ā Ensure site has full HTTPS (https://, not http://)
- ā Clear all caches (browser, WordPress, CDN)
- ā Check when form plugin was last updated
FAQ
Q: My form works fine on desktop but fails on mobile. Why?
A: Usually an SSL issue (see Fix #9) or a plugin that behaves differently on mobile. Test with a default theme on mobile first.
Q: How do I know if it's a form plugin problem vs. email delivery problem?
A: Use your form plugin's email test tool (WPForms has "Email Test" in settings). If the test email arrives, it's delivery. If it doesn't, it's the plugin or host.
Q: Should I use reCAPTCHA or honeypot?
A: Use reCAPTCHA v3 (invisible, no user action needed). Honeypots are unreliable. Honeypot + reCAPTCHA is overkill ā pick one.
Q: My contact form is on a page builder (Elementor, Divi). Will these fixes work?
A: Yes. Page builders just display the form plugin code. The fixes apply to the plugin, not the page builder.
The Real Talk
Most contact form problems are email delivery (Fix #1) or plugin conflict (Fix #7). Start with SMTP. If that doesn't work, disable all plugins. 90% of people solve it with one of those two steps.
If you're past those and stuck, the plugin itself might be the problem. Don't spend two hours troubleshooting a plugin that hasn't been updated in a year. Switch to WPForms (free version is solid) and move on. Your time is worth more than fighting outdated software.
