Your WordPress contact form is collecting submissions, but the emails never arrive. You check spam folders, verify addresses, wait another day—still nothing. This is one of the most frustrating WordPress issues because everything appears to work correctly while silently failing behind the scenes.
The problem affects virtually every WordPress form plugin—Contact Form 7, WPForms, Gravity Forms, Formidable Forms—because they all rely on the same underlying email system. Understanding why WordPress emails fail and how to fix them permanently will save you hours of troubleshooting and ensure you never miss another lead.
Why WordPress Contact Form Emails Fail
WordPress sends emails using the PHP mail() function through wp_mail(). While this works in theory, it fails in practice for several reasons:
- Hosting restrictions: Most web hosts block or severely limit the PHP mail function to prevent spam abuse from compromised sites.
- No authentication: Emails sent via PHP mail lack proper authentication, making them appear suspicious to receiving mail servers.
- Missing DNS records: Without SPF, DKIM, and DMARC records, email providers like Gmail and Outlook flag your messages as potential spam or reject them outright.
- Shared server reputation: On shared hosting, your emails inherit the reputation of every other site on that server—including spammers.
The PHP mail function was designed for simple server notifications, not reliable business communication. Every major email provider has tightened security requirements, particularly Google and Yahoo in 2024-2025, making unauthenticated WordPress emails increasingly likely to fail.
Step 1: Confirm Whether Emails Are Actually Sending
Before troubleshooting, determine whether the problem is sending or receiving:
- Install the Check & Log Email plugin from the WordPress repository
- Navigate to Tools > Check & Log Email in your dashboard
- Send a test email to your address
- Check your inbox and spam folder
If the test email arrives but form submissions don’t, the issue is in your form plugin configuration—check notification settings, recipient addresses, and conditional logic rules.
If the test email doesn’t arrive anywhere, your WordPress site has an email delivery problem. Continue with the steps below.
Step 2: Configure SMTP (The Permanent Fix)
SMTP (Simple Mail Transfer Protocol) routes your WordPress emails through a proper mail server with authentication—the same way your email client sends messages. This is the only reliable solution for WordPress email delivery.
Install WP Mail SMTP
WP Mail SMTP is the most popular solution with over 4 million active installations:
- Go to Plugins > Add New and search for “WP Mail SMTP”
- Install and activate the plugin by WPForms
- The setup wizard launches automatically after activation
Choose Your SMTP Service
WP Mail SMTP supports several email services. Your choice depends on sending volume and budget:
| Service | Free Tier | Best For |
|---|---|---|
| Brevo (Sendinblue) | 300 emails/day | Small sites, easy setup |
| SendGrid | 100 emails/day | Developers, high volume |
| Gmail SMTP | 500 emails/day | Already using Google Workspace |
| SMTP.com | No free tier | Maximum deliverability |
For most WordPress sites, Brevo offers the best balance of generous free limits and simple configuration. Create a free account, generate an API key, and enter it in WP Mail SMTP.
Configure the Basics
Regardless of which service you choose, configure these essential settings:
- From Email: Use an address at your domain ([email protected]), never a free email like Gmail
- From Name: Your business name or website name
- Return Path: Enable this to match the From Email (improves deliverability)
Step 3: Set Up Email Authentication DNS Records
Email authentication proves to receiving servers that your emails legitimately come from your domain. Without these records, even properly configured SMTP emails may land in spam.
SPF Record
SPF (Sender Policy Framework) specifies which servers can send email on behalf of your domain. Add this as a TXT record in your DNS:
Host: @ (or leave blank)
Value: v=spf1 include:your-smtp-provider ~all
Replace your-smtp-provider with your service’s SPF include (Brevo: sendinblue.com, SendGrid: sendgrid.net).
Important: You can only have one SPF record per domain. If you already have one, merge the include statements rather than creating a second record.
DKIM Record
DKIM (DomainKeys Identified Mail) adds a cryptographic signature to your emails. Your SMTP provider generates a unique DKIM key—copy the entire value they provide into a TXT or CNAME record.
DMARC Record
DMARC tells receiving servers what to do with emails that fail SPF or DKIM checks. Start with a monitoring-only policy:
Host: _dmarc
Value: v=DMARC1; p=none; rua=mailto:[email protected]
This sends you reports about authentication failures without rejecting any emails. After confirming everything works, you can strengthen the policy to p=quarantine or p=reject.
Step 4: Test and Verify
After configuring SMTP and DNS records:
- Return to WP Mail SMTP and send another test email
- Check that it arrives in your inbox (not spam)
- Submit a test entry through your actual contact form
- Verify all notification emails arrive correctly
Use a tool like MXToolbox to verify your SPF, DKIM, and DMARC records are correctly configured. Search for your domain and review any warnings.
Common Issues and Quick Fixes
Emails arrive but go to spam
This usually indicates missing or misconfigured authentication records. Verify SPF, DKIM, and DMARC are all properly set up and propagated (can take 24-48 hours).
Form notifications suddenly stopped working
Check if a recent plugin update changed settings. Also verify your SMTP service hasn’t exceeded its sending limits or expired credentials.
Some recipients get emails, others don’t
Corporate email servers often have stricter filtering. Ensure all authentication records are in place and consider using a premium SMTP service with better reputation.
WooCommerce order emails not sending
WooCommerce uses the same email system as contact forms. SMTP configuration applies to all WordPress emails, including order confirmations, shipping notifications, and password resets. If you’re running an online store, see our WooCommerce Payment Gateways guide for more configuration tips.
Preventing Future Email Problems
Once your email system is properly configured:
- Enable email logging in WP Mail SMTP to track all outgoing messages and catch failures early
- Set up a backup mailer (WP Mail SMTP Pro feature) to automatically switch services if your primary provider fails
- Monitor your sending reputation through your SMTP provider’s dashboard
- Keep plugins updated to avoid compatibility issues with WordPress core email functions
WordPress email delivery doesn’t have to be unreliable. With proper SMTP configuration and email authentication, your contact form submissions, WooCommerce orders, and user notifications will reach their destinations consistently.
For more advanced form optimization strategies, check out our guide on WordPress form abandonment recovery to ensure you’re capturing every lead that starts filling out your forms.

