LifterLMS Community Options: Comments, Forums and Social
Compare the ways to add community to a LifterLMS site, from lesson comments and bbPress forums to BuddyBoss, the Social Learning add-on and external…
Read articleWhen 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.
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:
| Kind | Examples | How it is sent |
|---|---|---|
| Notification emails | Purchase receipt, student welcome, lesson or course complete, upcoming payment reminder | Queued, then sent by a background process that runs in a separate request |
| Engagement emails | Emails you created under Engagements > Emails and attached to a trigger | Sent immediately when the trigger happens, or scheduled through the Action Scheduler if the engagement has a delay |
| Account emails | Password reset from the LifterLMS login form | Sent 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.
These are different problems with different fixes, so establish which you have before changing anything.
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.
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.
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.
learn@yourdomain.com.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.
If delivery works but a particular email never appears, check that it is actually switched on for the right people.
Our guide to LifterLMS engagements and automated emails covers building them correctly in the first place.
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:
DISABLE_WP_CRON set to true in wp-config.php without a real server cron job calling wp-cron.php.How to check:
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.
LifterLMS writes log files you can read under LifterLMS > Status > Logs. Two are useful for email:
wp_mail() reports a failure."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.
| Symptom | Most likely cause |
|---|---|
| No email of any kind arrives | Server mail blocked or unauthenticated; set up SMTP |
| Emails land in spam | Sender Email on a domain without SPF, DKIM and DMARC for your sending service |
| Password resets arrive, receipts do not | Background queue blocked by basic auth, firewall or disabled cron |
| Emails arrive hours late | WP-Cron depends on traffic; add a server cron job |
| One engagement email never sends | Draft engagement or email, wrong trigger target, or a delay |
| Works once, not when retested | Engagement duplicate check; test with a new student |
| Staff copies missing | Subscribers not ticked on that notification |
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.
Because Sender Email defaults to the site's admin email. Change it under LifterLMS > Settings > Engagements.
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.
In wp-content/uploads/llms-logs/, and you can view them under LifterLMS > Status > Logs.
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.
Compare the ways to add community to a LifterLMS site, from lesson comments and bbPress forums to BuddyBoss, the Social Learning add-on and external…
Read article
The criteria that matter when picking a LifterLMS theme, a 30-minute compatibility test you can run on any theme, and an honest look at well-known…
Read article
How LifterLMS detects a staging copy and pauses recurring payments, what the site URL lock is, the wp-config constants that make staging safe by…
Read articleSkip the trial and error. Get specialist LifterLMS help and ship faster.