sendsend.email

Learn · 6 minute read

WordPress contact form emails going to spam: why, and how to fix it

By default WordPress sends email through your web host’s mail system, which is not set up to prove the mail is yours. That is why contact form messages and order emails so often land in spam or vanish.

Why it happens

  • WordPress uses the host’s basic mail function. Many hosts share an address with thousands of other sites, and some block or throttle outgoing mail.
  • The mail is not authenticated. Without SPF and DKIM for your domain covering the server that sent it, receivers cannot tell it is genuine.
  • The From address is wrong. Many form plugins set the visitor’s email as From. That says “this message came from gmail.com”, sent by your server, which fails DMARC and looks forged. The visitor’s address belongs in Reply-To.
  • The default sender looks generic. Mail from wordpress@yourdomain.com with no mailbox behind it looks like a bot.

The fix, in order

  1. Send through a real email service instead of the host’s mail function. Install a plugin that sends WordPress mail through an API or authenticated SMTP. SendSend has a WordPress plugin for this, and other services have their own.
  2. Authenticate your domain. Add the service’s DKIM and SPF records and publish a DMARC record. Run your domain through the free domain checker to see it.
  3. Send from an address on your own domain, such as noreply@yourdomain.com, and put the visitor’s address in Reply-To so you can answer them.
  4. Send a test from the form and from WooCommerce to a Gmail and an Outlook address, and check the spam folder.

Checking why a message failed

  • In Gmail, open the message, choose “Show original”, and read the SPF, DKIM and DMARC lines. FAIL tells you what to fix.
  • If mail never arrives at all, check your service’s logs for a bounce or a rejection, rather than the inbox.
  • Turn on your form plugin’s own delivery log if it has one, to confirm WordPress handed the message to the mail service.

What not to do

  • Do not use a free-mail address (Gmail, Yahoo) as the From address for mail sent by your site.
  • Do not keep sending through the host’s mail function “just in case” once you have set up a service: mail can double-send or bypass the authenticated path.
  • Do not ignore bounces: remove addresses that fail for good.

Common questions

Why do my WooCommerce emails go to spam?

For the same reasons as form mail: sent through the host’s basic mail function, not authenticated for your domain, and sometimes with a mismatched From address. Sending through an authenticated email service fixes most of it.

Which plugin should I use?

Any plugin that sends WordPress mail through a real email service by API or authenticated SMTP. Check that it lets you set the From address and keeps the visitor’s address in Reply-To.

Should the From address be the person who filled in the form?

No. Send from your own domain and use Reply-To for the visitor. Using the visitor’s address as From usually fails DMARC.

Do I need DMARC for a small site?

You should publish one. A p=none record is enough to start, and Gmail and Yahoo expect one from anyone who sends in volume.

Check your own domainSee your SPF, DKIM and DMARC in seconds, free.
Open the checker

Keep reading

SendSend is an email API that checks these records for you and tells you when a domain is verified. Get started free.