WordPress Contact Form Not Sending Email? Here Is the Real Fix
A WordPress contact form that submits fine but never delivers email is almost always a wp_mail or SMTP problem, not a plugin bug. This page explains why it happens and shows how to bypass the whole issue by pointing your form at a free hosted VASTROX Forms backend.
Why Your WordPress Contact Form Is Not Sending Email
Most WordPress contact form plugins rely on PHP's mail() function through WordPress's wp_mail() wrapper. Shared hosts often disable this, throttle it, or send it from an address that fails SPF, DKIM, and DMARC checks. The result is a form that shows a success message while the email silently vanishes or lands in spam.
The classic symptoms are a green success message with no email arriving, messages that only reach some inboxes, or delivery that worked yesterday and stopped today after a host change. None of these are fixed by reinstalling the plugin, because the failure is in the mail transport, not the form.
You can chase this with an SMTP plugin and an external mail provider, but that means API keys, DNS records, and another point of failure. Pointing the form at an external backend removes wp_mail from the equation entirely.
The Fast Fix: Point Your Form at a Hosted Backend
Instead of relying on your server to send mail, submit the form directly to VASTROX Forms. It receives the submission, stores it, and emails you the entry from infrastructure built to deliver. Your WordPress server never touches wp_mail, so the SMTP problem cannot occur.
Create a form, copy your endpoint ID, and set it as the form action. This works in a plain HTML block, a page builder custom HTML widget, or a theme template. No plugin, no SMTP configuration, no DNS changes.
<form action="https://forms.vastrox.com/YOUR-ID" method="POST">
<input type="text" name="name" placeholder="Your name" required />
<input type="email" name="email" placeholder="Your email" required />
<textarea name="message" placeholder="Your message" required></textarea>
<button type="submit">Send</button>
</form>Keeping Your Existing Plugin Form
If you want to keep a form you already built, you have two options. Replace the plugin form's markup with the raw HTML form above, or configure the plugin to POST to the VASTROX Forms endpoint if it supports a custom action URL.
Because the submission leaves WordPress the moment the visitor clicks Send, delivery no longer depends on your host's mail setup. You get every message regardless of whether wp_mail is disabled, rate limited, or blocked.
Add AJAX Submission to Avoid Page Reloads
A plain POST reloads the page. If you want the form to submit in place and show a thank-you message, submit it with fetch and keep the visitor on the page. The endpoint accepts standard form-encoded or JSON payloads.
This keeps the developer experience simple while giving you full control over the success and error states in your own theme.
<script>
document.querySelector('form').addEventListener('submit', async (e) => {
e.preventDefault();
const res = await fetch('https://forms.vastrox.com/YOUR-ID', {
method: 'POST',
headers: { 'Accept': 'application/json' },
body: new FormData(e.target)
});
if (res.ok) e.target.innerHTML = '<p>Thanks, your message was sent.</p>';
});
</script>Why This Beats Fighting SMTP
Configuring SMTP means picking a mail provider, generating credentials, adding SPF and DKIM records, and hoping your host does not block outbound connections on port 587. Every one of those steps is a place where delivery can break again later.
With a hosted backend, delivery is handled for you and your form keeps working even if you migrate hosts. If you run your site on VASTROX hosting, your forms and email sit on the same trusted infrastructure, so setup is one copy and paste. VASTROX Forms is free, so you can fix the problem today without touching your mail server at all.
Frequently asked questions
Why does my WordPress contact form say sent but no email arrives?
The form's success message only confirms the form processed the submission, not that mail was delivered. WordPress hands the email to wp_mail, and if your host has disabled or throttled PHP mail, or the sending address fails SPF and DKIM checks, the message is dropped or filtered as spam. Pointing the form at VASTROX Forms removes wp_mail from the flow so delivery no longer depends on your host.
Do I need an SMTP plugin to fix this?
No. An SMTP plugin is one way to fix it, but it requires a mail provider, credentials, and often DNS changes. Submitting your form to a hosted VASTROX Forms endpoint bypasses your server's mail system entirely, so no SMTP configuration is needed.
Will this work with my page builder or theme?
Yes. The VASTROX Forms endpoint accepts a standard HTML form POST, so it works in any custom HTML block, page builder widget, or theme template. Set the form action to your endpoint URL and you are done.
Can I keep the form I already built in my plugin?
You can, as long as the plugin lets you set a custom action URL, or you can replace the plugin markup with the raw HTML form pointing at your VASTROX Forms endpoint. Either way the submission leaves WordPress and delivery stops depending on wp_mail.
Is VASTROX Forms free?
Yes, VASTROX Forms is a free hosted form backend. You create a form, copy your endpoint ID, and set it as your form action with no server changes required.
How do I stop spam submissions?
Add a honeypot field or a simple client-side check in your form, and VASTROX Forms filters common spam patterns on the backend so you receive clean submissions without adding a CAPTCHA.
Add this to your site in minutes
Free plan, no credit card, no server. Point your form at one URL.
Get your free endpoint