Your WooCommerce store is processing orders perfectly, but customers never receive confirmation emails. They’re wondering if their purchase went through, and you’re fielding “where’s my order?” support tickets.

Roughly 1 in 6 emails never reach the intended inbox, according to email deliverability research. For WooCommerce stores, this means missed order confirmations and frustrated customers.

Here are the 6 actual causes and how to fix them.

Test if Emails Are Really Failing (Don’t Guess)

Before troubleshooting for hours, confirm that emails actually aren’t being delivered.

Simple 2-Minute Test

Go to WooCommerce → Settings → Emails, click any email type, and send a test email to yourself.

Next, place a test order using your real email address. Go through the complete checkout process.

Check your spam folder. Don’t assume emails aren’t sending just because your inbox is empty.

What You’re Looking For

If the test email arrives in your inbox, the problem is specific to customer emails. If nothing arrives anywhere (not even spam), you have a server issue. If emails land in spam consistently, you have a deliverability problem.

Tip: I’ve helped store owners troubleshoot for days only to find emails were just landing in spam folders. Always check spam first.

Cause #1: Your Host Blocks Email Sending (Most Common)

This is the number one reason WooCommerce emails fail. Most shared hosting providers block WordPress’s default email system to prevent spam abuse.

Why This Happens

WordPress uses the PHP mail() function to send emails. It’s built-in, free, and completely unreliable on modern shared hosting. Hosts like Bluehost, HostGator, SiteGround, and GoDaddy either block it entirely or severely restrict it.

Why do hosts block it? Shared hosting means hundreds of websites share the same server. If one website sends spam using PHP mail(), the entire server’s IP address gets blacklisted. Once blacklisted, legitimate emails from all websites on that server get blocked. To prevent this, most hosts simply disable or heavily restrict the PHP mail() function.

The frustrating part? WordPress doesn’t show you an error message. The wp_mail() function returns “true” even when emails never actually send. Emails just vanish into the void.

How to Know This Is Your Problem

Test emails never arrive anywhere – no inbox, no spam folder, nothing. You won’t see error messages in WooCommerce. Other plugins can’t send email either (contact forms, password resets, comment notifications all fail).

If you check your server logs, you might see entries about “mail() function disabled” or “sendmail not found,” but many hosts don’t log these errors visibly.

The Fix – Install WP Mail SMTP (15 minutes)

WP Mail SMTP forces WordPress to use proper email services instead of your host’s blocked system. Over 4 million sites use it for this exact reason. It reconfigures how WordPress sends email at a fundamental level.

Step 1: Install the Plugin

Go to Plugins → Add New in your WordPress dashboard. Search “WP Mail SMTP” and install the one by WP Mail SMTP (it has the orange logo). Activate it after installation.

Step 2: Choose an Email Service

The setup wizard will walk you through choosing an email service. For small stores just starting out, these free options work well:

Gmail: Perfect if you’re sending under 100 emails per day. Easy to set up if you already have a Gmail account. The limitation is Google’s daily sending limit of 500 emails for regular Gmail accounts (100 for free accounts), which sounds like a lot until you factor in order confirmations, shipping notifications, and other automated emails.

Outlook/Office 365: Similar limits to Gmail. Good choice if you already use Microsoft services for your business.

SendLayer: Offers a free tier specifically for WordPress sites with higher limits than consumer email services. Good middle-ground option.

These services handle email delivery professionally. They have proper authentication, dedicated IP addresses, and established reputations with email providers like Gmail and Yahoo.

Step 3: Configure and Test

Follow the plugin’s setup wizard. It’ll walk you through connecting your chosen service. For Gmail, you’ll authorize WP Mail SMTP to send emails on your behalf through a Google permissions screen.

Once connected, the plugin will ask you to send a test email. Send it to yourself and verify it arrives. Check both inbox and spam folder.

Why This Works

Instead of using your host’s blocked email system, emails route through dedicated email services with proper infrastructure. These services have:

  • Proper SPF and DKIM authentication records that prove your emails are legitimate
  • Dedicated IP addresses with good sending reputations
  • Real email servers designed for deliverability, not shared hosting servers
  • Support teams that handle blacklist removals if issues occur

Your order confirmations get delivered reliably because they’re coming from trusted email infrastructure, not a blocked shared hosting server.

Advanced Alternative

If you’re comfortable editing WordPress files, you can configure SMTP directly in wp-config.php without a plugin. This saves a tiny bit of server resources but requires updating credentials manually if they change. For most store owners, the plugin approach is simpler, more maintainable, and includes helpful features like email logging and delivery tracking.

Before launching your store, test email delivery properly. Send test orders to Gmail, Yahoo, Outlook, and other common providers. Make sure confirmations arrive in inboxes, not spam folders. Check out our guide on testing WooCommerce email delivery before going live for a complete testing checklist.

Cause #2: Emails Landing in Spam Folders

This is the sneaky problem. Emails ARE sending successfully, they’re just not reaching inboxes. Customers never see confirmations because they’re buried in spam folders they rarely check.

The Hidden Problem

According to email deliverability research, about 10% of legitimate emails end up in spam folders. WooCommerce emails are particularly vulnerable when using default WordPress settings because they lack the authentication signals that spam filters look for.

Most customers don’t routinely check spam folders for order confirmations. They assume their order failed and either contact you asking “did my payment go through?” or worse, file a credit card dispute thinking they were scammed.

Why WooCommerce Emails Get Flagged

Email providers like Gmail, Yahoo, and Outlook use sophisticated spam filters. When your WooCommerce emails lack proper authentication, they trigger multiple red flags:

Your “From” Address Doesn’t Match Your Domain

If your website is mystore.com but emails show as coming from info@gmail.com, that’s an immediate red flag. Email providers know this is spoofing behavior – your emails claim to be from Gmail, but they’re actually coming from your hosting server.

Missing Authentication Records

SPF (Sender Policy Framework) and DKIM (DomainKeys Identified Mail) are authentication methods that prove your emails are legitimately from you. They’re DNS records that tell email providers “yes, this server is authorized to send emails for mystore.com.”

Without these records, email providers have no way to verify your emails are legitimate. They err on the side of caution and route them to spam.

Bad Server IP Reputation

On shared hosting, your website shares an IP address with potentially hundreds of other websites. If one of those websites sent spam last month, the IP address gets flagged. Now your legitimate order confirmations get caught in the same filter.

You have no control over what other websites on your shared server do. This is one of the biggest disadvantages of shared hosting for ecommerce.

Quick Diagnostic Checks

Start by checking your “From” address. Go to WooCommerce → Settings → Emails. Look at the “From” email field and the “From” name field.

The email should use your actual domain: orders@yourdomain.com, support@yourdomain.com, or hello@yourdomain.com. Never use free email addresses like info@gmail.com or contact@yahoo.com.

Next, verify your domain has proper authentication. Use a free tool like MXToolbox’s SPF checker. Type in your domain and it’ll show whether SPF and DKIM records are configured correctly.

If they’re missing or misconfigured, contact your hosting provider. Most hosts can set these up for you in minutes. They’re standard DNS records that should be part of any professional email setup.

The Real Fix

Here’s the good news: if you already installed WP Mail SMTP from Cause #1, you’ve automatically solved this problem too.

When you send emails through Gmail, SendGrid, Mailgun, or other proper email services, they handle all authentication automatically. Your emails come from their servers with:

  • Proper SPF and DKIM signatures that verify authenticity
  • Trusted IP addresses with established good reputations
  • Professional email infrastructure that spam filters recognize

Spam filters see emails coming from, say, Gmail’s servers and know they’re legitimate business emails. Your order confirmations land in primary inboxes instead of spam folders.

Info: If you’re using Gmail to send WooCommerce emails, it must be connected through WP Mail SMTP’s configuration, not just entered in the “From” field. Changing the “From” field alone doesn’t actually route emails through Gmail’s servers – it just changes what name recipients see while still using your host’s blocked system.

Cause #3: Wrong SMTP Settings

If you’ve set up SMTP but emails still aren’t working, the problem is usually in your configuration. SMTP requires precise settings, and one wrong detail breaks everything.

The Configuration Challenge

SMTP setup involves multiple technical settings that all need to match your email provider’s requirements exactly. Port numbers, encryption types, server addresses, and authentication credentials all have to be correct. Miss one detail, and you’ll spend hours wondering why emails won’t send.

Common SMTP Mistakes

Wrong Port Number

SMTP uses different “ports” – think of them as different doors into the email server. Using the wrong door means you can’t connect.

Port 587 is the modern standard recommended by email service providers. It uses STARTTLS encryption and is supported by most email providers. This is what you should try first.

Port 465 uses SSL encryption. Some older systems require it, but most providers have moved away from it. If Port 587 doesn’t work, try 465 next.

Port 25 is the original SMTP port. Most shared hosting providers block it completely to prevent spam. Don’t bother trying Port 25 unless you’re on a VPS or dedicated server.

Encryption Mismatch

Each port requires specific encryption. Port 587 requires TLS (technically STARTTLS). Port 465 requires SSL. If you set Port 587 but configure SSL encryption instead of TLS, the connection fails.

Email providers are strict about this. The encryption type must match the port exactly, or the server refuses the connection.

Authentication Failures

For most email services, you need a username and password to send emails. But it’s not always straightforward.

Gmail doesn’t let you use your regular Gmail password for SMTP. You need to generate an “App Password” in your Google Account security settings. This is a 16-character password specifically for third-party apps. Your normal password won’t work, no matter how many times you try it.

Outlook and Office 365 have similar requirements depending on your account security settings. If you have two-factor authentication enabled (you should), you’ll likely need an app-specific password.

Incorrect Server Address

Make sure you’re using the right SMTP server address. For Gmail, it’s smtp.gmail.com. For Outlook, it’s smtp-mail.outlook.com or smtp.office365.com depending on your account type.

Don’t guess at server addresses. Look up your provider’s official documentation.

How to Fix

Check your email provider’s official SMTP documentation. Search “[provider name] SMTP settings” and use their official help docs, not random forum posts.

For Gmail, the correct settings are:

  • SMTP Server: smtp.gmail.com
  • Port: 587
  • Encryption: TLS (or STARTTLS)
  • Username: Your full Gmail address (user@gmail.com)
  • Password: Your App Password (not your regular password)
  • Authentication: Required (enabled)

For Outlook/Office 365:

  • SMTP Server: smtp-mail.outlook.com or smtp.office365.com
  • Port: 587
  • Encryption: STARTTLS
  • Username: Your full Outlook email
  • Password: Your account password (or app password if 2FA enabled)

For SendGrid:

  • SMTP Server: smtp.sendgrid.net
  • Port: 587
  • Encryption: TLS
  • Username: apikey (literally the word “apikey”)
  • Password: Your SendGrid API key

Test Your Connection

WP Mail SMTP includes a connection test tool that’s incredibly helpful for troubleshooting. Go to WP Mail SMTP → Settings → Email Test.

Send a test email. If it fails, the plugin shows exactly what went wrong:

  • “Authentication failed” means wrong username or password
  • “Connection timeout” means wrong server address or your host is blocking the port
  • “TLS handshake failed” means wrong encryption type for the port you’re using

These error messages tell you exactly which setting needs fixing.

Warning: If Gmail worked fine for months then suddenly stopped, Google may have disabled “Less secure app access” on your account. This happens when Google updates their security policies. You’ll need to generate an App Password and update your WP Mail SMTP settings with that new password.

Cause #4: Server Email Limits Reached

Shared hosting plans have strict email sending limits. Hit the cap, and emails stop until the counter resets. This is especially problematic during sales when you’re processing many orders in a short time.

Understanding Email Limits

Shared hosting providers don’t want their servers used for spam. To prevent abuse, they cap how many emails any single account can send per hour or per day. These limits are usually hidden in fine print or buried in their terms of service.

The problem? Limits designed to stop spammers also affect legitimate stores during busy periods. A flash sale generating 50 orders in an hour can hit your limit quickly when each order triggers confirmation emails, admin notification emails, and potentially shipping notification emails.

How to Know You’ve Hit the Limit

The pattern is distinctive: emails worked perfectly all morning, suddenly stopped around noon, then mysteriously started working again a few hours later. No error messages appear in WooCommerce. Orders process normally. Customers just don’t receive confirmations.

This happens most often during:

  • Weekend sales when order volume spikes
  • Product launches with concentrated order activity
  • Holiday shopping periods
  • Flash sales or limited-time promotions

If you notice customers emailing “I placed an order but didn’t get a confirmation” during these peak times, you’ve likely hit your host’s limit.

Common Host Limits

Email limits vary significantly by hosting provider and plan level:

Bluehost: 150 emails per hour on basic plans (can request increase to 750/hour, but you need to contact support and justify it)

HostGator: 500 emails per hour with a daily maximum of 12,000 (note: you can’t send 12,000 in one hour, it’s spread across the day)

SiteGround: Approximately 400 emails per hour (they don’t publish exact limits publicly)

Hostinger: 1,000 emails per day per mailbox (if you have multiple email accounts, each gets its own limit)

GoDaddy: 1,000 emails per day per domain (not per account, per entire domain)

These limits apply to ALL emails from your hosting account – not just WooCommerce. Contact forms, password reset emails, comment notifications, and other plugin emails all count toward your limit.

Contact your hosting support if you’re unsure about your specific cap. Ask directly: “What are my hourly and daily email sending limits for this hosting plan?” Get specific numbers in writing.

Solutions

Immediate Workaround

Limits typically reset every hour or every 24 hours depending on how your host configured them. You can wait for the reset, but that’s not acceptable when customers are waiting for order confirmations.

Some hosts let you request temporary limit increases. Call support, explain you’re running a legitimate sale, and ask for a temporary boost. Success varies by provider and whether you’ve requested this before.

Long-term Fix: Transactional Email Services

The real solution is switching to transactional email services designed specifically for sending automated emails. These services exist specifically to handle order confirmations, shipping notifications, and other transactional emails at scale.

Popular options for small WooCommerce stores:

SendGrid: 100 emails per day during a 60-day trial. Paid plans start at $19.95/month for 50,000 emails. Rock-solid deliverability and excellent documentation.

Mailgun: Free tier with 100 emails per day. Paid Foundation plans start at $35/month for 50,000 emails (lower tiers like $15/month have been discontinued). Developer-friendly with detailed logs and powerful API.

Amazon SES: Pay-as-you-go pricing at $0.10 per 1,000 emails. New accounts now receive $200 in AWS credits for the first 6 months instead of a fixed free volume. Incredibly cheap but requires more technical setup.

Brevo (formerly Sendinblue): 300 emails per day free forever. Paid plans start at $9/month for 5,000 emails. Currently the most generous option for very small stores just starting out.

These services offer thousands of emails daily even on free tiers. Connect them through WP Mail SMTP just like Gmail, but get professional infrastructure designed for high-volume sending.

Tip: If you’re consistently sending 50+ order confirmation emails daily, you’ll hit shared hosting limits during any traffic spike. Set up transactional email before your first big sale, not after you’ve already missed order confirmations and have frustrated customers.

Want to track exactly which emails are being sent and which are hitting limits? Set up email logging for WooCommerce to monitor all email activity and catch problems early.

Cause #5: Plugin Conflicts

Other plugins can interfere with WooCommerce emails. Security plugins might block SMTP. Caching plugins might break email triggers. Multiple email plugins might fight each other.

Finding the Conflict

Disable all plugins except WooCommerce. Test emails. If they work, reactivate plugins one at a time, testing after each. When emails break, you’ve found the culprit.

Common Culprits

Security plugins (Solid Security, All-In-One Security) sometimes block SMTP connections. Running two email plugins simultaneously causes conflicts. Outdated email customization plugins break with newer WooCommerce versions.

What to Do

Update the conflicting plugin. Check its settings for email-related options. Whitelist WooCommerce or your SMTP service in security plugins.

If that doesn’t work, contact the plugin developer or replace it with an alternative.

Warning: Test plugin conflicts on staging sites or during off-hours, not during active sales.

Theme Test

Themes rarely cause issues, but check anyway. Switch to Twenty Twenty-Four temporarily. If emails suddenly work, your theme is interfering.

For delayed emails rather than missing ones, see our guide on fixing email delays from cron job issues.

Cause #6: Customer Email Typos

Sometimes it’s simple: customers mistype their email. WooCommerce sends to gmial.com instead of gmail.com. The email bounces.

Common Typos

  • gmial.com, yahho.com, outlok.com
  • Extra characters or missing letters

WooCommerce can’t detect wrong emails. It sends confirmations that bounce from non-existent addresses.

How to Prevent

Add an email confirmation field at checkout. Customers type their email twice. Mismatches trigger an error before order completion.

Simple code snippet for your child theme’s functions.php:

// Add email confirmation field to checkout
add_filter('woocommerce_checkout_fields', 'add_checkout_email_confirmation');
function add_checkout_email_confirmation($fields) {
    $fields['billing']['billing_email_confirm'] = array(
        'type'        => 'email',
        'label'       => 'Confirm Email Address',
        'required'    => true,
        'class'       => array('form-row-wide'),
        'priority'    => 25
    );
    return $fields;
}

// Validate emails match
add_action('woocommerce_checkout_process', 'validate_email_confirmation');
function validate_email_confirmation() {
    if ($_POST['billing_email'] !== $_POST['billing_email_confirm']) {
        wc_add_notice('Email addresses do not match.', 'error');
    }
}

This adds a second email field and validates both match before processing orders.

Not comfortable with code? Use plugins like Checkout Field Editor for WooCommerce to add email confirmation through settings.

Quick Prevention Tips

Prevent problems before they start:

Pre-Launch Setup:

  • Install and configure WP Mail SMTP
  • Use proper email service (Gmail for small stores, SendGrid for larger)
  • Test delivery with Gmail, Yahoo, and Outlook addresses
  • Check spam folders during testing

Regular Monitoring:

  • Watch for customer questions about order status
  • If multiple customers ask “did my order go through?” check email system immediately
  • Set up email logging to track sent/failed emails

Keep It Simple:

  • One SMTP plugin only
  • Update plugins regularly
  • Don’t overcomplicate your email setup

Test everything before launch with our guide on WooCommerce email testing.

When to Contact Your Host

Some problems require hosting support.

Call Your Host If:

  • Emails suddenly stopped after working for months (possible server change or IP blacklisting)
  • Server error messages appear in logs (not just “emails not sending” but specific errors)
  • Email limits are too restrictive for your store size

What to Ask:

  • “What are my email sending limits?” (Get hourly and daily numbers)
  • “Do you block PHP mail() function?”
  • “What SMTP settings should I use?”
  • “Is my domain’s IP blacklisted?”

Have Ready:

  • Your domain name
  • When the problem started
  • Recent site changes
  • Troubleshooting steps you’ve tried

Sources & References

The technical information and statistics in this guide are based on current industry research and official documentation:

Email Deliverability Statistics:

  • “Roughly 1 in 6 emails never reach inbox” – EmailTooltester, Email Deliverability Statistics 2024
  • “About 10% of emails end up in spam folders” – EmailTooltester, Email Deliverability Report 2024

WordPress & SMTP Information:

Hosting Email Limits:

SMTP Port Configuration:

  • Port 587, 465, 25 technical details – Mailgun SMTP Port Guide
  • SMTP encryption standards – Industry standard documentation

Email Service Pricing

(as of December 2024/January 2025):

Masood

Helping WooCommerce Stores Increase Sales & Revenue with Smart Plugins & WordPress Solutions