Contact Form Not Working: Complete Troubleshooting Guide
A Broken Contact Form Is a Silent Revenue Killer
Visitors try to reach you, fail, and go to a competitor. Most businesses discover the problem only after a client mentions it — or after weeks of zero inquiries.
Identify the Symptom First
- Form submits without error but no email arrives?
- Form shows an error message on submit?
- Clicking submit does nothing at all?
- Form submits but thank-you page never loads?
8 Common Causes and Fixes
1. Emails Going to Spam
Cause: PHP mail() sends without authentication, triggering spam filters.
Fix: Switch to SMTP + PHPMailer. Send FROM your domain email ([email protected]).
WordPress: Install WP Mail SMTP, configure with Gmail, SendGrid, or Brevo.
2. Missing SPF / DKIM Records
Cause: Domain lacks email authentication DNS records.
Fix: Add SPF: v=spf1 include:yourhostingprovider.com ~all and DKIM from your email provider.
3. JavaScript Error
Fix: Open Chrome DevTools (F12) → Console tab. Fix any red errors. Common culprits: missing jQuery, plugin conflicts.
4. CSRF Token Expired
Fix: Regenerate token on each page load: $_SESSION["csrf"] = bin2hex(random_bytes(32));
5. Over-Strict Validation
Fix: Test with simple input first. If it works, your regex is blocking valid inputs.
6. Hosting Blocking Outbound Email
Fix: Use external SMTP — Brevo (300 free emails/day) or SendGrid (100/day free).
7. Wrong Form Action URL
Fix: Inspect the form HTML: <form action="/send-message.php">. Verify the script exists on the server.
8. File Upload Exceeds Limits
Fix: Add to .htaccess: php_value upload_max_filesize 10M
Verify Your Fix
- Check inbox AND spam folder after submitting
- Use Mail-tester.com to score email deliverability
- Use MXToolbox to verify SPF/DKIM records
Still broken? Contact me — I fix contact forms as part of my maintenance service.