WPForms or Gravity Forms Not Sending Email? Here's the Fix
A visitor fills out your quote form, sees the green "Thanks, we got it!" message, and then... nothing shows up in your inbox. No error, no bounce, just silence. This is one of the most common tickets we see for WPForms and Gravity Forms sites, and it almost never means the form is broken — it means the notification email never made it past your mail server.
Why this happens
WPForms and Gravity Forms don't send email themselves. When someone submits a form, the plugin hands the message to WordPress's wp_mail() function, which then tries to send it through PHP's built-in mail() command unless you've configured something else. On shared cPanel hosting, that built-in path is unauthenticated and unreliable — receiving mail servers increasingly reject or silently drop anything that arrives without SPF/DKIM authentication behind it. The submission saves fine in your WordPress database (that's why the "success" message shows), but the notification email dies quietly on the way out.
A second, less obvious cause: conditional notifications. Both plugins let you route emails based on field values ("if Department = Sales, send to sales@..."). One typo in that condition, or a field that got renamed after the form was built, and the notification simply never fires for anyone.
Step 1 — Confirm it's a delivery problem, not a form problem
Open WPForms → Entries (or Forms → Entries in Gravity Forms) and check whether the submission actually saved. If it's there, the form itself is working — this is purely an email delivery issue, so skip straight to Step 2.
If the entry isn't there either, the problem is client-side (JavaScript conflict, a plugin blocking AJAX) and the fixes below won't help — that's a different investigation.
Step 2 — Check the notification settings first
Before touching SMTP, rule out a misconfigured notification:
- In WPForms: Settings → Notifications on the form — confirm the "Send To Email Address" field is a real, current address and doesn't still reference a smart tag pointing at an empty field.
- In Gravity Forms: Form Settings → Notifications — open each notification and check the routing rules. A stray "AND" condition that can never be true will silently kill delivery.
- Make sure the notification itself is toggled Active — it's easy to disable one while testing and forget to re-enable it.
If settings look correct, move to the mail server side.
Step 3 — Test PHP mail is actually reaching your inbox
Install a lightweight plugin like Check Email or WP Mail Logging temporarily. Submit a test entry and see whether wp_mail() was called at all, and with what result. If the log shows the email was "sent" by WordPress but it never arrives, the problem is downstream — your server tried to hand it off and the receiving side (or an intermediate spam filter) dropped it.
You can also test from the command line if you have SSH or cPanel Terminal access:
echo "Test body" | mail -s "Test from server" you@yourdomain.com
Then check /var/log/exim_mainlog (on a VPS) or the Track Delivery tool in cPanel to see whether the message was accepted, deferred, or bounced.
Step 4 — Set up authenticated SMTP (the real fix)
This solves the problem for good in the vast majority of cases. Instead of routing through PHP's mail(), send form notifications through an authenticated SMTP connection — either your own cPanel mailbox or a transactional provider.
- Install WP Mail SMTP (free, works with both WPForms and Gravity Forms since it hooks into
wp_mail()globally). - Choose a mailer: your cPanel email account (Other SMTP, port 465/587), or a dedicated service like SendGrid, Mailgun, or Zoho Mail if you're sending a high volume of transactional mail.
- Enter your SMTP host, port, and credentials — for cPanel mail this is usually
mail.yourdomain.comon port 465 (SSL) with your full email address and mailbox password. - Send a test email from the plugin's built-in tester before trusting it with real form traffic.
Once SMTP is authenticated, your form notifications carry proper SPF/DKIM alignment and stop looking like spam to Gmail, Outlook, and corporate mail filters.
Step 5 — Check spam folders and cPanel-side filters
If SMTP is working but mail still isn't landing in the inbox, check:
- The recipient's spam/junk folder — form notifications are a classic spam-filter target because they're automated and often contain URLs.
- cPanel's own Spam Filters (Apache SpamAssassin) — if the notification address is a mailbox on the same server, an aggressive local spam score can quarantine it before it ever reaches the inbox.
- Whether the sending domain has SPF and DKIM records published at all — without them, most providers will flag or reject outright.
Prevention
| Do this | Why it matters |
|---|---|
| Use WP Mail SMTP with an authenticated mailer | Avoids the unauthenticated PHP mail() path entirely |
| Send a test entry after any form edit | Catches broken conditional routing immediately |
| Keep a fallback "admin" notification with no conditions | Guarantees at least one email fires even if routing logic fails |
| Monitor entries, not just your inbox | Confirms whether it's a form issue or a delivery issue |
Once SMTP is authenticated and your notification rules are simple, this stops being a recurring ticket. If you're still stuck after working through these steps, our support team can check your mail queue and SPF/DKIM setup directly — reach out through your Getwebup dashboard.
Frequently asked questions
Why does the form say 'Thanks, your message was sent' if the email never arrives?
That success message only confirms the form entry was saved to your WordPress database — it has nothing to do with whether the notification email was delivered. Those are two separate steps handled by different parts of the system.
Do I need a paid SMTP service, or can I use my regular cPanel email?
Your cPanel mailbox works fine for low-to-moderate form volume. If you're sending hundreds of notifications a day, a transactional service like SendGrid or Mailgun gives you better deliverability tracking and avoids tripping your hosting account's sending limits.
I set up WP Mail SMTP but Gravity Forms notifications still don't use it — why?
WP Mail SMTP hooks into WordPress's core wp_mail() function, and Gravity Forms uses that same function by default. If notifications still bypass it, check whether another plugin (an old SMTP plugin, a security plugin) is also filtering wp_mail() and conflicting with it.
Can spam filters block form emails even after I set up SMTP correctly?
Yes. Authenticated SMTP fixes sender reputation, but the message can still be filtered based on content — lots of links, ALL CAPS subject lines, or spammy trigger words in the form fields. Keep notification subject lines plain and simple.
How do I know if the problem is my form or my recipient's mailbox?
Send the test to two different addresses — one on your own domain and one on Gmail. If it lands in one but not the other, the issue is filtering/reputation on the receiving side, not your form or server configuration.