A WordPress contact form can look perfectly healthy, show a successful submission message and still fail to deliver the enquiry to your inbox. That makes form failures unusually dangerous for lead-generation websites: the site appears online while potential customers quietly disappear.
First find out whether the form failed or the email failed.
Check whether the submission was stored in WordPress. If it exists, the form probably worked and the problem is email delivery. If no submission exists, troubleshoot the form, JavaScript, spam protection or server request itself.
Why “form sent successfully” does not prove the email arrived
Most WordPress forms have two separate stages: the website accepts the submission, then WordPress or an external mail service sends the notification. Either stage can fail.
The form worked; investigate mail delivery.
Check the form action, scripts, spam protection and server response.
Authentication, sender reputation or content may be involved.
Compare recipients, actions and page-specific settings.
1. Send a real test enquiry
Use a different email address from the one receiving the notification. Complete the form exactly as a customer would, note the time, and check the inbox, spam folder and any WordPress submissions area.
Do not simply press the form button while logged in as an administrator and assume the customer journey is identical.
2. Check whether WordPress recorded the submission
Elementor Pro can store form submissions. Other form plugins have similar logging or database features. If the submission is stored correctly, the failure is likely between WordPress and the mailbox rather than inside the visible form.
Elementor’s official form email troubleshooting guidance notes that it uses WordPress’ mail functions and recommends testing SMTP or another mail service when default sending fails.
3. Check the From address
A common mistake is using the visitor’s email address as the From address. Many mail systems distrust that because your website is not authorised to send as Gmail, Outlook or another third-party domain. Use an address on your own domain as the sender and put the visitor’s address in Reply-To.
4. Check SPF, DKIM and DMARC
Email authentication records help receiving servers decide whether mail claiming to come from your domain is legitimate. Incorrect or missing records can contribute to spam filtering or rejection, particularly when mail is sent through a third-party service.
Do not paste DNS records from a random tutorial. The values must match the mail provider you actually use.
5. Test SMTP or a transactional mail service
PHP mail from shared hosting can be unreliable or restricted. A properly configured SMTP or transactional mail service gives you clearer authentication and often better delivery logs.
The goal is not simply to install an SMTP plugin. You need to know which service is sending, whether it is authenticated, and whether the receiving server accepted or rejected the message.
Did the browser submit it?
Was it stored?
Was a message generated?
Was it accepted or filtered?
6. Check spam protection and caching
reCAPTCHA, anti-spam plugins, CDN rules and aggressive caching can all affect form requests. If the form stopped after a plugin, security or cache change, use that timing as evidence.
7. Test confirmation emails separately
Some forms send one email to the business and another to the customer. One can succeed while the other fails. Test both actions and confirm the correct email fields are mapped.
If your website depends on enquiries, form testing should be routine maintenance, not something you do only after a customer phones to say you never replied.
What to do if enquiries are being lost now
Use our emergency website fixes service if a live form is failing. For regular form checks, updates and monitoring, see our website maintenance and support service.
Our broader website troubleshooting guide covers related hosting, DNS and WordPress faults.
Trace the enquiry through four separate stages
A contact form can show a success message while the notification still fails later. The most reliable diagnosis is to follow one test enquiry from the browser to the form plugin, through WordPress mail, and finally into the recipient mailbox. That separates a broken form from a mail-delivery problem.
Did the live form accept and record the enquiry?
Are recipient, From, Reply-To and field mappings correct?
Did WordPress hand the message to a working mail route?
Did the receiving server accept it, quarantine it or reject authentication?
Elementor’s current guidance confirms that its forms use WordPress wp_mail(), and recommends checking the sender address, submissions, SMTP or another dedicated mail route, plugin/theme conflicts and server logs. A useful rule is to send from an address on your own domain and put the visitor’s address in Reply-To, rather than impersonating the visitor in the From field.
SPF, DKIM and DMARC matter after the form itself works
If the submission is recorded but emails are rejected or land in spam, inspect your sending domain. SPF identifies permitted sending services, DKIM signs the message, and DMARC tells receiving servers how to handle messages that fail alignment. These records do not repair a broken submit button, but they are important once the problem has been narrowed to deliverability.
What people usually mean by “WordPress contact form not sending emails”
Searchers are often dealing with one of four different failures: the form does not submit, the submission is stored but no notification arrives, only Gmail/Outlook misses the message, or customer confirmations fail while admin notifications still work. Treating all four as an SMTP problem can waste time.
Check deliverability, not just sending
If WordPress generated the message, verify whether the receiving provider accepted it. SMTP logs, transactional-mail logs or hosting mail logs are far stronger evidence than repeatedly changing the form plugin.
SPF, DKIM and DMARC matter
For mail sent from your own domain, authentication should match the service actually sending the message. A common high-intent problem is a form using the visitor’s Gmail address as the From address; that creates an alignment problem because your server is not authorised to send as Gmail. Use a domain-based From address and the visitor address as Reply-To.
Check Gmail, Outlook and Yahoo separately
If delivery fails only to one provider, inspect authentication, reputation, spam placement and rejection logs before replacing the form. Provider-specific filtering is different from a form-processing failure.
Check reCAPTCHA, consent tools and cached form requests
Anti-spam, cookie consent and optimisation tools can block or delay AJAX requests. If the failure began immediately after one of those changes, reproduce the problem with the browser Network panel open.
Competitor gap: follow one enquiry end to end
A complete diagnosis traces the lead from browser submission → WordPress storage → mail generation → authenticated sender → receiving server → inbox or spam folder. That process also protects the article from overlapping with our separate guide on routine form testing, which focuses on prevention rather than repairing an active mail-delivery fault.
FAQ
Why does the form say sent but no email arrives?
The submission and notification are separate stages. The form may have stored the enquiry while the email was rejected, filtered or never sent.
Do I need SMTP for WordPress forms?
Not every site requires it, but authenticated SMTP or a transactional mail service can make delivery more reliable and easier to diagnose than basic server mail.
How often should I test my contact form?
For a lead-generation website, regular real-world tests are sensible, especially after plugin, hosting, DNS or email changes.
