Problem: email

Your contact form is not sending emails. Customers wrote to you. You never found out.

A contact form that is not sending emails is worse than no form at all: the customer thinks they reached you, you think nobody is asking. And nobody notices until someone asks why you never replied.

Signs your messages are going missing

  • The form says “Message sent”, but nothing arrives in your inbox.
  • You find customer messages in your spam folder, sometimes weeks later.
  • A customer calls, annoyed that they wrote to you and got no answer.
  • The automatic confirmation to the customer lands in their spam, or never arrives.
  • You can’t remember when you last tested the form.

Why the messages get lost

The site sends with PHP mail(), not SMTP

Many websites, especially on WordPress, send email straight from the server with PHP’s mail() function, without logging in to a real mailbox. Nothing proves the message comes from your domain, so Gmail or Outlook put it in spam or reject it. Some hosts limit or disable this function entirely.

The sender address is wrong

Many forms use the visitor’s address as the sender. Your server then sends a message “from” a @gmail.com or @yahoo.com address, which it has no right to send for. Receiving servers can see that and treat the message as suspicious.

SPF, DKIM and DMARC are missing

These are three records in your domain’s DNS. SPF lists which servers may send for your domain, DKIM signs each message, and DMARC says what to do with messages that fail the check. Since 2024, Gmail and Yahoo require senders to authenticate their mail, and unauthenticated messages are more and more often sent to spam or rejected.

Nobody tested the form

It worked at launch. Then a plugin updated, the hosting changed, or the employee whose address received the messages left. Or the mailbox is full. Without regular testing, you don’t find out.

What you can do yourself, step by step

1. Test it now, like a customer

Fill in the form on your phone, using a personal Gmail address. Check the inbox that should receive it, the spam folder and, if there is one, the confirmation the “customer” gets. Note how long it took.

2. Read the message’s report card

In Gmail, open the message, click the three dots and choose “Show original”. At the top you see the result for SPF, DKIM and DMARC. All three should say PASS. A FAIL, or a missing line, tells you exactly what’s wrong.

3. Send through SMTP

In WordPress, install an SMTP plugin and connect it to the mailbox on your domain: SMTP server, port 587 with TLS or 465 with SSL, username and password. Your host or email provider gives you these details. Then send a test email from the plugin.

4. Set the right sender

In the form’s notification settings, the sender must be an address on your own domain, for example hello@yourbusiness.com. The visitor’s address goes in the Reply-To field, so you can still answer with one click.

5. Add SPF, DKIM and DMARC

In your domain’s DNS settings: one single SPF record, with the value your email provider gives you (two SPF records break it). Enable DKIM with your provider and copy the record it gives you. For DMARC, add a record at _dmarc starting with v=DMARC1; p=none, so you monitor first without blocking anything. Then repeat the test from step 2.

6. Add a safety net

If your form plugin can store entries on the site, switch that on, so nothing is lost even if the email fails. Mark any messages found in spam as “Not spam”. And test the form once a month.

When it’s worth calling a pro

If SPF, DKIM or DMARC still fail after your test, or you have no access to the DNS and don’t know who manages it, hand it to me. I check the whole chain, from the form to your inbox: sender, SMTP, DNS records, then I test until the message lands in the inbox, not in spam. On every site I build, the forms are tested before launch. If you also want email on your own domain, the Business package, €1,499, includes it. For a one-off problem, write to me through the free consultation and I’ll tell you honestly what needs doing.

Frequently asked questions

Can I use my Gmail address as the form’s sender?

It’s not a good idea. Your website’s server has no right to send on behalf of gmail.com, and receiving servers can see that. Use an address on your own domain as the sender; the messages can still be delivered to your Gmail inbox.

It works for me, but customers say they get no confirmation. Why?

The confirmation goes to their mailbox, where the filters may be stricter than yours. The cause is usually the same: no SMTP, or missing SPF, DKIM, DMARC. Test with a Gmail address and an Outlook or Yahoo address.

I get lots of spam through my form. What can I do?

Add a hidden field that only bots fill in (a honeypot) or a captcha, such as Google reCAPTCHA or Cloudflare Turnstile. Many form plugins have these options built in.

What does p=none mean in DMARC?

That you only receive reports about mail sent in your domain’s name, without anything being blocked. Once you see everything passes, you can move to quarantine or reject.

Other common problems

Written by Raul Gabriel Nagy

Founder of RAGANA Studio, web designer since 2009. I hand-build websites and online shops for businesses in Romania, Hungary, Austria and Germany, and run my own online shop, raganadesign.shop. My story →

Updated:

Want to fix it together?

Message me on WhatsApp or send a note. I reply the same working day, with a fixed price if you need me.

Call: +40 742 111 223

Short tips, once a month

One email a month with concrete ideas to help more customers find you on Google. No spam, unsubscribe with one click. Details: Privacy.