If your WordPress contact form is not working, the form itself is usually fine. The enquiry is being captured, but the notification email never lands. In most cases the cause is authentication: your website is sending mail from a server that your email provider does not trust, so Google Workspace or Microsoft 365 quietly rejects it. The fix is to send your website mail through an authenticated connection instead.
Here is how to work out which situation you are in, and what to do about it.
First, confirm the form is actually capturing entries
Before touching email settings, install or check a form entries log. Gravity Forms, WPForms, Fluent Forms and Formidable all store submissions in the database. Contact Form 7 does not by default, so add a database add on if you rely on it.
If entries appear in the dashboard but not your inbox, you have a mail delivery problem. If nothing is stored at all, the problem is the form itself: a JavaScript conflict, a broken required field, or a caching plugin serving a stale page.
When your server sending mail is fine
WordPress sends mail through PHP mail() by default. That hands the message to the mail server running on your hosting account.
If your website and your mailboxes live on the same server, at the same host, on the same domain, this generally works without any intervention. The server is a legitimate sender for your domain, your SPF record already includes it, and the message never has to cross an external trust boundary. Plenty of small business sites run this way for years without an issue.
This is the exception, not the norm. Most Australian businesses have moved their email off their web host.
Why Google Workspace and Microsoft 365 reject your server mail
If your mailboxes are on Google Workspace, Microsoft 365 or any external provider, your web server is no longer an authorised sender for your domain.
Your website tries to send an email from enquiries@yourdomain.com.au. Your provider receives a message claiming to be from your own domain, arriving from a server that is not listed in your SPF record and is not signed by your DKIM key. To the receiving system this looks exactly like a spoofing attempt, which is precisely what SPF, DKIM and DMARC exist to stop.
The result is silence. The message is rejected or dropped into quarantine, often with no bounce back to anyone who would notice. Your form appears broken. It is not. Your domain security is working as designed.
Fix one: authenticate to your own mail account
The cleanest solution is to have WordPress log in to your real mail account and send through it, exactly as Outlook or Apple Mail would.
FluentSMTP is free, open source and connects to Google Workspace, Microsoft 365, Amazon SES, SendGrid and most major providers. WP Mail SMTP Pro is the paid alternative, where you are mainly buying commercial support, additional mailer integrations and extended reporting.
One caveat worth stating plainly, this is best handled by your IT team or whoever controls your email accounts.
Fix two: send through a third party relay
The alternative is a dedicated transactional email service. Your website sends through the relay, the relay handles authentication and reputation, and you get delivery logs showing exactly what happened to every message.
Options include Elastic Email, which is extremely cheap for low volume sites, plus Mailgun, SendGrid, Postmark, SparkPost, Amazon SES and Brevo. Postmark has a strong reputation for transactional speed. Elastic Email wins on price.
A relay is the better choice when you send higher volumes, run WooCommerce order confirmations, or want proof of delivery. You will need to add the provider’s SPF and DKIM records to your DNS, which takes minutes but requires access to your domain settings.
Also check these before you call it fixed
- The notification address. Free addresses on Gmail or Hotmail as the recipient are fine. Using one as the sender address is not, and will fail DMARC.
- The from address. It must be on a domain you control. Never set it to the visitor’s email. Put their address in the reply to field instead.
- Spam protection. An over tuned reCAPTCHA, Cloudflare Turnstile or honeypot can silently block genuine submissions. Test in a private browser window.
- Plugin conflicts. Too many overlapping plugins cause exactly this kind of intermittent failure. We have written about how many plugins are too many for WordPress.
- Host restrictions. Some hosts disable PHP mail() entirely. If so, SMTP or a relay is your only path.
How to test properly
Send a test through the plugin’s built in tool, not by filling in your own form. Then check delivery to three different destinations: your own domain, a Gmail address, and an Outlook address. Providers treat senders differently, and a message that reaches one may still fail another.
Once it works, enable email logging. When a client asks in six months whether an enquiry was received, a log answers it in seconds.
Frequently asked questions
The browser is confirming the form submitted, not that the mail was delivered. The failure happens after that confirmation, at the receiving mail server.
No. FluentSMTP is free and covers most business requirements, including email logging and fallback connections. Paid plugins mainly add commercial support and extra integrations.
Yes. Every email WordPress sends routes through the same configuration.
Contact forms that fail silently cost real enquiries, and the loss is invisible until someone asks why you never replied. If yours has gone quiet, get in touch with our Sydney team and we will diagnose it properly, or take a look at our WordPress maintenance plans so it never happens again.
Header photo by Miguel Á. Padriñán
