Website Maintenance · 7 min read

Why is my website contact form not sending emails?

Forms that send with the server's built-in mail often end up in spam or nowhere at all. Here is how to test it, switch to SMTP and set up your domain's email records.

Illustration of a business owner waiting for website enquiry emails while a developer sets up SPF, DKIM and DMARC records

Quick answer

Most website forms send email with the server's built-in PHP mail() function, and Gmail and Outlook often junk or reject those messages. Send form emails through authenticated SMTP or a transactional email service instead. Then add SPF, DKIM and DMARC records for your domain so inboxes can trust the mail.

This guide is for business owners who think they are missing enquiries, or whose domain email has stopped arriving. It is part of our website help centre. The two problems often have the same root: DNS records that do not match how your email is actually sent.

Check these first

  1. Submit your own form with a Gmail or Outlook.com address you control as the reply address. Note the exact time.
  2. Check spam and junk folders in the inbox that should receive enquiries, plus any quarantine area in Microsoft 365 or Google Workspace.
  3. Check where the form sends. In WordPress, open the form plugin's notification settings. The "to" address is often an old staff member or a typo.
  4. Look for stored entries. Many form plugins save each submission in the dashboard. If entries are there but emails are not, the website is fine and the email sending is broken.
  5. Send an email to your domain from a personal Gmail account. If that fails too, the problem is receiving (MX records or mailbox), not the form.

Cause and fix table

What you seeWhat it meansHow to fix itHow long it takes
Form says "Thank you" but no email arrivesThe server handed the email off, but the receiving inbox rejected or junked itSwitch to authenticated SMTP; add SPF and DKIM30 to 90 minutes
Form emails always land in spamThe domain is not authenticated, or the "from" address does not match the sending serviceSend from an address on your own domain via SMTP; add SPF, DKIM and DMARC1 to 2 hours, plus DNS time
Form shows an error when submittedSMTP login wrong, blocked port, or a reCAPTCHA or plugin faultCheck SMTP credentials and port with your host; test with plugins disabled30 to 60 minutes
No email to the domain arrives from anyoneMX records wrong or missing, often after a website or DNS moveRestore the MX records your email provider gives you15 minutes, plus up to 48 hours
Some senders get a bounce saying the mailbox is fullMailbox storage quota reachedArchive or delete mail, or raise the quota15 minutes

Why form emails disappear

WordPress sends email through its wp_mail() function. Out of the box, that hands the message to the server's PHP mail() function. The server says "sent", and your form shows a success message, but nothing checks whether the email arrived.

Since February 2024, Google requires everyone sending to Gmail accounts to authenticate with SPF or DKIM, among other rules. A message sent by a shared web server, claiming to be from your domain but not authorised by it, is exactly what spam filters are built to catch. Microsoft 365 and Outlook apply similar checks.

Setting up SMTP

WordPress

Install one SMTP plugin, such as WP Mail SMTP, FluentSMTP or Post SMTP. Connect it to one of these:

  • Your existing email provider (Microsoft 365 or Google Workspace). Fine for low volumes; use the provider's recommended connection method rather than a plain password where possible.
  • A transactional email service such as Brevo, Postmark, Amazon SES or Mailgun. These are built for website mail, give you delivery logs, and most have a free or low-cost tier for a few hundred emails a month.

Use the plugin's test email, then submit your real form. Set the "from" address to one on your own domain, such as website@example.com.au, and put the customer's address in "reply-to".

Custom PHP sites

On a hand-built PHP site, replace calls to mail() with a library such as PHPMailer configured for SMTP with a username and password. Some hosts block outgoing mail on the standard SMTP ports, so ask your host which port to use. Our own PHP site builds send through authenticated SMTP, with every lead also saved in the site's admin panel.

Shopify, Wix and Squarespace

These platforms send form notifications through their own mail systems. If notifications go missing, check the notification address in the form settings and your spam folder first. Delivery to custom domains still depends on your domain's DNS being correct.

SPF, DKIM and DMARC explained

These are DNS records (usually TXT records) that tell inboxes which servers may send for your domain.

  • SPF lists the services allowed to send as your domain. Your domain should have only one SPF record; two separate records cause SPF to fail. Add each service as another include: inside the same record.
  • DKIM adds a digital signature to each email. Your email provider or sending service generates the key and tells you exactly what record to add.
  • DMARC tells inboxes what to do when SPF and DKIM fail, and sends you reports. Google recommends starting with p=none to monitor, then moving to quarantine or reject once legitimate mail passes.

Example records for a placeholder domain using Google Workspace for staff email and a transactional service for the website. The service's include value and DKIM name come from that service's setup screen:

Type  Host                        Value
TXT   example.com.au              v=spf1 include:_spf.google.com include:[your-sending-service] ~all
TXT   google._domainkey           v=DKIM1; k=rsa; p=[long key from Google Admin]
TXT   [selector]._domainkey       [DKIM value from your sending service]
TXT   _dmarc                      v=DMARC1; p=none; rua=mailto:dmarc@example.com.au
MX    example.com.au              [MX values from your email provider]

Google suggests setting up SPF and DKIM, then waiting at least 48 hours before adding DMARC.

Domain email not receiving

If nobody can email you at your domain, the website form is not the problem. Check these:

  • MX records. They must point to your current email provider. A website move, a nameserver change to Cloudflare, or a new host's default DNS zone often wipes them out.
  • Two systems claiming the same mail. If your website hosting has local email turned on for the domain, the server may deliver form emails to a mailbox on the web server instead of Microsoft 365 or Google Workspace. In cPanel, go to Email, then Email Routing, and choose Remote Mail Exchanger when your email is hosted elsewhere.
  • Mailbox full or licence removed. In Microsoft 365 or Google Workspace, a deleted or unlicensed user stops receiving mail.
  • Domain expired. Email stops at the same time as the website. See is my website down.

Store every lead as a backup

Email should be the notification, not the only copy. Make sure every form submission is also saved on the website: most WordPress form plugins have an entries feature, and custom sites can write to a database. Check the stored entries against your inbox once a week for the first month after any fix. Lead records contain personal information, so keep access limited to staff who need it.

If your form is getting junk submissions as well as missing real ones, see our guide to spam leads from Google Ads.

When to get help

A specialist will read the full email headers of a test message, check SPF, DKIM and DMARC results, compare the DNS zone with your email provider's settings, and set up SMTP with logging. If you think enquiries have been going missing for a while, it is worth fixing this week.

Talk to us about website support

About this guide

Written by Amann Jhamb, Director of AR Digital Solutions, 17 years in web design, SEO and paid ads. Last checked: 3 November 2026 against Google Workspace Admin Help: Email sender guidelines. Change note: first published 3 November 2026. Part of our website help centre.

FAQs

Frequently asked questions

Still wondering about something? Call 07 3067 8910 or 0425 879 379, mon to fri, 8:30am to 5:30pm.

  • Usually because they are sent by the web server without being authorised by your domain's SPF or DKIM records, or the from address is the customer's email rather than your own domain. Send through authenticated SMTP from your own domain and add SPF, DKIM and DMARC.

Ready for a website that brings in work?

Tell us what you need and we'll show you how we'd approach it. No pressure, just a straight answer about what will work for your business.

Last updated on