LifterLMS Student Can’t Access a Course? How to Diagnose It

A methodical way to find out why a LifterLMS student cannot open a course or lesson: the order LifterLMS checks access in, enrollment and order statuses, expired plans, drip, prerequisites, course dates and membership restrictions.

  • Add as a preferred source on Google
Illustration for “LifterLMS Student Can’t Access a Course? How to Diagnose It”

"I paid but I can't get into the course" is the most common support message on any course site. When a LifterLMS student can't access a course, the plugin is almost always doing exactly what it was configured to do. The job is to find out which rule is applying to this student, on this lesson, right now.

This guide gives you a repeatable diagnosis. It explains the order in which LifterLMS checks access, shows how to see what the student sees, and then walks through enrollment, orders, plan expiration, drip, prerequisites, course dates and memberships. A short developer snippet at the end prints the exact reason for any page.

How LifterLMS decides whether a student can access a course

For any course, lesson, quiz or membership-restricted page, LifterLMS runs one function that returns either "accessible" or a restriction with a reason. The checks run in this order, and the first one that fails decides what the student sees:

  1. Site-wide membership restriction. If the whole site is restricted to a membership, the student needs that membership.
  2. Membership restriction on the item. A page or post restricted to a membership needs an active membership enrollment.
  3. Enrollment. A course or lesson needs an active enrollment in the course. Lessons marked Free Lesson skip this.
  4. Course time period. For lessons and quizzes, the course must have started and not ended.
  5. Drip. The lesson's release date must have passed.
  6. Prerequisites. Any required course, track or lesson must be complete.

One more rule explains why you cannot reproduce the problem as an admin. Roles selected in Unrestricted Preview Access under LifterLMS > Settings > General bypass enrollment, drip and prerequisite restrictions. By default that includes administrators, LMS managers, instructors and instructor's assistants.

Step 1: See what the student sees

Start by reproducing the problem from the student's side. The message they get is the fastest clue.

  • As an admin, use the View as Student option in the admin bar on a course or lesson. It removes the enrollment restriction but keeps drip and course time period restrictions, so it shows you date-based locks. The preview management documentation explains its limits.
  • For a true picture, log in as a test student with the same plan, or ask the student for a screenshot and the exact URL.
Message or behaviourLikely cause
The course's Content Restricted Message, or the course sales contentNo active enrollment
"The lesson ... will be available on ..."Drip
"... cannot be accessed until the required prerequisite ... is completed"Lesson, course or track prerequisite
The course's Course Opens Message or Course Closed MessageCourse time period
Redirect to a membership page or another URLMembership restriction and its Restricted Access Redirect
Logged-out version of the page although they are logged inPage caching, not an access rule

Step 2: Check the student's enrollment status

Go to LifterLMS > Reporting > Students, open the student and their Courses tab. Each course shows its Enrollment Status:

  • Enrolled: active access. If they still cannot get in, move on to steps 4 and 5.
  • Expired: access ended, typically a time-limited plan or a failed order.
  • Cancelled: access was withdrawn, typically after a cancellation, refund or on-hold order.
  • Not listed: they were never enrolled in this course. Check whether they bought something else, or have two accounts with different email addresses.

From the command line, wp llms course enrollments 123 lists the students enrolled in course 123, which is handy for checking a batch. To restore access manually, use the course's Student Management box in the editor; our guide to memberships and access plans explains how enrollment and plans relate.

Step 3: Check the order behind the enrollment

Paid enrollments follow the order. Open Orders, find the student's order, and read its status and notes. LifterLMS changes enrollment automatically when the order status changes:

Order statusEffect on enrollment
Completed, ActiveEnrolled
Pending PaymentNot enrolled yet; the payment never completed
Pending CancellationStill enrolled until the end of the paid period
On Hold, Cancelled, Refunded, or moved to the trashEnrollment set to Cancelled
Expired, FailedEnrollment set to Expired

On Hold surprises people most. When a subscription renewal fails, the order goes on hold while LifterLMS retries the payment, and the student loses access until a payment succeeds. Our guide to recurring payments that do not process covers why renewals fail.

The order's Student Enrollment box lets you change the enrollment status or delete it directly. One subtlety: an order only removes the enrollment it created. If an admin enrolled the student manually and their order later expires, that manual enrollment stays.

Step 4: Expiration, course dates, drip and prerequisites

Expired access plans and course dates

Two different settings can end access on a date, and they are easy to confuse.

  • Access Expiration on the access plan: Lifetime Access, Expires after a period, or Expires on a fixed date. When it passes, the student's enrollment becomes Expired. Check which plan they bought, not just the plan you sell today.
  • Course time period on the course: Enable Course Time Period with a Course Start Date and Course End Date. It locks lessons and quizzes for everyone before the start or after the end, even students who are enrolled. Lessons dripped "After course enrollment" are exempt from this check.

An expired enrollment is renewed by a new purchase or by changing the status manually. A course time period is changed on the course itself.

If the student is enrolled but a specific lesson is locked, look at that lesson's settings.

Drip

Lesson drip methods are On a specific date, After course enrollment, After course start date and After prerequisite completion. "After course enrollment" counts from each student's own enrollment date, so a student who enrolled yesterday will not see week-two lessons that an older cohort can. The course can also drip lessons in bulk through Enable Lesson Drip.

Prerequisites

A lesson can require another lesson (Enable Prerequisite on the lesson); a course can require a course or a course track. If the prerequisite lesson has a quiz with Require Passing Grade enabled, a failed quiz keeps everything after it locked. Our guide to drip content and prerequisites explains the ordering rules.

Step 5: Membership restrictions

Memberships add three more possibilities:

  • Pages and posts restricted by membership. The Membership Access box on a page or post restricts it to members of selected memberships. A student who bought a course but not the membership is redirected according to that membership's Restricted Access Redirect setting.
  • Site-wide restriction. Restrict site by membership level under LifterLMS > Settings > Memberships locks the whole site to one membership.
  • Members-only plans. An access plan with Plan Availability set to Members only cannot be bought by non-members, which looks like a broken checkout.

When a membership is the access layer for courses through Auto Enrollment, ending the membership also removes the course enrollments that came from it.

Step 6: When it is not an access rule

If the enrollment is fine and no rule applies, look outside the access logic:

  • Caching. A cached, logged-out copy of the course page tells a logged-in student to enroll. See our guide to LifterLMS caching conflicts.
  • The wrong account. Students often buy with one email address and log in with another.
  • Unpublished content. A draft lesson returns a "not found" page to students.

For developers, this snippet prints the access decision for any course, lesson or quiz page for a given user. Visit the page as an administrator with ?llmsx_check_user=42 added to the URL:

<?php
add_action( 'wp_footer', 'llmsx_print_access_check' );
function llmsx_print_access_check() {
	if ( empty( $_GET['llmsx_check_user'] ) || ! is_singular() || ! current_user_can( 'manage_lifterlms' ) ) {
		return;
	}
	$user_id = absint( $_GET['llmsx_check_user'] );
	$result  = llms_page_restricted( get_the_ID(), $user_id );
	echo '<pre>' . esc_html( print_r( $result, true ) ) . '</pre>';
}

The reason value, such as enrollment_lesson, lesson_drip, lesson_prerequisite or course_time_period, and the restriction_id tell you which rule and which item to fix. Remove the snippet afterwards.

Frequently asked questions

Why can I see the course as an admin when the student cannot?

Administrators and other roles listed in Unrestricted Preview Access bypass enrollment, drip and prerequisites. Test with a student account.

The student paid, so why are they not enrolled?

Check the order. A Pending Payment order means the payment never completed; an On Hold order means a renewal failed. Either way, enrollment follows the order.

How do I give a student access back?

Fix the cause first, then change the enrollment status in the order's Student Enrollment box or enroll them from the course's Student Management box.

What to do next

Work from the student's message to the rule: enrollment, order, plan expiration, course dates, drip, prerequisites, membership, then caching. Writing the answer to each step into your support macro saves time on the next ticket.

If access problems keep recurring after renewals, imports or a migration, our LifterLMS support team can audit enrollments and orders across the site. Contact us with an example student and course.

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
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