Free Diagnostic Tool

Free Diagnostic Tool

Why Isn't My Contact Form 7 Sending Emails?

Why Isn't My Contact Form 7 Sending Emails?

Answer a few simple questions and we'll tell you exactly what's wrong and how to fix it.

Answer a few simple questions and we'll tell you exactly what's wrong and how to fix it.

Step 1 of 6
Step 1 of 6

First — what happens when someone submits the form?

Go to your website, fill in the contact form, and press submit. Watch the coloured message that appears below the button.

Want to read through the fixes instead?

Start with #1 below — it solves the problem for most sites.

How This Guide Works

We've created a unique tool to help you troubleshoot and fix issues with Contact Form 7, so we highly recommend using the tool immediately above.

However, if you prefer to read through the most common issues, see below.

We've ordered these fixes by how often they solve the problem.

Start at #1. If that doesn't fix it, move to #2, and so on. Most people don't need to go past #3.

Fix #1: Install an SMTP Plugin (solves it for ~70% of sites)

WordPress's built-in email system is unreliable. Most hosting providers don't configure it properly, so emails silently vanish. Replacing it takes about 15 minutes.

Steps:

  1. Install the free WP Mail SMTP plugin (Plugins → Add New → search "WP Mail SMTP")

  2. Sign up for a free email delivery service — Brevo (300 emails/day free) or Mailgun (1,000/month free) are the easiest

  3. In WP Mail SMTP settings, enter the host, port, username, and password from your email service

  4. Click "Send Test Email" — if it arrives, you're done

If the test email works but CF7 still isn't delivering, move to Fix #2.

Fix #2: Fix the "From" Address in CF7's Mail Tab


This is the #1 configuration mistake. If your From field contains [your-email] or a Gmail/Yahoo address, most email providers will silently delete your form emails.

Steps:

  1. Go to Contact → Contact Forms → Edit your form → Mail tab

  2. Change the From field to: Your Site Name <forms@yourdomain.com> (must be your own domain)

  3. In the Additional Headers box, add: Reply-To: [your-email] — this lets you still reply directly to the visitor

  4. Save and test

Fix #3: Check CF7's Configuration Warnings

CF7 has a built-in error checker that highlights exactly what's wrong — but many people don't notice it.

Steps:

  1. Go to Contact → Contact Forms in WordPress admin

  2. Look for a red or yellow warning banner at the top — if you see one, click to validate

  3. Open your form → Mail tab → look for red-highlighted fields

What the common warnings mean and how to fix them:

  • "Invalid mailbox syntax" — your email format is wrong. Use you@domain.com or Name <you@domain.com> with angle brackets

  • "Sender email does not belong to the site domain" — change the From address to an email on your own domain

  • "Possible empty field" — you're using a form tag in the Subject line but the field isn't required. Either make it required or use a fixed subject

  • Message body is blank — paste your form tags back in: [your-name], [your-email], [your-message]


Fix #4: Orange Message? It's a Spam Filter Problem, Not Email

If the form shows an orange message, it's rejecting submissions as spam — the email system is never even involved.

Steps:

  1. Go to Contact → Integration

  2. If you see reCAPTCHA v3 keys, remove them — v3 silently blocks real people far too often

  3. Set up reCAPTCHA v2 (the "I'm not a robot" checkbox) or Cloudflare Turnstile instead

  4. If you use Akismet, CleanTalk, or Antispam Bee, temporarily deactivate each and test


Fix #5: Form Hangs or Spinner Never Stops? It's a REST API Block

If the form hangs when you submit and eventually fails, something is blocking the form from reaching your server.

Steps:

  1. Test the connection: visit yoursite.com/wp-json/contact-form-7/v1/contact-forms in your browser — if you get an error, the REST API is blocked

  2. Deactivate security plugins one at a time (Wordfence, Sucuri, iThemes Security) and test after each

  3. If you use a caching plugin, exclude /wp-json/ from the cache

  4. If you use Cloudflare, add a firewall rule to allow /wp-json/*

  5. Press F12 in your browser → Console tab → submit the form — red errors point to a JS conflict


Fix #6: Emails Landing in Spam? Set Up Domain Authentication

If your emails arrive but land in spam, your domain is missing authentication records.

Steps:

  1. Add an SPF record to your domain's DNS (your email service provides the exact value)

  2. Add a DKIM record (also provided by your email service)

  3. Add a DMARC record: v=DMARC1; p=none;

  4. Test your score at mail-tester.com — aim for 9/10 or higher

Your email delivery service (Brevo, Mailgun, etc.) will walk you through each of these during setup.



Fix #7: SMTP Test Works, No CF7 Warnings, But Emails Still Vanish

This is the trickiest scenario. Everything looks fine but emails silently disappear. Check these five hidden causes in order:

1. "Force From Email" is turned off

Your SMTP plugin has a "Force From Email" setting. If it's off, CF7 sends with its own From address, which may not match what your SMTP provider expects. The test email works because it uses the correct address.

Fix: Turn on "Force From Email" in your SMTP plugin settings.

2. Same-domain routing issue

If you're sending to an email on your own domain (like hello@yourdomain.com) but your email is hosted by Google Workspace or Microsoft 365, your web server may deliver locally instead of routing externally.

Fix: Ask your host to set email routing to "Remote" (in cPanel: Email Routing).

3. Plugin interference

Another plugin is secretly intercepting WordPress's email function.

Fix: Deactivate all plugins except CF7 and your SMTP plugin. Test. Reactivate one by one to find the culprit.

4. WP-Cron queue stuck

Some SMTP plugins queue emails instead of sending immediately. If WP-Cron is broken, emails sit in the queue forever.

Fix: Check your SMTP plugin for a "Pending" or "Queue" section. Check wp-config.php for DISABLE_WP_CRON — if it's true, you need a real server cron job.

5. Recipient's server is blocking it

Everything's fine on your end, but the recipient's email server (especially corporate or university systems) silently filters the message.

Fix: Ask the recipient to check quarantine/junk filters and whitelist your domain. Test by sending to a different email address.

Safety Net: Never Lose a Submission

Install the free Flamingo plugin. It saves every CF7 submission to your WordPress database — so even if email delivery fails, you still have the data.

Go to Plugins → Add New → search "Flamingo" → install and activate. Submissions appear under Flamingo → Inbound Messages.

Stop Finding Out Too Late

Every fix on this page works - once you know there's a problem. But most broken forms don't announce themselves. The form still looks fine. Visitors still see a success message. You just stop receiving emails and don't realise for days or weeks.

Form Doctor monitors your contact forms around the clock and alerts you the moment something breaks - before you lose leads.


Start Monitoring for Free →


FAQ

Why is my Contact Form 7 not sending emails? Most likely your web server's email function isn't configured properly. Install WP Mail SMTP and connect it to Brevo or Mailgun (both free). This fixes it for the majority of sites.

CF7 shows a green success message but no email arrives. What's wrong? The form submitted successfully but the email failed silently. Install an SMTP plugin, check your spam folder, and make sure the From address in CF7's Mail tab uses your own domain — not [your-email] or a Gmail address.

What does the orange border message mean? Your submission was rejected as spam, usually by reCAPTCHA v3. Switch to reCAPTCHA v2 or Cloudflare Turnstile.

What should the "From" field look like in CF7's Mail tab? Your Site Name <forms@yourdomain.com> — always use your own domain. Put Reply-To: [your-email] in Additional Headers if you want to reply to the visitor.

My SMTP test works but CF7 emails don't arrive. Why? Turn on "Force From Email" in your SMTP plugin so it overrides CF7's From address with your verified sender. Also check if you're sending to your own domain with external email hosting — ask your host to set routing to "Remote."

How do I stop CF7 emails going to spam? Add SPF, DKIM, and DMARC DNS records to your domain. Your email service will guide you through this. Test at mail-tester.com — aim for 9/10 or higher.

Can I save CF7 submissions without email? Yes. Install the free Flamingo plugin. It saves every submission to your WordPress database as a backup.

How often should I test my forms? After every plugin update, theme change, or hosting migration. Or use Form Doctor to test automatically on a schedule.

Experience peace of mind with Form Doctor

Integrates seamlessly with any website.

Experience peace of mind with Form Doctor

Integrates seamlessly with any website.