If visitors say they've submitted your contact form but you never receive the email, the form is probably working fine. The problem is usually how the message is sent, not whether it was sent. Most website contact forms use a basic mail function built into your hosting server, and that function sends messages in a way spam filters don't fully trust unless a few things are configured correctly.
Why This Happens
When someone submits your form, the script on your website sends an email that looks like it's "from" your domain, but it wasn't sent the way your domain's real email accounts send mail. Spam filters check whether a message's sending method matches what your domain has authorized. If it doesn't match, or if the sending address is set to the visitor's own email address instead of yours, the message gets flagged or silently dropped.
1. Use an Address on Your Own Domain as the Sender
Check your contact form's settings or code for a From or Sender field. It should send as an address on your own domain, such as info@yourdomain.com, not the visitor's personal email address. Sending "from" a visitor's personal email account while the message actually originates on your server is one of the most common reasons these emails get blocked.
- Set the From address to an email account that exists on your domain.
- Set the Reply-To address to the visitor's email instead, so you can still reply to them directly.
2. Set Up SPF and DKIM for Your Domain
SPF and DKIM records tell other mail servers which sources are allowed to send email on behalf of your domain. Without them, any message claiming to be from your domain, including contact form submissions, looks unverified to the receiving server.
If you haven't already set these up, follow the steps in How to Set Up SPF and DKIM Records to Stop Your Emails Going to Spam.
3. Send Through an Authenticated Email Account Instead of the Server's Default Mail Function
The most reliable fix is to send the contact form's email through SMTP, using the username and password of a real email account on your domain, rather than the server's built-in mail function. This is often called "SMTP authentication."
- Create or choose an email account on your domain to send from, such as noreply@yourdomain.com.
- In your contact form's settings, look for an option to send via SMTP rather than the default method.
- Enter your mail server's hostname, the email account's username and password, and the correct port, usually 587 for encrypted SMTP.
- Save the settings and send a test message to confirm it arrives.
If you're not comfortable editing the form's code or settings yourself, ask whoever built or maintains your website to switch it to SMTP sending. It's usually a one-time change.
4. Check the Form's Existing Settings Before Rebuilding Anything
Many form plugins and scripts already include a built-in SMTP option. Before assuming the form is broken or needs replacing, check its settings panel for existing mail configuration first. The fix is often just filling in the correct details rather than starting over.
5. Test and Confirm Delivery
After making changes, submit the form yourself using a personal email address and check whether the message lands in your inbox or your spam folder. If it still goes to spam, double check that the sending address matches your domain exactly and that your SPF and DKIM records are set up correctly.