LifterLMS Emails Not Sending? How to Find and Fix the Cause

Find out why LifterLMS emails are not arriving and fix it: tell sending failures from delivery failures, set up SMTP and a matching sender address, check notification and engagement settings, unblock the background queue and read the logs.

  • Add as a preferred source on Google
Illustration for “LifterLMS Emails Not Sending? How to Find and Fix the Cause”

When LifterLMS emails are not sending, students miss welcome messages, receipts and certificates, and your inbox fills with "I never got the email". The cause is rarely LifterLMS itself. Almost always it is one of four things: the server cannot deliver mail reliably, the sender address fails authentication, the email was never switched on, or the background queue that sends it is stuck.

This guide walks through them in the order that finds the problem fastest. It is written for site owners comfortable in the WordPress admin, with a few checks a developer or host may need to run.

How LifterLMS sends email

Knowing which kind of email is missing narrows the search. LifterLMS sends three kinds, and they travel different routes before reaching WordPress's wp_mail() function:

KindExamplesHow it is sent
Notification emailsPurchase receipt, student welcome, lesson or course complete, upcoming payment reminderQueued, then sent by a background process that runs in a separate request
Engagement emailsEmails you created under Engagements > Emails and attached to a triggerSent immediately when the trigger happens, or scheduled through the Action Scheduler if the engagement has a delay
Account emailsPassword reset from the LifterLMS login formSent straight away during the request

All three use the Sender Name and Sender Email from LifterLMS > Settings > Engagements. Notice the pattern: if password resets arrive but receipts do not, mail delivery works and the queue is the suspect. If nothing arrives at all, start with delivery.

Step 1: Are LifterLMS emails not sending, or not arriving?

These are different problems with different fixes, so establish which you have before changing anything.

  1. Check spam and quarantine folders for a student who reported the problem, and in your own test inbox.
  2. Send a plain WordPress test email. Most SMTP plugins include a test tool. If WordPress cannot get a test email to your inbox, the problem is delivery, not LifterLMS.
  3. Trigger a LifterLMS email deliberately. Several notifications, including the purchase receipt and student welcome, have a Send a Test option on their settings screen under LifterLMS > Settings > Notifications.
  4. Look at the logs, described in step 5, to see whether LifterLMS believes it sent the message.

Step 2: Fix delivery with SMTP and a matching sender

By default WordPress hands mail to the web server's mail function. Many hosts throttle or block it, and mail that does leave is often unauthenticated, which major providers increasingly reject or file as spam.

Send through an authenticated service

Route WordPress mail through a transactional email provider or your organisation's mail server with an SMTP plugin, for example WP Mail SMTP. Course sites send receipts, password resets and reminders that people genuinely need, so a dedicated transactional service is worth it.

Make the sender address match your domain

This is the LifterLMS-specific trap. Sender Email defaults to the site's admin email address. If that is a Gmail or personal address, or a domain your mail service is not authorised for, receiving servers see a message claiming to be from that address but sent from somewhere else, and SPF, DKIM and DMARC checks fail.

  • Set Sender Email to an address on your own domain, such as learn@yourdomain.com.
  • Use the same address in your SMTP plugin, and authorise your sending service in the domain's DNS: SPF, DKIM and a DMARC policy.
  • LifterLMS applies its sender name and address to its own emails as it sends them. If your SMTP plugin also forces a "from" address, keep the two identical so there is no conflict.

Watch the content

Very short emails consisting of a link, link shorteners and image-only content all raise spam scores. Give engagement emails real text and a recognisable subject.

Step 3: Check the notification and engagement settings

If delivery works but a particular email never appears, check that it is actually switched on for the right people.

Notifications

  1. Go to LifterLMS > Settings > Notifications and open the notification, choosing its Email version.
  2. Under Subscribers, check that the right recipients are ticked: the student, the course author, or custom addresses.
  3. Save, and use Send a Test where available.

Engagements

  • Both posts must be published. The engagement and the email template it sends are separate posts. A draft at either end stops the send.
  • Check the Triggering Event and its target. "Student completes a lesson" for one specific lesson will not fire for any other lesson.
  • Check the Engagement Delay. A delay in days schedules the email for later rather than sending it now.
  • Know the duplicate check. LifterLMS records each engagement email sent to a student for the related course or lesson and will not send the same email for the same item again. Retesting with the same student and course looks like a failure but is working as designed. Test with a fresh student.

Our guide to LifterLMS engagements and automated emails covers building them correctly in the first place.

Step 4: Unblock the background queue

Notification emails are not sent during the page load that triggered them. LifterLMS queues them and starts a background process by making a request back to your own site, a so-called loopback request. Delayed engagements wait in the Action Scheduler, which relies on WP-Cron and loopback requests too. If those requests fail, emails sit in the queue indefinitely.

Common causes:

  • Password protection on the whole site, such as HTTP basic authentication on a pre-launch or staging site, blocks the loopback.
  • Security plugins, firewalls or a CDN rejecting requests from the server's own IP address.
  • DISABLE_WP_CRON set to true in wp-config.php without a real server cron job calling wp-cron.php.
  • Very low traffic: WP-Cron only runs when someone visits, so a quiet site may send late.

How to check:

  1. Open Tools > Site Health. Failed loopback requests and late scheduled events are reported there.
  2. Open LifterLMS > Status > Scheduled Actions and look for overdue pending actions or failed ones with an error message.
  3. If cron is disabled, ask your host to run WP-Cron every five minutes from the server, for example with WP-CLI: wp cron event run --due-now.

Cron problems also stop renewals and drip, so if you find one here, read our guide to recurring payments that do not process as well.

Step 5: Read the LifterLMS logs

LifterLMS writes log files you can read under LifterLMS > Status > Logs. Two are useful for email:

  • notifications: the background sender logs each notification it processes, and writes "Error sending email notification" when wp_mail() reports a failure.
  • engagement-emails: one line per engagement email, ending "sent successfully", "not sent because of dupcheck" or "not sent due to email sending issues".

"Sent successfully" means WordPress handed the message to your mailer. If the student still never received it, the problem is downstream, with your SMTP service or the recipient's mail server, and that service's own log is the next stop.

To see why wp_mail() failed, log WordPress's own failure message into the same log screen. Add this to a small custom plugin while you debug:

<?php
add_action( 'wp_mail_failed', 'llmsx_log_mail_failure' );
function llmsx_log_mail_failure( $error ) {
	if ( ! function_exists( 'llms_log' ) ) {
		return;
	}
	$data = $error->get_error_data();
	$to   = isset( $data['to'] ) ? implode( ', ', (array) $data['to'] ) : '';
	llms_log( sprintf( 'wp_mail failed (%s): %s', $to, $error->get_error_message() ), 'mail-failures' );
}

A new mail-failures log will appear with messages such as SMTP authentication or connection errors. Remove the snippet once fixed, because logs containing email addresses are personal data.

Quick reference: symptoms and causes

SymptomMost likely cause
No email of any kind arrivesServer mail blocked or unauthenticated; set up SMTP
Emails land in spamSender Email on a domain without SPF, DKIM and DMARC for your sending service
Password resets arrive, receipts do notBackground queue blocked by basic auth, firewall or disabled cron
Emails arrive hours lateWP-Cron depends on traffic; add a server cron job
One engagement email never sendsDraft engagement or email, wrong trigger target, or a delay
Works once, not when retestedEngagement duplicate check; test with a new student
Staff copies missingSubscribers not ticked on that notification

Frequently asked questions

Does LifterLMS need an SMTP plugin?

LifterLMS does not require one, but a reliable course site does in practice. Without authenticated sending, receipts and password resets are likely to be delayed, rejected or filed as spam.

Why do LifterLMS emails come from my admin address?

Because Sender Email defaults to the site's admin email. Change it under LifterLMS > Settings > Engagements.

Can I resend an engagement email to a student?

Not by retriggering the same engagement for the same course or lesson, because of the duplicate check. Send it manually or use a separate engagement.

Where are LifterLMS log files stored?

In wp-content/uploads/llms-logs/, and you can view them under LifterLMS > Status > Logs.

What to do next

Work through the steps in order: test delivery, fix the sender and SMTP, confirm the email is switched on, clear the queue, then read the logs. Most sites are fixed by step 2.

If emails still go missing, or you suspect cron and queue problems are also affecting renewals and drip, our LifterLMS support team can trace it on your server. Get in touch with a recent example of a missing email.

Add LifterLMS Expert to your preferred sources

Add lifterlmsexpert as a preferred source on Google, or open this article in your AI assistant to use it as a source.

  • Add as a preferred source on Google
VishavjeetChoubeyLifterLMS Expert
Free consultation

Prefer expert help over DIY?

Skip the trial and error. Get specialist LifterLMS help and ship faster.

Talk to a LifterLMS Expert Explore our services

Replies within one business day