A WordPress contact form can appear to work correctly while important messages never reach your inbox. Visitors fill out the form, click Submit, and see a success message, but no email arrives. In other cases, the form displays an error, sends notifications inconsistently, or delivers messages to spam instead of the inbox.
These problems can affect contact forms, quote requests, booking inquiries, registration forms, lead generation forms, and WooCommerce-related notifications.
The cause is not always the form plugin. WordPress email delivery depends on the form’s notification settings, the site’s mail configuration, the hosting environment, the recipient’s email server, and the authentication of outgoing messages.
This guide explains how to diagnose and fix WordPress contact form email problems without unnecessarily replacing your form plugin or changing your entire website configuration.
Why WordPress Contact Form Emails Stop Working
Before changing anything, identify what happens when someone submits the form.
There are several different situations:
- The form submits successfully, but no notification arrives.
- The form displays an error after submission.
- The visitor sees a success message, but the email never reaches the recipient.
- Emails arrive at some addresses but not others.
- Messages arrive in spam or junk folders.
- Notifications work intermittently.
- The form sends emails, but the submitted information is missing.
- The form works on one page but not another.
- Emails stopped arriving after a plugin, hosting, or DNS change.
These symptoms point to different causes.
For example, if the form displays a success message but no email arrives, investigate email notifications and delivery first. If the form itself fails to submit, investigate validation, JavaScript, AJAX requests, spam protection, and plugin conflicts.
WordPress uses its wp_mail() function to send many types of site emails. However, a successful return from this function does not guarantee that the recipient’s email server accepted or delivered the message.
That distinction is important because a form can submit correctly even when email delivery fails.
1. Confirm Whether the Form Submission Actually Works
Start by testing the form from the frontend of your website.
Open the page in a private browser window and submit a test message using an email address you can access.
Check the following:
- Does the form accept the submitted information?
- Does it display a success message?
- Does the page reload or remain in place?
- Does an error appear?
- Does the submission appear in the form plugin’s entries or logs, if available?
- Does the browser console show errors?
If the form stores submissions successfully but does not send an email notification, the form itself may be functioning correctly. The problem could be in the notification settings or email delivery process.
If the submission is not recorded and the form reports an error, troubleshoot the submission process before focusing on SMTP.
For forms built with Elementor, Contact Form 7, WPForms, Gravity Forms, or another plugin, the exact troubleshooting options will differ. Start with the plugin responsible for the form rather than installing additional plugins immediately.
2. Check the Contact Form Notification Settings
Incorrect notification settings are one of the first things to investigate.
Open the form editor and locate its email notification settings.
Check these fields:
- Recipient email address
- Sender email address
- Sender name
- Reply-To address
- Email subject
- Message body
- Notification status
- Conditional notification rules
Make sure the recipient address is correct and does not contain spelling mistakes, spaces, or an outdated email address.
For example, a notification configured to send to sales@example.com will not arrive at contact@example.com unless the recipient configuration or forwarding rules make that happen.
Also check whether notifications are enabled. Some form plugins allow multiple notifications, and one may have been disabled or configured incorrectly.
Check conditional notifications
Advanced forms may send different notifications depending on the submitted values.
For example, a quote form might send messages to different departments depending on the selected service.
If conditional rules are configured incorrectly, the form may submit successfully without triggering the notification you expect.
Test each relevant form path and verify which notification should be triggered.
Check the message body
Make sure the email template contains the correct form fields.
If a notification uses a field identifier that no longer exists, the email may arrive with missing information or an incomplete message.
Changing a form field name or identifier can affect notification templates, depending on the plugin.
3. Configure SMTP for WordPress Email Delivery
If the form settings are correct, the next step is to investigate how WordPress sends email.
Many WordPress installations rely on the default PHP mail mechanism unless another mailer has been configured. Depending on the hosting environment, this method may be restricted, unreliable, or poorly authenticated for the domain.
A message can also be accepted by the sending system but rejected or filtered by the recipient’s email provider.
SMTP or a supported transactional email service provides a more controlled way to send messages through an authenticated mail server or email delivery provider.
A typical setup involves:
- Installing a reputable SMTP plugin.
- Selecting an email provider or supported mailer.
- Connecting the account or entering the required SMTP credentials.
- Configuring the sender address.
- Completing any required domain verification.
- Sending a test email.
- Submitting the contact form again.
A plugin such as WP Mail SMTP can connect WordPress to supported mailers and provides a test email tool. Follow the setup instructions for your chosen provider rather than copying SMTP credentials from an unrelated configuration.
Official guide: Sending a Test Email with WP Mail SMTP.
SMTP does not automatically fix every form problem
If the test email works but the contact form still fails, the SMTP connection may be functioning correctly.
In that case, investigate the form’s notification settings, sender headers, spam protection, plugin-specific errors, and submission logs.
SMTP addresses the email transport layer. It does not necessarily fix a form that fails validation or never triggers its notification.
For a more detailed setup guide, see How to Set Up Free SMTP Email Delivery in WordPress.
4. Fix an Incorrect From Email Address
The sender address can affect whether an email is accepted and delivered.
A common mistake is using the visitor’s email address as the sender’s From address.
For example, a visitor submits a form using visitor@gmail.com, and the form tries to send the notification with that address as the sender.
Your website does not control the Gmail domain. Sending a message from your server while claiming to be Gmail can create authentication and spoofing problems.
Instead, use a sender address belonging to your own domain, such as:
website@example.com
Then configure the visitor’s submitted address as the Reply-To address.
This allows you to reply directly to the visitor while keeping the sender identity consistent with your website’s email configuration.
The exact field names vary between form plugins.
Example configuration
From Name: Example Website
From Email: website@example.com
Reply-To: The visitor’s email field
Replace these example addresses with addresses appropriate for your own domain and email provider.
If you use an SMTP plugin, make sure the From Email settings are consistent with the selected mailer and its requirements.
5. Check SPF, DKIM, and DMARC Records
If messages are sent but fail to reach recipients, email authentication is another important area to investigate.
Three DNS-related mechanisms are particularly relevant:
- SPF identifies the servers authorized to send email for a domain.
- DKIM adds a cryptographic signature that receiving systems can verify.
- DMARC allows a domain owner to specify how receivers should handle messages that fail authentication checks and provides reporting options.
Incorrect or incomplete authentication can contribute to delivery failures or spam filtering.
However, these records must match your actual email provider. There is no single SPF or DKIM configuration that works for every WordPress website.
How to check email authentication
First, identify the service sending your website’s messages.
It could be your hosting provider, Google Workspace, Microsoft 365, or a transactional email service.
Then:
- Open the provider’s domain authentication settings.
- Check which DNS records it requires.
- Compare those records with your domain’s current DNS configuration.
- Correct missing or incorrect records according to the provider’s instructions.
- Allow time for DNS changes to propagate.
- Send another test email.
Do not add multiple SPF records for the same domain. If several services send email for your domain, their authorized sending sources generally need to be combined into a single valid SPF record.
Also avoid copying DKIM records or DMARC policies from another website.
If your domain uses Cloudflare or another DNS provider, make sure the changes are made in the DNS zone that actually controls the domain.
6. Check the Spam and Junk Folders
Before making server changes, check the recipient’s spam or junk folder.
This is especially important if:
- The form displays a success message.
- SMTP tests appear successful.
- Messages arrive at some email providers but not others.
- The problem began after changing the sender address.
- The domain is new or has limited sending history.
Search for the website’s sender address and the contact form’s subject line.
If you find the message, inspect the email headers if necessary. They may contain clues about authentication failures, filtering, or the sending server.
Marking a message as not spam may help train an individual mailbox, but it does not fix a broader domain authentication problem.
If messages consistently go to spam, investigate sender reputation, SPF, DKIM, DMARC, message content, and the provider’s delivery logs.
7. Check Whether the Hosting Provider Restricts Outgoing Email
Some hosting environments restrict PHP mail or outgoing connections to certain SMTP ports.
These restrictions may be introduced for security, abuse prevention, or resource management.
If WordPress cannot send messages through the configured mailer, contact your hosting provider and ask:
- Is outgoing email enabled for this hosting account?
- Is PHP mail restricted?
- Are outgoing SMTP connections permitted?
- Are there limits on the number of emails sent?
- Are any messages being blocked by server security rules?
- Are there mail server logs showing rejected messages?
If you use an external email service, make sure your hosting environment allows the required connection method.
Do not assume that changing the SMTP port will solve the issue. The correct port and encryption settings depend on your mail provider.
8. Use Email Logs to Find the Failure
If the website sends important inquiries, email logging can help you investigate delivery problems.
Depending on your SMTP plugin or form plugin, logs may show:
- Whether a message was generated
- The recipient address
- The subject
- The time of sending
- Whether the sending request failed
- The mailer’s response
- Error details
Logging capabilities vary by plugin and may require a particular edition or additional configuration.
Use the logs to determine whether the form generated a notification and whether the mailer reported a failure.
A successful send operation does not necessarily prove that the recipient received the message. If the mailer reports success but the email is missing, check the provider’s delivery logs, spam filtering, and recipient-side rejection information.
Keep email logs secure
Contact forms often contain names, email addresses, phone numbers, and other personal information.
Do not leave detailed logs accessible publicly. Restrict administrative access and configure log retention appropriately. Avoid recording more personal information than you need to troubleshoot the problem.
9. Test Whether WordPress Can Send Emails Outside the Contact Form
A useful diagnostic step is to send an email using your SMTP plugin’s test tool.
Send the test message to an inbox you control.
There are two main outcomes.
The test email fails
Focus on the mail configuration, credentials, provider connection, DNS authentication, server restrictions, or the error reported by the mailer.
Do not spend time changing contact form notification templates until the general email sending problem is understood.
The test email succeeds
This confirms that the configured mailer can send at least one test message under the tested conditions. It does not guarantee that every contact form notification will work.
If contact form emails still fail, investigate:
- The form’s recipient and sender settings
- Notification conditions
- Reply-To configuration
- Form submission errors
- Spam protection
- Plugin-specific errors
- Differences between the test email and the form notification
- Delivery logs for the actual message
This comparison helps separate a general mail transport problem from a form-specific problem.
10. Troubleshoot Elementor Contact Form Email Problems
If your form is built with Elementor Pro, start by editing the page and opening the Form widget.
Review the Actions After Submit settings and confirm that the Email action is included.
Then inspect the email action settings.
Check the recipient, subject, sender email, sender name, Reply-To field, and message content.
Make sure the recipient is not empty and that the sender address follows your email provider’s requirements.
If the form submits successfully but no email arrives, send a test email through your SMTP plugin.
If the test email works, review Elementor’s form notification configuration and any available logs.
If the form does not submit at all, inspect the browser Console and Network tabs for JavaScript errors or failed requests. Also check whether spam protection or another plugin is blocking the submission.
For problems affecting the Elementor editor itself, see How to Fix Elementor Stuck on Loading: Complete Troubleshooting Guide.
11. Troubleshoot Contact Form 7 Email Problems
Contact Form 7 has its own mail configuration and submission feedback.
Open the form in the WordPress dashboard and review the Mail settings.
Check:
- To
- From
- Subject
- Additional Headers
- Message Body
Make sure the mail tags used in the configuration correspond to the actual fields in the form.
For example, if the form contains a field named your-email, the corresponding mail tag should match that field’s identifier.
If you configure the sender as the visitor’s email address, change it to an address on your own domain and use the visitor’s address in Reply-To.
Also pay attention to the form’s submission response. A spam-related response is different from a mail delivery failure. If a spam filter blocks the submission, changing SMTP settings alone will not solve it.
For plugin-specific guidance, consult the official Contact Form 7 documentation.
12. Troubleshoot WPForms and Other Form Plugins
Other form plugins have their own notification settings and troubleshooting tools.
In WPForms, check the form’s notification settings and verify the recipient, sender, subject, and message fields.
For Gravity Forms, review the relevant notification configuration and any conditional logic.
For forms built with other plugins, look for equivalent notification and logging settings.
If the plugin stores entries, check whether a test submission appears in the entries list.
If an entry is stored but no notification is delivered, the issue may be limited to the notification or email delivery process.
If no entry is stored, investigate validation, submission processing, spam protection, JavaScript, and AJAX requests.
Do not assume that every form plugin behaves identically or that the same fix will resolve every form issue.
13. Check Whether Spam Protection Is Blocking Submissions
Contact forms often use reCAPTCHA, hCaptcha, honeypot fields, or other anti-spam mechanisms.
If the spam protection fails, the form may reject a submission or mark it as spam before sending an email.
This can happen because of:
- Incorrect API keys
- A domain mismatch in the CAPTCHA configuration
- JavaScript errors
- Expired or invalid tokens
- Conflicts with another anti-spam plugin
- Overly aggressive filtering
- Changes to the form plugin
Review the form’s response and logs to determine whether the submission was rejected.
If you suspect a conflict, test in a staging environment or temporarily disable the suspected feature for a controlled test.
Do not permanently remove spam protection from a public form without an alternative. That can lead to increased spam submissions and abuse.
14. Check JavaScript and AJAX Errors
Some contact forms submit asynchronously without reloading the page.
If the JavaScript responsible for the submission fails, the form may display an error or never complete the request.
Open the page containing the form, then open your browser’s Developer Tools.
Check the Console for JavaScript errors.
Next, open the Network tab and submit the form again.
Look for failed requests or responses that indicate:
- A 400 error
- A 403 error
- A 404 error
- A 500 error
- A blocked request
- A failed CAPTCHA response
- A request that never completes
A 403 response may indicate a permission or security rule issue. A 500 response may point to a PHP error. A failed request alone does not identify the exact cause, so compare the response with the form plugin’s logs and the server logs.
If the problem started after enabling JavaScript optimization, temporarily disable features such as script delay or combination and test again.
Restore the settings that are not responsible for the problem.
15. Check Plugin and Theme Conflicts
A plugin conflict can prevent a form from submitting, interfere with notification handling, or alter the email configuration.
Common candidates include:
- Form addons
- SMTP plugins
- Security plugins
- CAPTCHA plugins
- Caching and optimization plugins
- Plugins that modify email headers
- Custom code snippets
If the problem began after installing or updating a plugin, test that component first.
Otherwise, use a controlled conflict test on a staging website. Temporarily disable non-essential plugins and test the form. If the problem disappears, reactivate plugins one at a time until the issue returns.
You can also test with a default WordPress theme if theme-level JavaScript or custom code may be involved.
Do not deactivate important security or ecommerce functionality on a live website without a plan. If staging is unavailable, perform controlled tests during a suitable maintenance window and restore the original configuration afterward.
For a broader diagnostic process, see How to Diagnose and Resolve WordPress Plugin and Theme Conflicts.
16. Check Whether Emails Fail Only for Certain Recipients
If contact form messages reach one email address but not another, compare the recipient configurations.
Test with more than one mailbox that you control, ideally using different email providers.
For example, if a message reaches a business-domain inbox but not a Gmail inbox, investigate recipient-side filtering and delivery responses rather than assuming the form is broken.
Check:
- Spam and junk folders
- Mailbox filters
- Forwarding rules
- Quarantine settings
- Mailbox storage limits
- Blocked sender lists
- Provider delivery logs
If the sending service provides a delivery status, determine whether the message was delivered, deferred, bounced, or rejected.
A bounce or rejection message can contain the most useful clue.
17. Check Email Routing and Forwarding
Sometimes the contact form sends to an address that forwards messages to another mailbox.
For example:
contact@example.com forwards to a personal email account.
If the forwarding configuration is broken or the receiving provider rejects forwarded messages, it may appear that WordPress is not sending the email.
Check the original recipient’s mailbox, forwarding configuration, and any available mail server logs.
If the domain uses a separate email hosting provider, verify that its MX records and email routing configuration are correct.
Do not change MX records casually. They control where incoming mail for a domain is directed and can disrupt normal business email if configured incorrectly.
18. Check Recent Changes to the Website
If the form worked previously, identify what changed immediately before the problem began.
Possible causes include:
- A form plugin update
- An SMTP plugin update
- A WordPress update
- A hosting migration
- A domain change
- An SSL configuration change
- A change to DNS records
- A new security rule
- A new CAPTCHA integration
- A modified notification template
- A change to the sender address
Review the relevant settings and logs before rolling back plugins or changing server configuration.
If you need to test a previous plugin version, do so on staging whenever possible. Rolling back multiple components at once makes it harder to identify the actual cause.
19. Use WordPress Debugging When the Cause Is Unclear
If email logs and form settings do not reveal the problem, WordPress debugging can help identify PHP errors.
On a staging site, or during a controlled troubleshooting session, enable logging in wp-config.php:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Place these definitions before the line that says WordPress has finished loading its configuration.
If the constants are already defined, edit their existing values instead of adding duplicates.
Reproduce the problem and inspect:
/wp-content/debug.log
Look for errors associated with the form plugin, SMTP plugin, theme, or custom code.
Do not assume that every warning in the log is responsible for the email problem. Focus on errors that occur when submitting the form or sending the notification.
Debug logs may contain sensitive information. Restrict access to them and disable debugging when testing is complete.
For more details, see How to Fix WordPress Changes Not Showing: Cache, CSS & Browser Issues if the issue also involves cached frontend behavior, or consult the relevant form plugin’s troubleshooting documentation.
20. Common Mistakes That Make Email Problems Harder to Fix
Replacing the form plugin immediately
If the real problem is SMTP, DNS, or server restrictions, switching form plugins may not change anything.
Using the visitor’s address as the sender
This can create sender authentication problems. Use your own domain’s authorized sender address and put the visitor’s email in Reply-To.
Assuming a success message guarantees delivery
The form may have processed the submission without confirming that the recipient received the email.
Installing multiple SMTP plugins
Multiple mail-handling plugins can create confusing or conflicting configurations. Use one clearly configured mailer setup unless you have a specific reason for a more complex arrangement.
Changing DNS records without checking the provider’s instructions
Incorrect SPF, DKIM, DMARC, or MX records can create additional email problems.
Disabling spam protection permanently
This may allow unwanted submissions without solving the original issue.
Changing too many settings at once
Make one change at a time and test the same form again. Otherwise, you may fix the issue without understanding the cause or introduce new problems.
21. A Practical Troubleshooting Checklist
Use this checklist to work through the problem in a consistent order.
- Submit a test entry and confirm whether the form itself works.
- Check whether the submission is stored in the form plugin.
- Verify the recipient address and notification settings.
- Check the From Email and Reply-To fields.
- Send a test email through the configured mailer.
- Review SMTP errors and email logs.
- Check spam and junk folders.
- Verify SPF, DKIM, and DMARC where applicable.
- Confirm that the hosting provider permits outgoing email.
- Check CAPTCHA and spam protection responses.
- Inspect browser Console and Network errors if the form does not submit.
- Test plugin conflicts if necessary.
- Check recipient-side filters and email routing.
- Review recent plugin, DNS, hosting, and configuration changes.
- Inspect WordPress and server logs if the cause remains unclear.
Conclusion
When WordPress contact form emails stop arriving, the most effective approach is to separate form submission problems from email delivery problems.
If the form submits successfully but no notification arrives, start with the notification settings, sender address, SMTP configuration, email logs, and authentication records.
If the form itself fails, investigate validation, spam protection, JavaScript, AJAX, and plugin conflicts before changing the mail configuration.
If test emails work but form notifications do not, focus on the specific form plugin and its notification settings. If messages are sent but disappear, investigate the recipient’s email provider, spam filtering, and delivery logs.
Following this process helps you identify the actual cause without unnecessarily rebuilding the form or changing unrelated parts of your WordPress website.
For a broader look at email configuration and reliable delivery, read the WP Flow Mastery guide to free SMTP email delivery in WordPress.
Learn More About WordPress
The WP Flow Mastery WordPress eBook covers practical WordPress development, performance optimization, SEO, security, WooCommerce, and website maintenance.
Get the WP Flow Mastery WordPress eBook
Written by Nemanja Stosic
WordPress Developer & Website Optimization Specialist
Nemanja has worked on more than 200 websites and focuses on WordPress development, performance optimization, SEO, security, WooCommerce, and practical website improvements.