If emails in your store are not working reliably, please consult this guide for simple solutions.
In this guide, we’ll cover:
Easy Digital Downloads relies on the WordPress core Cron functionality to send emails so that it does not impact the performance and reliability of completing the purchase process.
Check the Order’s Deferred Actions
First, emails will not be sent until the Order is Completed. Next, Deferred Actions are the actions that take place as soon as the order is completed, which includes sending the email receipt and notification. One of the actions is to schedule an event to send the order-related emails 1 minute after the order is marked as completed.
Check the Order Details to see if the Deferred Actions is Completed, if not, that is an indication there is an issue. This process should take 1 minute but could take a couple of minutes depending on external factors, so wait 5 minutes before assuming it’s not working.
If the Deferred Actions are Scheduled (for more than 5 minutes) or Not Run, most most likely cause is Cron is not working. To confirm, install the WP Control plugin can confirm:
- No error message at the top of the WP Control table indicating cron is disabled or not working
- No cron events that are reporting “missed schedule”.
If either is occurring, you’ll need to reach out to your hosting company for assistance. It’s possible they are limiting cron and will need to address it.
As a workaround, you can remove the Deferred Actions for emails by using the following snippet:
add_filter( 'edd_use_after_payment_actions', '__return_false' );
The best way to apply the code snippet to your site is with a plugin that allows you to add custom code to your site. To do that, we recommend using WPCode. Click here to learn how to apply the snippet using WPCode.
This will reinstate the immediate sending of email, however, this will remove any performance benefits we’ve gained in the checkout process related to sending emails. Therefore, it’s recommended you work with your hosting company to get cron working.
Verify emails are sending
A quick test to see whether any of your WordPress emails are being sent is to go to your WordPress login page and click on “Forgot Password”. If you do not get the email sent there, this shows that none of your emails are being sent from WordPress. To solve this, you’ll either need to reach out to your webhost to see why your WordPress emails are not being sent, or switch your email sending to be powered by a 3rd party. To learn more about that, see the section on this page called “Using a third party for email delivery“.
Checking your SPAM or junk folders
Before assuming that your website is failing to send emails, it is very important to ensure they are not being sent to your spam or junk folders. Check your email account’s spam and junk folders as well as all custom message handling rules you may have configured to verify emails are not just missing your inbox. Attempting to send the emails to additional accounts will help further confirm whether the source of the problem is on the sending or receiving end.
If you do find emails sent by your site in your spam folder, you may want to consider using a third-party email delivery service that will improve the reliability and deliverability of your messages. Read more below about using a third party to deliver your site’s emails.
If emails are actually sent but are not ending up in the recipient’s inbox, it is possible that the sending domain has been blacklisted and the messages are being rejected.
To find out if your domain has been blacklisted, enter your domain name into one of these services:
If you do discover that your domain has been blacklisted, you will need to work directly with the blacklist(s) in question to request removal. In some cases, this is as simple as filling out a form on their site. For others, the process is a little more complex and time consuming.
Logging sent emails in WordPress
Within your WordPress site, it is possible to keep a record of emails that are triggered. This does not conclusively verify that the email was sent successfully but it does mean that the site recognized the requirement to send an email and processed the necessary functions to do so.
There are also free email logging plugins available on the WordPress plugin directory such as WP Mail Logging. After loading the plugin, test an order or wait for a live order to complete and confirm the email receipt is logged.
Using a third party for email delivery
Reliable email delivery is incredibly important for eCommerce sites. Unfortunately, non-reliable email delivery is a common problem with cheaper and low-end hosting accounts. See our detailed blog post on the subject. Depending on your hosting account to manage email delivery is not a good idea, especially as hosting accounts are often affected by a number of limitations:
- Low sending limits, sometimes less than 250-500 emails per month
- Slow email processing, resulting in delayed delivery
- Poor support for modern HTML emails, resulting in frequent delivery failures
- Overly aggressive spam filters, resulting in emails getting improperly flagged as spam
- Shared email servers, meaning other accounts with the same company can negatively impact your service
These limitations can frequently result in your emails not working. To resolve the problem, you need to connect your site to a dedicated email delivery service.
We recommend WP Mail SMTP, which is directly integrated into Easy Digital Downloads.
See this article for details on using an SMTP service.
Also, see How to Fix WordPress Not Sending Email Issue for additional assistance and tips.