WordPress Contact Form Not Working? Troubleshooting and Solutions
It's one of the most frustrating WordPress problems: your contact form appears to work, but emails never arrive. Or even worse — you have no idea that customers have been trying to contact you.
This guide helps you diagnose and solve the most common problems with WordPress contact forms.
What you'll learn
- The 5 most common causes of form failures
- Step-by-step troubleshooting
- How to fix emails that aren't sending
- Plugin-specific solutions (Contact Form 7, WPForms, Bit Form)
- How to prevent problems
The 5 Most Common Problems
1. Emails Send But Land in Spam
The most common problem. Your form actually works — but emails end up in the recipient's spam filter.
Causes:
- WordPress uses
wp_mail()which sends via the server's PHP mail function - PHP mail has no authentication — spam filters catch it
- The sender domain doesn't match the server's domain
- Missing SPF/DKIM/DMARC records
Solution: Use an SMTP plugin. See the section below.
2. Emails Don't Send At All
The form shows "message sent" but an email never arrives.
Causes:
- Hosting blocks the PHP mail function
- WordPress'
wp_mail()fails without showing an error - Wrong "To" address in form settings
- Firewall or security plugin blocks sending
3. Form Doesn't Submit
The user clicks send, but nothing happens (or the page reloads).
Causes:
- JavaScript error (often plugin conflict)
- Caching plugin serves an old version
- reCAPTCHA error
- Incorrect form configuration
4. Spam Floods Your Inbox
You receive hundreds of spam messages through the form.
Causes:
- No spam protection enabled
- reCAPTCHA is set up incorrectly
- Bots bypass simple honeypot protection
5. Confirmation Email to Customer Fails
The form works, you receive the message, but the customer's confirmation email doesn't arrive.
Step-by-Step Troubleshooting
Check the spam folder
Start simple. Check the spam/junk folder for all recipients. Also check "All Mail" or "Promotions" in Gmail.
Send a test
Fill out the form yourself with an email you have access to. Use a different email address than the recipient.
Check form settings
Verify the "To" address is correct. Check that the "From" address uses your domain (not the customer's email).
Install an SMTP plugin
This solves 80% of all email problems. See detailed guide below.
Check for plugin conflicts
Deactivate other plugins one at a time and test the form after each deactivation. Reactivate when you find the conflict.
Solution: SMTP Plugin (Recommended)
An SMTP plugin changes the way WordPress sends emails. Instead of PHP mail (unreliable), it uses an authenticated email server (reliable).
Recommended SMTP Plugins
FluentSMTP (recommended — free, no restrictions):
- Install via Plugins → Add New
- Complete the setup wizard
- Choose email provider (see below)
- Send a test email to verify
Alternative plugins:
- WP Mail SMTP (popular, free with premium add-ons)
- Post SMTP (free with logging)
Choose an SMTP Provider
| Provider | Free Plan | Best for |
|---|---|---|
| Gmail SMTP | 500 emails/day | Small sites |
| Brevo (formerly Sendinblue) | 300 emails/day | Medium sites |
| SendGrid | 100 emails/day | Transactional emails |
| Mailgun | 5,000 emails/mo (3 mo) | Developers |
| Your host's SMTP | Included | Simple setup |
Set Up DNS Records
For best delivery rates, add these DNS records:
SPF record: Tells recipients that your server is allowed to send emails from your domain.
DKIM record: Digital signature verifying the email hasn't been modified in transit.
DMARC record: Policy for what should happen with emails that fail SPF/DKIM.
Important
DNS changes require access to your domain's DNS settings (typically at your domain registrar). Changes can take up to 48 hours to propagate.
Contact Form 7 Troubleshooting
"Failed to send your message"
- Check that
wp_mail()works (install SMTP plugin) - Verify the "To" field under the Mail tab
- Check that the "From" field uses your domain:
[email protected] - See error log: Add
define('WP_DEBUG', true);inwp-config.php
Form Spins But Doesn't Send
- Check browser console for JavaScript errors (F12)
- Deactivate caching plugin and test
- Make sure jQuery is loaded (CF7 requires it)
- Check that REST API works: Visit
yoursite.com/wp-json/
WPForms Troubleshooting
Emails Not Arriving
- Go to WPForms → Settings → Email
- Enable SMTP via FluentSMTP or WP Mail SMTP
- Check that notification email is correct
- Send test via WPForms → Tools → Send test email
Form Not Displaying
- Check that you're using the correct shortcode
- Clear cache (caching plugin + browser cache)
- Try deactivating page builder and insert shortcode in standard editor
Bit Form Troubleshooting
Bit Form is a modern alternative to Contact Form 7 and WPForms. Most email problems are solved the same way — with an SMTP plugin like FluentSMTP. Here are a few Bit Form-specific tips:
Form Not Displaying
- Check that you're using the correct shortcode or Gutenberg block
- Clear cache in your caching plugin and browser
- Check for JavaScript conflicts with other plugins
Integrations Not Working
- Verify API keys for third-party services
- Check that the webhook URL is correct
- Review the Bit Form log for error messages
Prevention: Best Practices
1. Always Use SMTP
Install an SMTP plugin from day 1. It's the easiest way to ensure reliable email delivery.
2. Set Up Email Logging
Plugins like FluentSMTP or WP Mail Log log all emails. So you can always see whether an email was sent — even if it doesn't arrive.
3. Set Up Notifications to Multiple Recipients
Send form emails to at least 2 email addresses. If one fails, you have a backup.
4. Test Regularly
Add a monthly test of your contact form to your maintenance plan. Send a test message and verify it arrives.
5. Backup Contact Method
Always show an email address and phone number as an alternative to the form. If the form fails, the customer can still contact you.
Checklist: Contact Form Health
- ☐ SMTP plugin installed and configured
- ☐ SPF, DKIM, and DMARC records set up
- ☐ "From" address uses your own domain
- ☐ Test email sent and received
- ☐ Spam protection enabled (reCAPTCHA/honeypot)
- ☐ Email logging enabled
- ☐ Confirmation message shows after submission
- ☐ Form works on mobile
- ☐ Backup contact information visible
Conclusion
A contact form that doesn't work is worse than no contact form — because you think customers can contact you, but they can't. The good news is that 80% of all problems are solved by installing an SMTP plugin.
Start here:
- Install FluentSMTP
- Configure with your email provider
- Send a test email
- Set up DNS records (SPF, DKIM)
- Enable email logging
Need help?
Contact me if your WordPress contact form isn't working. I diagnose the problem and get it running again — typically within 24 hours.




