WooCommerce, and most plugins sending email, send mail by using the wp_mail() function that is a core function of WordPress.
In most cases, if email is not being sent/received, then the issue is not with WooCommerce itself, but with the core email function on your web host. Read on for solutions to common issues.
I am getting orders, but no emails are sending!
There are multiple factors that can be the cause. Before explaining the actual mail side of the issue, please ensure that it’s not one described below.
Check if orders are pending
If your new orders have the status Pending, no email would have been sent yet. Pending orders are orders where the customer selected Place Order but abandoned the payment page (depending on the payment gateway, i.e., PayPal) or had their credit card transaction declined.
If you have pending orders but receive payment for them via a payment gateway such as PayPal, the orders are not being updated, and this could indicate a problem with the payment gateway. In this case, you are not looking at a email issue; you are looking at an issue with your payment gateway and may need to submit a support ticket.
For PayPal Standard, we have this troubleshooting page.
Plugins can also return errors before status changes occur. To find out what may be causing this, you can either rule out conflicts by disabling plugins/themes other than WooCommerce itself, or you can use the WP debug log to view errors. If there are ‘fatal errors,’ this may be the problem.
Check your Email Settings
Orders that are properly updating to Processing should generate an email.
Another possible issue is mistakenly disabling emails from sending. Double-check that “Enable this email notification” is ticked for order notifications at WooCommerce > Settings > Emails and select the Processing Order email template. An additional test should be setting the Email Type to plain text.
Check if emails are sent, but not received
If emails are enabled and orders are updating to Processing, there could be an issue in the email delivery to a recipient. This could be a spam blocker that classified your emails are spam and stopped them. Installing a mail logging plugin can help.
Install WP Mail Logging plugin. This will log all outgoing mails so you can see what is being sent. Once installed:
- Generate a test order
- Go to your admin dashboard > WP Mail Log
- Check that your test order generated an email, and if there are any sending errors reported
After a successful send, the screen should look something like this:
If the email was sent, but not received, there are a few steps that can be taken:
- Make sure you’re using an email address attached to your own domain in the “From” Address field in WooCommerce > Settings >Emails. Using your @gmail.com, @yahoo.com or similar public domain email address will likely cause emails to land in spam folders due to mismatch between the declared sender (servers of Gmail or Yahoo) and the actual sender (your server).
- Sign up for an account with a dedicated SMTP provider (an average site can usually stay within free usage) that will send the email for you. This should be more reliable than your own server’s mail-sending function.
If the email was not sent, this could indicate a plugin conflict blocking the send by, for example, erring before they are generated. To find out what is causing this, you can either rule out conflicts by disabling plugins/themes other than WooCommerce itself, or you can use the WP debug log to view errors. If there are ‘fatal errors,’ this may be the problem.
What is a dedicated SMTP provider? Is that like my Gmail account?
A dedicated SMTP provider is similar to a web host in that you have an account and use their servers. The difference is instead of hosting websites, you use their servers to send emails. Gmail is an email provider where you send and receive emails; a dedicated SMTP provider is similar to having half of Gmail, where you only send emails and not receive them.
Can I use Gmail as my SMTP provider?
Yes, but it is not ideal. Gmail will disable your account if you send emails to more than 500 unique recipients in an 24-hour period. This includes emails you send yourself and all emails your website is sending. More at: Google Support: Gmail Answers.
Suggested Dedicated SMTP Providers
There are dedicated SMTP providers that work for most websites. All have their own plugin on WordPress.org, can be installed from your WordPress dashboard, and have support available to help you get started.
- Mailjet (Plugin) – Send 6,000 emails free per month.
- Sendinblue (Plugin) – Send 300 emails free per day.
- SendWP (Plugin) – it costs $9/ month for an account.
- Amazon SES (Plugin) – Send 62,000 emails free per month if your website is hosted on AWS or pricing starts at $0.10 for every 1,000 emails.
How does email work?
Comparing a path an email takes to reach its destination vs. driving a car on a road trip, emails do not travel directly from point A to point B. The final destination is more like point W, and the email is bouncing from one server to another at the speed of light while being filtered at each step.
Google has compiled this representation of the path an email follows. This story is specific to Gmail and delivering to a mobile device but helps explain how email works. More at: Story of Send.
How does email work with WordPress?
WooCommerce, and most plugins sending email, send mail by using the wp_mail() function that is a core function of WordPress.
Does that mean WordPress sends my email? Is WooCommerce sending the email?
Neither are sending the email. What happens is WooCommerce calls the wp_mail() function, which then requests WordPress to send the email. Because WordPress is not an email server, it typically asks PHP to send the email for it. PHP then checks for a local email server within the web server and tells that email server to send the email. Your email takes three steps before reaching your web server.
If email is passed to my web server to be sent, how does a dedicated SMTP provider fit in?
By using a plugin the SMTP provider has available or the Post SMTP plugin, the wp_mail() function reroutes the email from PHP to your SMTP provider. From there, the SMTP provider receives the request and adds your email to a queue to be sent.
If emails are being blocked by spam filters, why is it not in my spam folder?
The spam filter is the last and final spam filter your email is filtered through, at which point it is going to spam based on your email client settings or how you mark other emails as spam. If your emails are denied by another spam filter before that, it simply is not delivered.
My contact form emails work, so why do WooCommerce emails get blocked?
Without deep investigation into server logs and tracking exact email paths, this is not a simple question to answer.
- The short version is there is a lot more to spam filters than scanning for typical spam. Spam filters check the IP address of origin, the sending user and domain, the amount of email that IP/sender has sent, how many times emails from that sender have been marked as spam, and the wording of emails.
- The most common factor is where the email originates, which brings your overall score with spam filters down low enough that even minor differences in wording and formatting of WooCommerce emails may be flagged as spam and not sent.
Can I send purchased downloadable files as attachments in the Order Completed and Invoice emails?
Yes! Add this snippet to the end of your theme’s functions.php
file:
Resources
SenderScore by ReturnPath
Check and monitor the reputation of your websites IP address for sending emails, if you have your own dedicated server for sending emails. You can also use this for shared and virtual hosting environments, but it is better to get a dedicated SMTP provider instead because those environments are not recommended for sending emails. Visit Senderscore.org to learn more.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article