WordPress Contact Form Shows Error After Submit (Fixed)
Your visitor fills out your contact form and hits submit. They get an error message instead of a success message. They don't know if it went through or not, so they either submit it again (duplicate messages) or leave your site frustrated.
These post-submit errors are usually predictable. The error message (if you read it carefully) tells you exactly what's wrong. Here are the most common WordPress contact form errors after submit and the fix for each one.
Error #1: "There was an error trying to send your message. Please try again later" (Red Border)
What you see: Form submits, but displays an error message with a red border around it. The user's data might be saved to the backend (if you're using a database plugin), but no email is sent.
What it means: Your server can't send emails. This is usually a hosting configuration issue.
Why it happens:
- Your hosting provider disabled PHP's mail() function
- Your server's mail service isn't running
- Email authentication (SPF, DKIM, DMARC) is missing or misconfigured
- The "From" email address is invalid
The fix: Install and configure WP Mail SMTP plugin (free version).
Steps:
- Install WP Mail SMTP (free version from WordPress.org).
- Go to WP Mail SMTP > Settings > Mailer.
- Choose your email provider: Gmail (if using Gmail), Mailgun (free tier), SendGrid (free tier), or Brevo/SendinBlue (free tier).
- Authenticate with your email account (the plugin walks you through it).
- Go to WP Mail SMTP > Tools > Email Test and send a test email to yourself.
- If the test email arrives, your contact form will now work.
- If it doesn't arrive, the problem is deeper (see Fix #6 below).
Why this works: SMTP uses real email authentication instead of relying on your server's unreliable PHP mail() function. Gmail and Outlook now require authentication, and SMTP provides it.
Error #2: "There was an error trying to send your message" (Yellow Border)
What you see: Error message with a yellow border, not red. Email gets sent successfully (you might get it), but the form still shows an error.
What it means: Contact Form 7 thinks the submission is spam, even though it went through. This is a false positive.
Why it happens:
- Contact Form 7's spam detection triggered (for example, too many links in the message, repeated words, etc.)
- reCAPTCHA misconfiguration
- Honeypot field was filled
- Akismet flagged it as spam
The fix:
For Contact Form 7:
- Edit your form > Mail tab.
- Check the "Additional headers" field for formatting errors (see Error #4 below).
- Install Flamingo plugin (free) to see which submissions CF7 thinks are spam and why.
- Adjust CF7's spam detection: some third-party spam checkers are overly aggressive.
Quick fix: Disable reCAPTCHA and test. If the error goes away, it's a reCAPTCHA misconfiguration (see Error #3).
Note: This error is frustrating because the email usually DOES get sent. Users just get a scary error message. The best fix is to switch to a plugin with better spam detection (WPForms, Gravity Forms, or Fluent Forms) if this becomes chronic.
Error #3: "reCAPTCHA validation failed" or "There was an error trying to send your message" (With reCAPTCHA)
What you see: Form has reCAPTCHA checkbox. User fills form, clicks the checkbox, hits submit, gets error.
What it means: reCAPTCHA isn't validating properly. Usually API key mismatch or misconfiguration.
Why it happens:
- Site Key and Secret Key are swapped in your form settings
- You're using v2 keys with v3 settings (or vice versa)
- The domain in your reCAPTCHA console doesn't match your WordPress domain
- Multiple reCAPTCHA instances loading (plugin conflict)
- reCAPTCHA script isn't loading due to caching or plugin conflict
The fix:
Step 1: Verify API Keys
- 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.).
- Important: Put Site Key in the "Site Key" field and Secret Key in the "Secret Key" field (people mix these up constantly).
- Save and test.
Step 2: Verify Domain Matches
- In your reCAPTCHA console, check the domain listed for your site.
- Make sure it matches your WordPress domain exactly (https://, no www if you don't use www, etc.).
- If it doesn't match, edit the reCAPTCHA site and add the correct domain.
Step 3: Check for Duplicate reCAPTCHA Instances
- Right-click your form page > Inspect > Console tab.
- Look for error: "grecaptcha is not defined" or "reCAPTCHA has already been called"
- If you see this, multiple plugins are loading reCAPTCHA. Disable reCAPTCHA in all but one plugin.
Step 4: Clear Cache
- Clear your browser cache (Ctrl+Shift+Delete on most browsers).
- Clear WordPress cache (if using a cache plugin like WP Super Cache).
- Reload the form and test.
If still failing: Try hCaptcha or Cloudflare Turnstile instead. They work independently of Google's reCAPTCHA and often fix these issues.
Error #4: "There was an error trying to send your message" (Contact Form 7 6.1.5+)
What you see: Form worked fine, then after updating Contact Form 7 to version 6.1.5 (released February 2026) or later, it stopped working with an error.
What it means: CF7 6.1.5 added strict validation of the "Additional headers" field. Your headers don't meet the new strict format.
Why it happens: CF7 tried to block malicious email header injection attacks. But if your headers aren't perfectly formatted, emails fail.
The fix:
- Go to Contact > Your Form > Mail tab.
- Scroll down to "Additional headers."
- Check each line. Headers must be formatted exactly like this (one per line):
Reply-To: your-email@example.com - Invalid formats that break now:
Reply-To: Your Name <your-email@example.com>← Remove the name, just use emailReply-To:[your_email]← Missing space after colon- Custom headers that aren't standard (CF7 now rejects these)
- Remove any lines that don't follow the exact format above.
- Save and test.
Expected result: If headers are properly formatted, email sends without error.
Error #5: "This field is required" Error on Submission
What you see: User fills out all fields, hits submit, and gets "This field is required" error on a field they already filled out.
What it means: Form validation is failing. The field isn't being recognized as filled, or there's a formatting requirement you didn't explain (like phone number format).
Why it happens:
- Field has a strict format requirement (phone: must be (123) 456-7890, not 123-456-7890)
- JavaScript error preventing proper form submission
- Cache plugin caching the form incorrectly
- Conflict with a security plugin (honeypot or anti-spam)
The fix:
For WPForms:
- Edit your form > Your Field > Advanced tab.
- Check "Field Validation" — does it have a format requirement?
- If yes, display a placeholder or helper text showing the required format (e.g., "Phone: (123) 456-7890").
- Save and test.
For Gravity Forms:
- Edit your form > Your Field > Advanced tab.
- Check field validation and expected format.
- Add descriptive label or placeholder text.
For Contact Form 7:
- Edit your form. In the form code, find your field tag (e.g., [text* your-name]).
- Check if it has pattern or validation constraints.
- Remove strict validation or add placeholder text explaining the required format.
Error #6: Email Says "Sent" But Shows Error (Form Sends Email AND Shows Error)
What you see: Form submits and shows an error message. But when you check your email, the message DID arrive. Confusing and frustrating for users — they submit multiple times thinking it failed.
What it means: Email sent successfully, but the form plugin's confirmation code has a bug or your email reply address is blocked.
Why it happens:
- The form plugin sent the email successfully, but the server can't send the admin CONFIRMATION email back to the form
- Same domain restriction: your server blocks sending an email to the same domain as the sender
- Timeout: email took too long to send, so the form thought it failed
- Plugin bug in the confirmation logic
The fix:
For Contact Form 7:
- Edit your form > Mail tab.
- In the "From:" field, make sure it's your domain email (not a generic [email-address] placeholder).
- In the "To:" field (where the admin email goes), make sure it's different from the "From:" email.
- Example: From: noreply@yourdomain.com | To: admin@yourdomain.com
- Save and test.
For WPForms/Gravity Forms:
- Go to your form settings > Notifications.
- Check the "From Email" — is it your domain?
- Check the "To Email" — is it different from the From email?
- If they're the same, change one to a different email address.
Why this fixes it: Some servers don't allow sending an email from an address to the same address. By using different From/To addresses, you avoid this block.
Error #7: "Sorry, email appears to be invalid"
What you see: User fills out form with their email address. On submit, form says "Email appears to be invalid" even though the email looks correct.
What it means: The form's email validation is too strict, or the user's email has a format the plugin doesn't recognize.
Why it happens:
- User has an email with a plus sign (name+tag@example.com) which some validators reject
- Email domain has a dash or unusual format
- Form plugin's email regex is broken
- User copied/pasted email with trailing space
The fix:
For WPForms:
- Edit your form > Email Field > Advanced tab.
- Uncheck "Strict email validation" or reduce validation rules.
- Save and test with the email that was failing.
For Gravity Forms:
- Edit your form > Email Field > Advanced tab.
- Toggle off "Email Confirmation" or check validation settings.
- Make sure validation regex is standard (most setups are fine by default).
For Contact Form 7:
- Edit your form. Find the email field tag (e.g., [email* your-email]).
- Make sure there's no custom regex or validation constraint.
- Standard CF7 email validation is usually fine. If it's failing, check browser console for JavaScript errors.
Error #8: Form Timeout / No Response After Submit
What you see: User hits submit, loading spinner appears, then nothing. No success, no error. Page just hangs or times out after 30 seconds.
What it means: Form submission is taking too long (usually email sending is slow) and timing out before completing.
Why it happens:
- Your host's mail server is slow
- SMTP server is overloaded
- DNS lookup is slow
- Server timeout is set to 30 seconds (default) but your email takes 35+ seconds
The fix:
Step 1: Use SMTP instead of PHP mail
Install WP Mail SMTP and use a proper email service (Gmail, Mailgun, SendGrid). They're faster than PHP mail.
Step 2: Increase server timeout (if using WP Mail SMTP)
- In WP Mail SMTP settings, go to Advanced tab.
- Increase "Connection Timeout" to 20-30 seconds (default is 10).
- Save and test.
Step 3: Check with your hosting provider
If timeouts persist even with SMTP, your host might be blocking or throttling email. Contact them and ask about email sending limits or mail server configuration.
Error #9: Security Plugin Blocking Form Submission
What you see: Form won't submit. No error message, or a vague security error ("Suspicious activity detected").
What it means: Your security plugin (Wordfence, Sucuri, etc.) thinks the form submission is malicious and blocked it.
Why it happens:
- Form contains a link (security plugin blocks links in forms by default)
- User's IP is flagged (VPN, corporate network, etc.)
- Form submission from a different country triggered geo-blocking
- Honeypot field was triggered
The fix:
For Wordfence:
- Go to Wordfence > Tools > Blocked IPs.
- Check if the user's IP is listed. If so, unblock it.
- Go to Wordfence > Options > Advanced > WAF (Web Application Firewall).
- Disable "Protect forms from common attacks" temporarily and test.
- If form works, re-enable it but adjust sensitivity settings.
For Sucuri:
- Check Sucuri logs for blocked requests.
- Whitelist your form URL in Sucuri settings.
For any security plugin:
- Temporarily deactivate security plugin and test form.
- If form works, reactivate plugin and adjust its sensitivity or rules.
- Exclude your contact form page from security scanning if possible.
Error #10: "Honeypot triggered" or Silent Failure with Honeypot
What you see: Form submits, but nothing happens. User gets no error, but silently the honeypot field caught something.
What it means: Your honeypot anti-spam field is catching legitimate submissions.
Why it happens:
- Browser autocomplete filled the hidden honeypot field
- Honeypot field isn't actually hidden (CSS is broken)
- User's form-filling software filled all fields including the hidden one
The fix:
Disable honeypot and use reCAPTCHA instead:
For WPForms:
- Edit your form > Settings > Spam Protection.
- Uncheck "Enable anti-spam honeypot."
- Enable Google reCAPTCHA instead (more reliable).
- Save and test.
For Contact Form 7:
- Edit your form code.
- Remove the honeypot field (usually looks like [acceptance honeypot-field-name]).
- Add reCAPTCHA instead: [recaptcha]
- Save and test.
Quick Error Diagnosis Flowchart
- Red border error? → Fix #1 (Set up SMTP)
- Yellow border error? → Fix #2 (Disable reCAPTCHA or check Flamingo)
- reCAPTCHA error? → Fix #3 (Verify API keys)
- Error after CF7 update? → Fix #4 (Fix Additional headers)
- "Field required" on filled field? → Fix #5 (Check format validation)
- Email arrived but shows error? → Fix #6 (Separate From/To emails)
- "Email invalid"? → Fix #7 (Disable strict validation)
- Form timeout/hangs? → Fix #8 (Use SMTP, increase timeout)
- Security plugin error? → Fix #9 (Whitelist or disable plugin)
- Silent failure/no error shown? → Fix #10 (Disable honeypot)
FAQ
Q: The form shows an error, but my email client shows the message arrived. Is that normal?
A: Not ideal, but it happens (Fix #6). The email sent successfully, but the form's confirmation code failed. Users get confused and might submit multiple times. To fix it, make sure your "From" and "To" email addresses are different in the form settings.
Q: How do I know if the error is from the form plugin or my hosting provider?
A: Use your form plugin's email test tool (if available). If the test email arrives, the host is fine — the problem is the form configuration. If the test fails, it's the host.
Q: Should I remove the honeypot and just use reCAPTCHA?
A: Yes. Honeypots are unreliable (Fix #10). reCAPTCHA v3 (invisible) is better — users don't see it, but it still blocks bots. Use one or the other, not both.
Q: My form works on my phone but not on desktop. What's happening?
A: Usually a JavaScript error or cache issue specific to desktop browsers. Right-click > Inspect > Console and look for red errors. Or clear browser cache and try again.
The Real Talk
Most post-submit errors come down to three things: (1) email isn't being sent (Fix #1, set up SMTP), (2) reCAPTCHA misconfiguration (Fix #3), or (3) plugin conflict (Fix #9). Start with SMTP. If that doesn't fix it, disable all plugins except your form plugin and test. Usually one of those two steps kills the error.
If you're on Contact Form 7 and constantly seeing errors even after these fixes, seriously consider switching to WPForms or Gravity Forms. You'll spend less time troubleshooting and more time converting leads.
