The root cause: it's wp_mail, not Elementor
When a visitor hits Send, Elementor validates the fields, records the submission, and then asks WordPress to send the notification email. WordPress routes that through wp_mail(), which by default uses the server's PHP mail() function. That last hop is where notifications die:
- Many shared hosts disable or throttle outbound PHP mail to fight abuse.
- The mail is sent with no SPF/DKIM alignment, from an IP shared with hundreds of other sites — Gmail and Outlook treat it as suspicious by default.
- Failures are silent: no error in Elementor, no bounce, nothing in logs you can see from wp-admin.
This is the same reason Contact Form 7 and other plugins "work but no email arrives" — different plugin, identical plumbing. The deeper deliverability side is covered in why contact form emails go to spam.
Confirm the diagnosis in 2 minutes
- Elementor → Submissions. If the entry is recorded, the form works — only email delivery failed. This is the most common case.
- Send a WordPress test email. Change your own user email notification or use a mail-check plugin to trigger any wp_mail() message. If that also never arrives, it's confirmed: the problem is WordPress-level mail, not your form configuration.
- Check spam/junk folders on the receiving address, including the "From" address domain's mailbox if it differs.
- If nothing is recorded in Submissions, the problem is upstream: open DevTools → Console for JavaScript errors, and purge any caching plugin (WP Rocket, LiteSpeed Cache, Cloudflare) that may be serving a stale page with an expired nonce.
The five fixes, ranked
1. Route mail through a real provider with an SMTP plugin (the standard fix)
Install WP Mail SMTP or FluentSMTP and connect Gmail/Google Workspace, Brevo, Mailgun, or Amazon SES. Now wp_mail() sends through an authenticated account with proper SPF/DKIM, and Elementor notifications start landing in the inbox. Cost: a plugin to maintain plus SMTP credentials to secure.
2. Skip WordPress mail entirely with an external endpoint (the permanent fix)
Point the form at a hosted form endpoint instead of relying on wp_mail. With splitforms, submissions POST to https://splitforms.com/api/submit, every entry is stored in a searchable dashboard (so mail failures can never lose a lead), spam is filtered by an AI classifier plus honeypot, and owner notifications are sent from deliverability-managed infrastructure — SPF, DKIM, and DMARC handled for you. Use Elementor Pro's webhook action, or drop a lightweight HTML form via the HTML widget. Free for 500 submissions/month.
3. Fix the "From" address
Elementor's default From address (wordpress@yourdomain.com) often fails DMARC because the domain's DNS doesn't authorize your host to send for it. Setting a From address on a domain you control — with SPF and DKIM records that actually include your sender — reduces spam-foldering. Necessary, but rarely sufficient on shared hosting.
4. Rule out caching and plugin conflicts
If submissions aren't recorded at all: exclude the page from your caching plugin, update Elementor and Elementor Pro (the AJAX submit handler changes between versions), and test with other form plugins disabled. Security plugins that block REST/AJAX requests (some Wordfence configurations) can also silently drop submissions.
5. Move off shared-host mail at the DNS level
For high-value lead forms, some teams configure their domain's MX/SPF so all site mail flows through a transactional provider (SES, Mailgun) via SMTP — same as fix 1, but enforced for the whole site. It's the most setup work and the most control.
Make "email failed" mean "nothing lost"
The uncomfortable truth about email-only form notifications: email is a delivery channel, not a database. Any form stack that keeps the only copy of a submission inside an email will lose leads — to spam folders, throttled hosts, full mailboxes, and expired SMTP passwords. Whatever fix you choose, make sure submissions are also stored somewhere queryable: Elementor's Submissions panel, a spreadsheet via webhook, or a form backend dashboard. Then a bad mail day costs you nothing.
FAQ
Why is my Elementor form not sending email notifications?
In most cases Elementor works fine and the failure is one layer down: Elementor hands the message to WordPress's wp_mail() function, which hands it to your host's PHP mail. Many shared hosts block, throttle, or poorly sign that mail, so notifications land in spam or vanish silently. The submission itself is usually recorded — check Elementor → Submissions to confirm the entry exists.
How do I check if Elementor actually recorded the submission?
Go to your WordPress dashboard → Elementor → Submissions. If the entry is there, the form worked and only the email leg failed — a delivery problem, not a form problem. If nothing is recorded, look for JavaScript errors on the page, a caching plugin serving a stale version of the page, or a conflicting plugin breaking the AJAX submit.
Will an SMTP plugin fix Elementor form emails?
Usually, yes. Plugins like WP Mail SMTP or FluentSMTP route wp_mail() through a real mail provider (Gmail/Google Workspace, Brevo, Mailgun, Amazon SES) with proper SPF/DKIM authentication instead of the host's unauthenticated PHP mail. This fixes most WordPress form email issues, including Elementor, Contact Form 7, and WPForms — but you now own SMTP credentials and deliverability settings.
Can I use Elementor forms without any email plugin at all?
Yes. Skip wp_mail entirely: point the form at an external form endpoint. Elementor Pro supports webhook actions, or you can post from a small HTML widget to an endpoint URL. The endpoint service owns deliverability (SPF/DKIM/DMARC handled), stores every submission in a searchable dashboard, and emails you instantly — so a WordPress mail failure can never lose a lead again.
Why do Elementor form emails go to spam?
Because they're sent from your web server's generic mail with no SPF/DKIM alignment, often from an IP shared with other sites. Mailbox providers treat unauthenticated, shared-IP mail as suspicious by default. Sending through an authenticated provider (SMTP plugin) or a form backend with dedicated sending infrastructure fixes placement.
Does this also fix Contact Form 7 and WPForms email issues?
Yes — the root cause is identical. Every WordPress form plugin funnels notifications through wp_mail(), so the same SMTP or external-endpoint fix applies across Elementor, CF7, WPForms, Fluent Forms, and Gravity Forms.
Stop depending on wp_mail — point your form at https://splitforms.com/api/submit and every lead is stored, filtered, and emailed. Get a free access key.
Related: spam-free WordPress contact forms, best WordPress contact form plugins, WordPress contact form without a plugin, and the splitforms WordPress plugin.