Website Email Problems
Contact Form Emails Not Received
Last reviewed
Direct answer
When a contact form says “sent” but the inbox stays empty, the message usually never left PHP mail, landed in spam, or failed SPF/DKIM—prove delivery with a mail log, switch forms to authenticated SMTP, and fix notification addresses before reinstalling form plugins.
Contact-form delivery is a special case of WordPress mail: lead notifications, Reply-To headers, and spam filtering matter as much as transport. This guide focuses on form plugins (CF7, WPForms, Gravity, Elementor, and similar), not WooCommerce order mail or password resets—those share wp_mail but have different settings screens. Use it alongside the general WordPress emails guide when the whole site cannot send.
What the error means
Most form plugins call WordPress wp_mail() after a successful submit. The on-screen success state often means “accepted by the plugin,” not “accepted by Gmail.” Messages then travel through PHP mail() or an SMTP/API plugin. Failures cluster in three places: transport (host blocks mail), authentication/DNS (SPF/DKIM reject the From domain), and form configuration (wrong To address, empty conditional recipients, or notifications disabled). Spam folders and corporate filters can hide mail that technically delivered. Unlike generic transactional troubleshooting, form cases also include plugin conflicts, honeypot/CAPTCHA blocking submits, and “save to entries but do not email” modes.
Common symptoms
- Form shows a success message but no email arrives in inbox or spam
- Entries or form logs save submissions while notification mail is missing
- Mail arrives to a personal Gmail address but not to a Microsoft 365 inbox (or the reverse)
- SMTP or mail-log plugins record failures timed to form submits
- Only one form or one notification route fails; password resets still work (or the opposite)
- Messages appear hours later or only after someone visits the site (cron delay)
- Autoresponder to the visitor works but the admin notification does not (or the reverse)
Most likely causes
- 01 Host blocks or throttles unauthenticated PHP mail used by the form plugin
- 02 No SMTP/API plugin configured; From address not aligned with the domain
- 03 Missing, duplicate, or incomplete SPF/DKIM for the sending identity
- 04 Form notification To, CC, or Reply-To misconfigured or conditional logic empty
- 05 Messages delivered but filtered to spam or quarantine
- 06 Security, CAPTCHA, or conflict plugins stopping submit or outbound SMTP
- 07 Multiple form or SMTP plugins fighting over phpmailer_init
What changed before the problem started
- New contact form plugin, theme form widget, or notification template
- Site migrated to a host that disallows PHP mail
- DNS/SPF edited when adding Google Workspace, Microsoft 365, or a marketing tool
- SMTP credentials rotated or mailbox deleted
- Spam/CAPTCHA or firewall plugin installed or tightened
- From address changed to a free Gmail/Yahoo address the server cannot authorize
Troubleshooting steps
- 01
Separate “form accepted” from “mail delivered”
Submit a test with a mail-logging or SMTP plugin active. If the log shows a transport error, fix SMTP first. If the log shows success, check spam/quarantine and SPF/DKIM next—do not delete and rebuild the form yet.
- 02
Audit the form’s notification settings
Open the form’s email/notification panel: confirm To addresses, enable flags, Reply-To (usually the submitter’s email field), and that conditional routing is not sending to a blank field. Send one test to an inbox you control.
- 03
Send through authenticated SMTP or a transactional API
Configure a reputable SMTP/API plugin with TLS (often port 587) or the provider’s HTTPS API. Use a From address on your domain such as forms@yourdomain.com. This is the same transport fix as general WordPress mail, applied so form plugins inherit a working sender.
- 04
Check spam, quarantine, and admin aliases
Search spam and provider quarantine for the From domain and subject line. Ask whether info@ or contact@ is a shared alias with aggressive filtering. Have a second person with a different email provider test the same form.
- 05
Repair SPF and DKIM for the sending domain
Keep a single SPF TXT that includes every real sender, and publish DKIM records from your SMTP/mailbox provider. Competing SPF records break deliverability for form notifications as surely as for password resets.
- 06
Rule out CAPTCHA and security plugin interference
Temporarily disable CAPTCHA/honeypot or firewall rules that block form endpoints or outbound SMTP. If mail starts flowing, re-enable protections one at a time and allowlist the mail provider instead of leaving the site unprotected.
When to stop troubleshooting
Escalate when SMTP authenticates and DNS looks correct but form mail still vanishes at major providers, the host blocks outbound mail with no API alternative, or lead capture is down during a campaign. Hand off mail-log errors, the form notification screenshot (secrets redacted), and current SPF text.
Information to collect before requesting help
- 01 Form plugin name and whether entries are saved on submit
- 02 Exact notification To/From/Reply-To settings (secrets redacted)
- 03 SMTP or mail-log result for a test submit
- 04 Whether password-reset or other WordPress mail works
- 05 Spam/quarantine check results for two different inbox providers
- 06 Current SPF TXT and DKIM status for the From domain
- 07 Hosting company and recent DNS or migration changes
How a professional repairs the problem
We prove whether the form handoff, SMTP transport, or recipient filtering failed. Then we correct notification settings, wire a single authenticated sender, align SPF/DKIM, and retest admin alerts and visitor autoresponders end-to-end—without confusing this with WooCommerce transactional templates unless those also fail.
Frequently asked questions
How is this different from “WordPress emails not sending”? +
Why does the form say success if I get nothing? +
Should I switch from Contact Form 7 to another plugin to fix mail? +
Can SPF problems affect only contact forms? +
Is it safe to collect passwords in a contact form? +
Do I need a different SMTP setup just for forms? +
Repair dispatch
Still Need Help Fixing Your Website?
If you are not comfortable editing website files, changing server settings, repairing a database, or troubleshooting a live website, professional help may prevent additional damage or downtime. We will review the problem before accepting the repair.
- You will receive a clear explanation of the likely cause.
- We will tell you if the issue falls outside our repair scope.
- No additional work will be performed without approval.
- A backup should be created whenever access and website condition allow it.
Do not share passwords through an unencrypted contact form.