WooCommerce Email Deliverability: Why Your Emails Go to Spam (And How to Fix It)
The Default WooCommerce Email Problem
When WooCommerce sends an order confirmation email, it doesn't use a proper email server. It uses PHP's built-in mail() function, which tells your web server to send the email directly. The problem: your web server isn't an email server. It has no reputation, no authentication, and shares an IP address with hundreds of other websites — some of which might be sending spam.
Email providers like Gmail, Outlook, and Yahoo use sophisticated filtering to determine what's spam and what's legitimate. When they see an email from a random web server IP with no authentication records, they treat it with suspicion. Result: your customer's order confirmation lands in their spam folder, they think you're a scam, and you get a support ticket asking "where's my order?"
Understanding Email Authentication: SPF, DKIM, DMARC
Email authentication is how you prove to Gmail, Outlook, and Yahoo that your emails are legitimately from you. There are three DNS records that matter:
SPF (Sender Policy Framework)
SPF tells receiving email servers which servers are authorized to send email on behalf of your domain. It's a TXT record in your DNS that lists approved IP addresses and services. Without SPF, any server can claim to send email from your domain — and email providers know this, so they flag unauthenticated emails.
Example SPF record: v=spf1 include:_spf.google.com include:sendinblue.com ~all
This says: "Emails from our domain can legitimately come from Google Workspace and Brevo (Sendinblue). Anything else should be treated with suspicion (~all)."
DKIM (DomainKeys Identified Mail)
DKIM adds a cryptographic signature to every email you send. The receiving server checks this signature against a public key published in your DNS. If the signature matches, the email hasn't been tampered with and genuinely came from your domain. DKIM is the single most important authentication record for deliverability.
DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC tells receiving servers what to do when an email fails SPF and DKIM checks. Options are: do nothing (p=none), quarantine (p=quarantine), or reject (p=reject). Start with p=none to monitor, then move to p=quarantine after confirming legitimate emails pass authentication.
Example DMARC record: v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com
Step-by-Step SMTP Setup for WooCommerce
Step 1: Choose an SMTP Provider
The best SMTP providers for WooCommerce stores, ranked by value:
Brevo (formerly Sendinblue) — Free tier: 300 emails/day. Paid: from $9/month for 5,000 emails. Best choice for most WooCommerce stores. The free tier handles stores processing up to 10 orders/day comfortably (each order triggers 2-3 emails).
Amazon SES — $0.10 per 1,000 emails. No free tier anymore (was 62,000/month from EC2, ended 2024). Cheapest at scale but requires more technical setup. Best for stores sending 10,000+ emails/month.
Postmark — $1.25 per 1,000 emails (first 100 free). Best deliverability in the industry — they only allow transactional email, so their IP reputation is excellent. Worth the premium for stores where every email matters (luxury goods, high-ticket items).
Mailgun — First 1,000 emails free, then $0.80 per 1,000. Good API, developer-friendly, solid deliverability. Middle ground between Brevo and Postmark.
SMTP.com — From $25/month for 50,000 emails. Enterprise-grade, dedicated IPs available. Overkill for most WooCommerce stores.
Step 2: Install WP Mail SMTP
WP Mail SMTP by WPForms is the most popular SMTP plugin for WordPress with 3+ million active installations. It routes all WordPress emails (including WooCommerce) through your chosen SMTP provider instead of PHP mail().
Install it from Plugins → Add New → search "WP Mail SMTP". The free version supports most SMTP providers. The Pro version ($49/year) adds email logging, which is useful for debugging delivery issues.
Alternative plugins: FluentSMTP (free, open source, supports multiple connections), Post SMTP (free, includes email logging), Jetveo SMTP (lightweight).
Step 3: Configure Your SMTP Provider
Using Brevo as an example (most common choice):
1. Create a Brevo account at brevo.com
2. Go to Settings → SMTP & API → Generate a new SMTP key
3. In WP Mail SMTP, select Brevo (Sendinblue) as your mailer
4. Enter your API key
5. Set your "From Email" to an address on your domain (e.g., orders@yourstore.com)
6. Set "From Name" to your store name
Step 4: Add DNS Records
Your SMTP provider will give you specific DNS records to add. For Brevo, you'll get:
- An SPF include to add to your existing SPF record
- A DKIM key (a TXT record with a long cryptographic string)
- Optional: a DMARC record recommendation
Add these records in your domain registrar or DNS provider (Cloudflare, Namecheap, GoDaddy, etc.). DNS propagation takes up to 48 hours, but usually completes within 1-2 hours.
Step 5: Verify and Test
After DNS propagation:
1. Go to WP Mail SMTP → Email Test and send a test email to your personal Gmail
2. Check that it arrives in the inbox (not spam)
3. In Gmail, click the three dots → "Show original" to verify SPF, DKIM, and DMARC all show "PASS"
4. Run your domain through mail-tester.com (free) — aim for a score of 9/10 or higher
WooCommerce-Specific Email Issues
"From" Address Mismatches
WooCommerce lets you set a "From" address in WooCommerce → Settings → Emails. If this doesn't match the domain you've authenticated with your SMTP provider, emails will fail DKIM verification. Make sure your WooCommerce "From" address uses your authenticated domain — not a gmail.com or other free email address.
Plugin Conflicts
Some WooCommerce plugins send their own emails outside the normal WooCommerce flow. Subscription renewal reminders, booking confirmations, and membership notifications might bypass your SMTP configuration. After setting up SMTP, enable email logging (WP Mail SMTP Pro or Post SMTP) and check that ALL email types route through SMTP.
Multisite Complications
WordPress Multisite sends emails from the network admin email by default, which may not match individual site domains. Each site in a multisite network needs its own SMTP configuration if they use different domains.
Advanced Deliverability Tactics
Separate Transactional from Marketing Email
Use different sending infrastructure for transactional emails (order confirmations, shipping notices) and marketing emails (newsletters, promotions). Transactional emails should use a dedicated SMTP provider like Postmark or a subdomain (e.g., mail.yourstore.com) to protect their reputation from marketing email bounces and spam complaints.
Monitor Bounce Rates
Hard bounces (invalid email addresses) damage your sender reputation. WooCommerce collects email addresses at checkout with no verification. If customers mistype their email, you send to an invalid address, it bounces, and your reputation suffers. Consider adding email verification at checkout using a plugin like WooCommerce Email Verification or YayMail's email validation feature.
Warm Up New Sending Domains
If you're setting up SMTP for a domain that's never sent email before, don't blast 1,000 emails on day one. Start with 50-100 emails/day and gradually increase over 2-4 weeks. This lets ISPs build a positive reputation for your domain.
Monitoring and Maintaining Deliverability
Deliverability isn't set-and-forget. Monitor these metrics monthly:
Bounce rate: Should be under 2%. Higher means you're sending to invalid addresses.
Spam complaint rate: Should be under 0.1%. Google's threshold is 0.3% — exceed it and you're in trouble.
Inbox placement rate: Tools like GlockApps ($59/month) or InboxReady test actual inbox placement across providers.
Check blacklists quarterly using mxtoolbox.com. If your sending IP appears on a blacklist, contact the blacklist operator for delisting. This is another reason to use a reputable SMTP provider — they actively monitor and manage their IP reputation.
If you've already customized your email templates for branding, make sure the content passes spam filter checks too. Learn about email template customization best practices that don't trigger spam filters. And if you're sending post-purchase review requests, check our guide on review request email timing to avoid complaint spikes.
Troubleshooting Common Problems
Emails not sending at all: Check WP Mail SMTP's email log. Most common cause: incorrect SMTP credentials or firewall blocking outbound SMTP ports (25, 465, 587). Some shared hosts block port 25 — use 587 (TLS) or 465 (SSL) instead.
Emails landing in Promotions tab: Gmail's Promotions tab isn't spam — emails are still delivered. But if you want Primary inbox, reduce marketing-style content (lots of images, promotional language, multiple CTAs) in transactional emails.
Customer claims "never received email": Check your email log first. If it shows "sent successfully," the problem is on the recipient's end — their spam filter, full inbox, or incorrect email address. If the log shows failure, check your SMTP provider's dashboard for bounce details.
Emails delayed by hours: WooCommerce triggers emails synchronously during checkout. If emails are delayed, your SMTP provider might be queuing them. Check their dashboard for queue status. Also check if you have a caching plugin that's interfering with WooCommerce's email hooks — some aggressive caching can delay email triggers.
Keep reading
Related guides you might find useful
Best WooCommerce Abandoned Cart Plugins Compared (2026)
70% of carts get abandoned. Here's a hands-on comparison of the best WooCommerce abandoned cart plugins — from free to premium.
Read guideEmail MarketingThe Perfect WooCommerce Abandoned Cart Email Sequence (With Templates)
How many emails? What timing? What subject lines? The complete abandoned cart email sequence for WooCommerce stores, with copy templates you can steal.
Read guideEmail MarketingWooCommerce Post-Purchase Emails: The Complete Guide
The sale isn't over when the order ships. Here's how to set up post-purchase email flows that drive reviews, repeat purchases, and referrals.
Read guideLevel up your WooCommerce store
Join the WPBundle waitlist and get beta access to our plugin suite completely free.
Join the Waitlist