A contact form that stops sending email can quietly cost you leads, support requests, and trust. This practical guide gives you a reusable troubleshooting checklist for WordPress sites, with clear steps to isolate whether the problem is the form itself, WordPress mail delivery, SMTP setup, spam filtering, DNS authentication, or a plugin or server conflict. The goal is not just to fix one incident, but to give you a process you can return to whenever hosting, plugins, domains, or email settings change.
Overview
When a website contact form is not sending emails, the visible symptom is simple: messages do not arrive. The cause usually is not. In WordPress, form delivery depends on several layers working together:
- The form plugin must validate and submit data correctly.
- WordPress must hand off the message through a mail function or SMTP plugin.
- Your server or SMTP provider must accept and relay the message.
- DNS records such as SPF, DKIM, and sometimes DMARC must support that sending method.
- The receiving mailbox must not filter, quarantine, or reject the message.
That is why random trial and error rarely works for long. A better approach is to test one layer at a time.
Start with this rule: do not assume the form is broken just because the email is missing. In many cases, the form submission succeeds, but delivery fails later because of mail authentication or filtering. In other cases, the email sends, but replies fail because the wrong address is used in the From or Reply-To fields.
If your site recently changed hosts, switched DNS providers, enabled a security plugin, installed a caching or optimization tool, or moved to HTTPS, revisit those changes first. Infrastructure changes often expose weak email setups. If you need a safe environment for testing plugin or theme conflicts, it is worth creating a staging copy first using How to Create a Staging Site for WordPress and Test Changes Safely.
Use the checklist below in order. It is designed to help you narrow the problem quickly without skipping important basics.
Checklist by scenario
This section gives you a step by step guide based on what you are seeing. Pick the scenario that matches your issue most closely.
Scenario 1: The form appears to submit, but no email arrives
- Send a fresh test submission. Use a real email address and a unique subject line with a timestamp so you can identify the exact test.
- Check the spam, junk, quarantine, and promotions folders. Also check any filtering rules in the destination mailbox.
- Confirm whether the form stores entries in WordPress. Some form plugins keep a submission log or entry database. If the entry exists, the form likely worked and the failure is in email delivery.
- Check the notification settings in the form plugin. Verify the destination email address, subject, sender name, and message template. A typo in the admin email is more common than most people expect.
- Inspect the
Fromemail address. It should usually use an address on your domain, such asnoreply@yourdomain.comorforms@yourdomain.com, not the visitor's address. - Use
Reply-Tofor the visitor's email. Many mail systems distrust messages that claim to be from your domain while actually originating from arbitrary visitor input. - Send a test email from a WordPress SMTP plugin or mail test tool. If the test email also fails, the issue is broader than the contact form.
- Check whether your site is using default PHP mail instead of SMTP. On many hosts, PHP mail is less reliable or more likely to be filtered. Switching to authenticated SMTP is often the most stable fix.
Scenario 2: WordPress form not working after a plugin update or theme change
- Open the browser console and submit the form. Look for JavaScript errors, blocked requests, or validation failures.
- Temporarily switch to a default theme. If the form works there, your theme or a customization may be interfering with scripts or markup.
- Disable recently added or updated plugins one by one. Security, caching, optimization, firewall, anti-spam, and page builder plugins are common conflict sources.
- Clear all caches. Purge plugin cache, server cache, CDN cache, and browser cache. A stale script can break form behavior even after a fix is applied.
- Check whether form assets are loading. Some optimization plugins defer, combine, or minify JavaScript in ways that break AJAX submissions.
- Retest with only essential plugins active. If the form works in a reduced setup, re-enable tools one at a time until the failure returns.
If your site has other symptoms after an update, such as broken routes or missing pages, related WordPress issues may need attention too. See How to Fix the WordPress 404 Error: Permalinks, .htaccess, and Server Checks for adjacent troubleshooting.
Scenario 3: SMTP setup for contact form is incomplete or failing
- Choose a single sending path. Decide whether your site will send mail through your web host, your domain mailbox provider, or a dedicated transactional mail service. Avoid overlapping partial setups.
- Verify the SMTP host, port, encryption method, and username. A single mismatch can cause silent failure or timeouts.
- Use the full mailbox address as the username if required. Some providers do not accept a shortened account name.
- Re-enter the password or app password. Credentials often break after mailbox password changes or account security updates.
- Check whether SMTP authentication is enabled. If your provider requires auth, leaving it disabled will stop delivery.
- Run the SMTP plugin's email test. Note the exact error message. Authentication errors, connection refusals, and TLS mismatches point to different fixes.
- Review firewall or hosting restrictions. Some hosts block outbound SMTP ports or limit external mail relays.
- Confirm the sending address is permitted by the mail provider. Some services only allow verified sender addresses or domains.
Scenario 4: Emails send, but they land in spam or fail authentication
- Check SPF. Your domain should authorize the system that actually sends your site's email. If you changed providers, SPF may still point to the old service.
- Check DKIM. If your mail provider offers DKIM signing, add the required DNS records exactly as provided.
- Review DMARC if you use it. A strict DMARC policy can expose misaligned sending setups. Make sure the visible sender domain aligns with the authenticated domain.
- Make the
Fromaddress consistent. Use one domain-based sender rather than switching addresses between forms or plugins. - Avoid suspicious content patterns. Excessive links, vague subjects, all-caps text, or empty plain-text alternatives can increase spam risk.
- Send test messages to more than one mailbox provider. If one provider accepts the message and another filters it, the issue may be reputation or formatting rather than outright delivery failure.
DNS mistakes often surface after a domain move or hosting migration. If your site changed infrastructure recently, review your broader setup alongside this guide. Helpful references include How to Migrate a WordPress Site to a New Host Without Downtime and How to Choose Web Hosting for a Small Website: Shared, VPS, Cloud, and Managed Options.
Scenario 5: The form never submits or shows an error to visitors
- Test on desktop and mobile. Device-specific script issues can make the problem look inconsistent.
- Check required fields and validation rules. A hidden required field, malformed regex rule, or broken consent checkbox can stop submission.
- Verify nonce, CAPTCHA, or anti-spam integrations. Expired keys, blocked scripts, or domain mismatches can break the form.
- Inspect network requests in developer tools. Look for 403, 404, 429, or 500 errors when the form submits.
- Check security plugins and web application firewalls. They may block AJAX endpoints, REST API requests, or form actions as suspicious traffic.
- Review HTTPS and mixed content issues. If scripts or assets load over HTTP on an HTTPS page, form behavior can break. See How to Fix Mixed Content Errors After Enabling HTTPS if this applies.
What to double-check
Once you have narrowed down the likely cause, use this shorter audit list before declaring the issue solved. These are the details that often get missed.
- Admin address and notification recipients: Make sure they are current, correctly spelled, and monitored.
- From vs Reply-To behavior: The sender should usually be your domain mailbox; the visitor's address belongs in Reply-To.
- Form entry logging: Keep a record of submissions where possible so you can distinguish form failure from email failure.
- Mail test after every change: Retest immediately after editing SMTP credentials, DNS records, plugin settings, or security rules.
- DNS propagation timing: Authentication records may not appear instantly everywhere after changes. If you updated SPF or DKIM, retest after propagation time has passed.
- One SMTP plugin only: Multiple mail-routing plugins can conflict or overwrite each other's settings.
- Server error logs and plugin logs: Check them when the failure is inconsistent or intermittent.
- Mailbox capacity: A full inbox or storage quota issue can make it look like the website failed.
- CAPTCHA domain settings: If you changed domains, subdomains, or environments, CAPTCHA keys may no longer match.
- Staging versus production settings: Make sure the live site, not just staging, has correct mail configuration.
It also helps to document your working setup once the problem is fixed: plugin used, sender address, SMTP host, DNS records involved, and test date. That small record saves time the next time hosting, DNS, or email tools change.
Common mistakes
Most recurring contact form email problems come from a handful of avoidable patterns. If your fix does not hold, check whether one of these is still present.
- Using the visitor's email as the From address. This is a common reason messages fail authentication or get flagged by spam systems.
- Relying on default PHP mail when SMTP is available. Basic mail functions may work inconsistently across hosts.
- Changing DNS without reviewing email authentication. Site migrations and DNS moves often break SPF or DKIM quietly.
- Testing only the front end. A form can look fine visually while mail routing is still broken.
- Ignoring plugin conflicts. Performance and security plugins can interrupt form submission, scripts, or email dispatch.
- Not checking logs. Error messages usually point to authentication, connection, or permission issues faster than guessing does.
- Assuming one successful test means the problem is fully solved. Test with multiple addresses, different content, and a real reply workflow.
- Forgetting to clear cache after making changes. Old JavaScript or settings can linger.
- Leaving notifications pointed to an old mailbox after a staff or workflow change. The form may be working; it is just sending to the wrong person.
- Making production changes without a rollback plan. For busy sites, test safely and document what changed.
If your WordPress site has broader instability alongside form issues, such as blank screens or plugin failures, work through those platform problems first. A useful companion resource is WordPress White Screen of Death Fix Guide: Causes, Recovery Steps, and Prevention.
When to revisit
This topic is worth revisiting whenever the inputs change, because contact form email depends on services outside the form itself. Use this practical review schedule:
- After changing web hosts or server settings.
- After moving DNS to a new provider.
- After switching email platforms or mailbox providers.
- After changing your domain, subdomain, or HTTPS setup.
- After major WordPress, theme, or plugin updates.
- Before seasonal campaigns or busy lead-generation periods.
- When internal workflows change, such as routing messages to a new support inbox.
A good maintenance habit is to submit a real test through the live form once per month and after any infrastructure change. Confirm four things: the form submits, the entry is stored if logging is enabled, the notification arrives, and replying to the message reaches the original sender correctly.
For teams that manage multiple site settings together, pair this check with broader WordPress maintenance tasks such as performance review and crawl health. Related guides on helps.website include How to Speed Up a WordPress Site: Performance Checklist You Can Reuse, XML Sitemap Guide: How to Create, Submit, and Troubleshoot Site Maps, and robots.txt Guide for Beginners: What to Allow, Block, and Test.
Action checklist to save for later:
- Send a live test submission.
- Confirm the form stores the entry.
- Check recipient, From, and Reply-To settings.
- Run an SMTP email test.
- Review SPF, DKIM, and DMARC alignment.
- Check spam folders and mailbox rules.
- Disable conflicting plugins if needed and retest.
- Document the final working setup.
If you keep that checklist handy, you can usually fix a website form email issue faster and with less guesswork the next time it appears.