Fix contact form emails that don't arrive

  • email
  • forms
  • gravity-forms
  • spf
  • dkim
  • dmarc
  • deliverability

Updated

When contact form emails stop arriving, the form usually worked: the message was sent but then filtered as spam or rejected, because it didn't prove it came from your domain. The fix is to send form emails from an address on your own domain, through a mail service that's set up for it, with SPF, DKIM, and DMARC records in your domain's DNS. Gmail, Yahoo, and Outlook all check these now.

First, check the form actually sent something

  1. Look in your spam or junk folder, and search your inbox for the form's subject line.
  2. Check that the form saved the submission. In Gravity Forms, go to Forms, hover over the form, and click Entries. If the entry is there, the form worked and the problem is email delivery.
  3. Check the notification is turned on and sent to the right address. In Gravity Forms, open the form and go to Settings → Notifications.

If there's no entry at all, the problem is the form or the page, not email. See Build a contact form with Gravity Forms.

Why website emails go missing

Your website sends mail from its web server. Unless you set it up, that server isn't on the list of servers allowed to send mail for your domain. When the email says it's from info@yourbusiness.com but comes from an unlisted server, it looks exactly like a forgery, so inboxes filter it.

Three DNS records fix that:

Record What it says
SPF Which servers and services may send mail for your domain.
DKIM A signature on each message that proves your domain sent it and nobody changed it on the way.
DMARC What inboxes should do with mail that fails SPF and DKIM, and where to send reports about it.

What Gmail, Yahoo, and Outlook require

Since February 2024, Gmail and Yahoo require everyone who sends to their users to set up SPF or DKIM, and to keep spam complaints under 0.3%. Senders of about 5,000 or more messages a day to them must have all three records, with the From address's domain matching the SPF or DKIM domain, a DMARC policy of at least p=none, and one-click unsubscribe on marketing mail. In May 2025, Microsoft began requiring SPF, DKIM, and DMARC from high-volume senders to Outlook.com, Hotmail, and Live addresses, sending mail that fails to the Junk folder.

A small business's form emails are far below 5,000 a day, but inboxes treat authenticated mail better at any volume. Set up all three.

Sources: Gmail email sender guidelines, Yahoo sender best practices, Outlook requirements for high-volume senders.

Fix it

  1. Send from your own domain. In each form notification, set the From Email to an address on your domain, such as website@yourbusiness.com. Never use the visitor's address as the From address: their domain didn't authorize your server, so the message fails DMARC.
  2. Reply to the visitor. Set Reply To to the form's Email field, so clicking Reply in your inbox still writes to the person who filled in the form.
  3. Send through a mail service. Install an SMTP plugin and connect it to a service that sends mail for your domain: your email provider's sending service (Google Workspace or Microsoft 365) or a transactional email service such as SendGrid, Mailgun, Postmark, or Amazon SES. Follow the service's own setup steps.
  4. Add SPF and DKIM. The service gives you the records to add at your DNS host (often your domain registrar). A domain can have only one SPF record: add the new service to the existing record rather than creating a second one.
  5. Add DMARC. Create a TXT record named _dmarc with a policy of p=none and an address for reports, for example v=DMARC1; p=none; rua=mailto:dmarc@yourbusiness.com. Once the reports show your real mail passing, you can tighten the policy to quarantine or reject.

DNS changes can take a few hours to take effect.

Test it

  1. Submit the form yourself, using an address at Gmail or another big provider.
  2. In Gmail, open the message, click ⋮ → Show original, and check that SPF, DKIM, and DMARC all say PASS.
  3. Test again after any change to your domain's DNS or email provider.

If your site runs on Dirigible

  • Send test email, in Dirigible → Tools & Maintenance, sends a real email and shows how your site sends mail (through the server or an email service) and the From address it uses. If sending fails, it shows the error. See Forms and email tools.
  • The Forms → Settings check tool on the same screen flags broken notifications, such as one sent to a field that no longer exists, and lists each form's From addresses.
  • Dirigible's built-in spam checks keep junk submissions out of your inbox in the first place. See Stop Gravity Forms spam.

If you don't manage your domain's DNS, or your domain already sends mail through several services, have whoever looks after your domain or website make these changes: a wrong SPF or DMARC record can stop all email from your domain, not just form emails.