WordPress and WooCommerce emails not sending

PlatformWordPress Doing it yourself30 to 60 minutes Checked

The short answer

By default WordPress hands email to the web server, which most mail providers now distrust. Messages are dropped or land in spam. Send through a real mail service with an SMTP plugin, use an address on your own domain as the sender, and add the SPF, DKIM and DMARC records the service gives you.

Is this your problem?

  • Contact form messages never arrive
  • Customers do not get order confirmations
  • Password reset emails never arrive
  • Emails arrive only in spam, or only to some addresses such as Gmail

What usually causes it

1
Mail sent by the web server, not a mail service

How to tell: No SMTP or mail plugin is installed.

2
The sender is the visitor address

How to tell: The contact form sends "from" the person who filled it in. Providers reject that as spoofing.

3
Missing SPF, DKIM or DMARC

How to tell: Gmail and Yahoo require sender authentication since 2024. Your domain DNS has none of these records.

4
The email is turned off or sent to the wrong address

How to tell: In WooCommerce, Settings, Emails, the email is disabled or the recipient is wrong.

Before you touch anything

  • Know where your domain DNS is managed, often the registrar or Cloudflare.

How to fix it, step by step

  1. 1

    Prove it is sending at all

    Install an email log plugin, or use the test tool in an SMTP plugin, and send a test to a Gmail address.

  2. 2

    Send through a mail service

    Install an SMTP plugin and connect it to a service: Google Workspace, Microsoft 365, or a sending service such as Brevo, Postmark, Amazon SES or Mailgun.

  3. 3

    Set the right sender

    Set From to an address on your own domain, such as hello@yourdomain.com. In contact forms, put the visitor address in Reply-To, not From.

  4. 4

    Add SPF

    Add the SPF record your service gives you. A domain may have only one SPF record, so merge services into one line. This example is for Google Workspace.

    v=spf1 include:_spf.google.com ~all
  5. 5

    Add DKIM and DMARC

    Add the DKIM record from your mail service. Then add a DMARC record as a TXT record named _dmarc. Start with p=none to watch before enforcing.

    v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com
  6. 6

    Check WooCommerce emails

    In WooCommerce, Settings, Emails, make sure each email is enabled and the admin recipient is correct.

Stop and get help if

  • Your domain is being used to send spam you did not write.
  • The site sends hundreds of emails an hour you cannot explain. That is often a hacked form.
Fix it for me

Stop it happening again

  • Keep the email log plugin running.
  • Send a test after every mail or DNS change.
  • Move DMARC from none to quarantine once reports look clean.

Questions people ask

Can I use my Gmail account to send?

Only with a domain address on Google Workspace. A free Gmail address as sender for your domain site will fail checks.

Why do some people get my emails and others do not?

Providers score senders differently. Without SPF, DKIM and DMARC, the strict ones drop your mail first.

Still broken? We can fix it.