If you use WooCommerce, you have more than likely faced an issue with not receiving new order emails and notifications at least once. This can be incredibly frustrating!
I’ve experienced this issue on more than one site using WooCommerce, and it seems that each issue has a different solution. Trying to find the right solution can be challenging and time-consuming when there are so many ways to troubleshoot.
I will list all the solutions I know of, but there are probably many more I have missed. The NEW solution that I discovered is the last solution listed. It is what inspired me to write this blog post in the first place.
How WooCommerce Emails Are Sent
To first understand how to troubleshoot your issue, you should understand how emails are being sent when a WooCommerce order is made. WooCommerce sends emails by using the wp_mail() function which is a core function of WordPress. Since WordPress is not an email server it will ask PHP to send the email. PHP then checks for a local email server and asks that email server to send the email. This sounds a bit messy, doesn’t it? Before your email leaves your web server, it has gone through three loops!
Here is some helpful documentation from WooCommerce to get you started on troubleshooting: http://docs.woothemes.com/document/email-faq/
Here is the list of possible solutions:
Make Sure ALL Your WooCommerce Files Are Updated
This is an easy solution, but it is also easily overlooked. Make sure the WooCommerce plugin and source files are up to date.
Check Hosting Server
Most solutions claim that it has to do with a hosting related issue. You could be prevented from receiving notifications depending on your white-list or spam settings on your server. To help you determine if emails are being sent, use Email Log plugin to view the emails.
Set Up SMTP
Another popular solution is setting up a SMTP server to send your emails. Sending emails via a SMTP server ensures that your emails won’t go into spam folders of the recipients. I recommend using Easy WP SMTP Plugin or SendGrid.
This may not be an ideal solution because it costs money, but Zapier integration with WooCommerce is an awesome solution if you want to automate multiple tasks for each order. Not only can you easily customize notification emails to you and your customer, but you can also send the customer’s data to your CRM, a mailing list provider like MailChimp, an invoicing system, and more! I personally use Zapier because it saves so much time!
Use An Alias Email **New Solution**
I haven’t seen a solution like this anywhere else, so it was the main reason I wrote this post. After hours of trying to figure out why my client wasn’t receiving notifications, this was a lifesaver!
The problem wasn’t with WooCommerce because there were two other emails that were receiving new order notifications. The email that wasn’t receiving the new order emails was an email with the same domain as the website (i.e., Domain with WooCommerce is domainexample.com. Email to get notifications is firstname.lastname@example.org).
Since I had set up Google Apps for my client, and they were the only one not receiving emails, I decided to call Google, which has amazing support BTW. They gave me some great insight:
“Because your website and your Google Apps email address share the same domain name, the mail agent running on the server that hosts your website thinks that it is responsible for mail addressed to your domain name. This is a typical default setting.
When someone submits the form on your website, the mail agent recognizes your domain name and concludes that it should be sending mail to itself. The mail agent will attempt to deliver the message locally, however if you replace your Google Apps email for the test alias the system will recognize it as an external domain and will send the email without any problems.”
As you can see, this is contrary to the popular belief that you should set the notification email the same as your domain.
The solution here is to use an alias email. If you are using Google Apps for your domain, you should automatically have an alias email like so: email@example.com. If you use this alias email instead, your mail agent won’t get confused and send the email without any problems.
That’s it! After I changed the email, it fixed the problem, and my clients received email notifications just fine. If you are not using Google Apps and you are not given an email alias, you may have to use a different email outside of your domain’s email and have those emails forwarded to domain email.