One of the more frequent issues that we hear about day to day is that WooCommerce is not sending emails for new orders (or any emails at all). There are several reasons that this may be happening. The most common reason is that the status of order is such that an email is not going to be sent. Some times the email may not even be enabled, or the server is not sending the emails.
While we do have a great FAQ here, I wanted to quickly go over the reasons for emails not sending.
Something that is really good to know is that WooCommerce does not send emails. It creates emails to be sent by the server, but it does not send email. The same goes with WordPress. WordPress creates all kinds of emails, but WordPress does not send them. That’s the job of the server. This is important to understand for two reasons. 1. Knowing this helps you troubleshoot. 2. Knowing this helps you to understand the solutions.
The first thing you might want to do is get familiar with the WooCommerce Emails. Head over to WooCommerce -> Settings -> Emails and look over the Email notifications. Plugins that you install that create emails will be listed here as well, but for our example I have just a bare bones site installed with just WooCommerce. These are the default emails that come with WooCommerce as of version 3.4.3.
Looking at the first column you can see that there are checkmarks all the way down until we get to Customer note. I have disabled this email for our example. If you are not getting New order emails and you see the same greyed out “X”, then that’s why. For some reason the email has been disabled. The enable/disable box looks like this.
If you click on the New order email you will see a message across the top that says “New order emails are sent to chosen recipient(s) when a new order is received.” Each email is going to have a similar message so that you know what to expect. This means that new order emails are sent when the new order is received and this email is going to the Store Owner or whoever else you have in that field. This does not go to the customer.
To get a better understanding of order in WooCommerce, please read this great bit of documentation. The emails your customer will receive when they place an order are these.
When an order is processing, your customer will receive an email, and when it’s completed, your customer will receive an email. It’s important to understand that if your customer is not getting an email that you want to check the status of their order. This may explain why no email was sent.
I mentioned earlier that WordPress and WooCommerce do not send email. That’s the job of the server hosting your site. WordPress and WooCommerce are responsible for creating the email and then handing those off to the server to deliver.
So how can you tell if your emails are being created but not sent? It’s actually pretty easy. You will want to install a Mail Logging plugin. What this will do is check a page for emails. Simple right? Just install the plugin, send a test order, then check the page. If there is an email there, then WooCommerce has created the email as expected. If not, then there is an issue with WooCommerce or possible a conflicting plugin. It’s important to know if the server is not sending the email or if WooCommerce is not creating them because your path forward is different depending on that.
WP Mail Logging is my mail logger of choice. It’s worth download and getting familiar with.
So let’s say you sent a test order through and the email shows up in the logs. Great. We know WooCommerce is doing what it should. But if customers are not getting their email, and you have already confirmed that it’s not stuck in a SPAM folder, then it’s time to move on to the next step.
Hosting or dedicated SMTP
When email is not sending, it’s time to check with your hosting provider. It’s very common for shared hosting to have email issues. In fact we really suggest that you go with a dedicated SMTP provider. This will bypass the server and use a dedicated service to send your emails, which is great because you do not have to depend on your hosting provider for something as important as emails. A dedicated SMTP (Simple Mail Transfer Protocol) is just that, it’s dedicated to sending your email.
If you prefer not to go this route, then you will at least want to report the email issue to your hosting provider and ask them to get it sorted. Let them know that you have logs that show emails are being created, that will help convince them to check their logs and do what they need to in order to get your email sending again.
I hope this helps the next time email is not sending on your WooCommerce site. Any questions? Feel free to reach out!
Written using Gutenberg.