WordPress sites send email for contact forms, password resets, comment notifications, and WooCommerce order confirmations. If these land in the spam folder, you lose leads and get support tickets you did not ask for. The fix is usually a DNS record, not a plugin.
By default, WordPress sends email through your hosting provider's mail server. This is the most common reason for deliverability problems. Most shared hosting providers have a poor sending reputation because thousands of sites on the same IP send spam. Gmail and Outlook have learned to distrust these IPs.
The receiving mail server does not care that you are a legitimate WordPress site. It checks your domain's DNS records and the sending IP's reputation. If either fails, the email gets filtered to spam.
The frustrating part: your hosting provider's email log shows "sent." The email left your server. It just did not reach the inbox. You have zero leads and no idea why.
Here is what the receiving mail server checks, in order:
Any one of these can break your deliverability. Most WordPress sites have at least one missing or misconfigured.
You do not need to run dig commands by hand. Inboxproof checks all 6 records in about 30 seconds. You type in your domain, it queries your live DNS, and gives you a score plus the exact records to fix. No account, no setup, nothing to install.
The report is public and shareable, which is handy when you need to send the findings to whoever manages your DNS (your developer, your agency, your hosting provider).
Most shared hosting providers use a shared IP for all their customers' email. This IP has a poor reputation because thousands of sites on the same IP send spam. Even if your SPF and DKIM are correct, Gmail and Outlook may filter your email based on the IP's reputation.
Fix: use a dedicated IP (if your hosting provider offers one) or switch to a transactional email service like SendGrid, Postmark, or Resend for your WordPress email. Most WordPress sites can use a plugin like WP Mail SMTP to route email through a dedicated service.
If you use a transactional email service (SendGrid, Postmark, Resend, etc.), you need to add their include to your SPF record. For example, if you use SendGrid, your SPF record should include "include:sendgrid.net". If you use multiple services, add all of their includes.
Fix: check your current SPF record and add the includes for every service that sends email on your behalf.
If you use a transactional email service, you need to add their DKIM record to your DNS. Each service has a specific selector (e.g., s1._domainkey.yourdomain.com for SendGrid). If the DKIM record is missing, the email fails DKIM.
Fix: check your email service's docs for the DKIM record and add it to your DNS.
Gmail has been enforcing DMARC more strictly since early 2024. A domain with no DMARC record is treated as unauthenticated. Gmail filters these emails more aggressively. Set your DMARC record to at least p=quarantine, and ideally p=reject once you are confident your SPF and DKIM are correct.
Fix: add a DMARC record to your DNS. Start with p=none, monitor the reports, then move to p=quarantine and p=reject.
Many shared hosting providers block outbound port 25 (the standard SMTP port) to prevent spam. This means WordPress cannot send email directly through your hosting provider's mail server. You need to use a transactional email service instead.
Fix: use a transactional email service like SendGrid, Postmark, or Resend. Most WordPress sites can use a plugin like WP Mail SMTP to route email through a dedicated service.
Fixing the records is the first step. But records break. Your hosting provider changes something. Your DNS provider expires a record. A new include gets added. You do not get an email when this happens. You find out when a customer says "I never got the contact form response."
Inboxproof Pro monitors all 6 records daily and emails you the moment one breaks, expires, or changes. $29/month for up to 5 domains. For a WordPress site, that is one domain. For an agency managing multiple sites, the Agency plan covers up to 25 domains for $99/month.
If any of these are missing, run a free audit and get the exact record values to add. Takes 30 seconds. No account needed.
Run a free 30 second audit on your domain. No account, no setup, reads your live DNS only.
Run my free auditAudited by Inboxproof · live DNS checks · privacy