Customers are placing orders and not receiving confirmation emails. You are not getting admin notifications about new orders. WooCommerce email failures are one of the most commercially damaging technical problems a store can have — customers assume their order failed and either contact support or abandon trust in your business. The root cause is almost always PHP mail() not working, and the fix is straightforward: configure SMTP.
Why WordPress PHP mail() fails
WordPress sends email via PHP's mail() function by default. Most shared hosting providers have this disabled or heavily restricted because spammers exploited it for years. Even when it technically sends, emails from PHP mail() frequently land in spam folders or are blocked by receiving mail servers. The solution is to send via SMTP — authenticated email using your own domain — which dramatically improves delivery.
WooCommerce development →Step 1: Check WooCommerce email settings
Go to WooCommerce → Settings → Emails. Confirm the recipient email addresses are correct for admin notifications. Click on New Order, Processing Order and Completed Order to verify they are enabled. These are frequently disabled when stores are set up and never re-enabled after going live. Save and use the preview links to see what the emails look like.
Step 2: Install an SMTP plugin
Install WP Mail SMTP (free) from the WordPress plugin directory. This plugin replaces the default PHP mail() function with proper SMTP authentication. After installing, run the Setup Wizard and select your preferred SMTP mailer. The plugin integrates natively with Brevo, Mailgun, SendGrid, Postmark and others.
Step 3: Set up a free Brevo or Mailgun account
Create a free account at brevo.com or mailgun.com. Add and verify your domain (you will need to add DNS records — your host or domain registrar can help). Generate SMTP credentials from your account dashboard. In WP Mail SMTP, enter your SMTP host, port (587 for TLS/STARTTLS) and authentication credentials.
Brevo SMTP settings: SMTP Host: smtp-relay.brevo.com SMTP Port: 587 Encryption: TLS Username: Your Brevo login email Password: Your Brevo SMTP key (from Settings → SMTP & API)
Step 4: Test and verify
Use WP Mail SMTP → Tools → Email Test to send a test message to your personal email. Check inbox and spam. If it arrives in spam, your domain's SPF and DKIM DNS records may need updating — your SMTP provider will show you the exact records to add. After confirming email delivery, place a test order on your store and verify the customer confirmation and admin notification both arrive.
ImportantNever use your personal Gmail or Outlook as the From address for WooCommerce emails. Email providers reject emails that claim to come from gmail.com or outlook.com via a third-party SMTP server. Always send from an address at your own domain — e.g., orders@yourdomain.co.uk. This also makes your business look significantly more professional.