LifterLMS Recurring Payments Not Processing? How to Fix Renewals
Why LifterLMS subscriptions stop renewing and how to fix each cause: the staging lock, stalled cron and scheduled actions, gateway problems, declined…
Read articleWork through every common cause of a LifterLMS 404: stale rewrite rules, permalink bases that clash with page slugs, unpublished or detached lessons, dashboard endpoints, the catalog page and plugin conflicts, with WP-CLI checks for developers.
A LifterLMS 404 error usually appears at the worst moment: right after launch, after a migration, or after someone changed a setting. The course exists in the admin, yet visitors get "Page not found". Or courses work but /my-courses/ on the student dashboard does not.
The cause is nearly always one of six things, and the first one fixes most cases in seconds. This guide explains why LifterLMS URLs break, then goes through each cause in order of likelihood, with WP-CLI checks for developers at the end.
Courses, lessons, quizzes and memberships are custom post types, and WordPress only knows how to answer a URL such as /course/intro-to-design/ if a matching rewrite rule exists. LifterLMS registers those rules for its post types, its taxonomies such as course categories, and the student dashboard's endpoints such as my-courses.
WordPress stores rewrite rules in the database and only rebuilds them when told to. Anything that changes the rules without rebuilding them, such as a migration, a changed slug or a newly activated plugin, can leave a URL with no matching rule. The result is a 404 even though the content is there.
Do this first, every time:
According to the WordPress documentation for the Permalinks screen, visiting it already flushes rewrite rules, and saving also rewrites .htaccess on Apache if the file is writable. If WordPress shows rules for you to copy instead, the file is not writable, so ask your host to add them. On Nginx, the server configuration must send unknown URLs to index.php; if every pretty URL 404s, not just LifterLMS ones, that configuration is the problem.
Clear any page cache and CDN cache afterwards, because a cached 404 can outlive the fix.
The same Permalinks screen has a LifterLMS Permalinks section. It controls the first part of each LifterLMS URL:
| Setting | Default | Example URL |
|---|---|---|
| Course Post Type | course | /course/intro-to-design/ |
| Course Archive base | courses | /courses/, when no catalog page is set |
| Lesson Post Type | lesson | /lesson/welcome/ |
| Quiz Post Type | quiz | /quiz/module-1-check/ |
| Memberships Archive base | memberships | /memberships/ |
| Course Category, Tag, Track and Difficulty bases | course-category and similar | /course-category/design/ |
Three things go wrong here:
course, WordPress cannot tell whether /course/something/ is a child page or a course. Keep the single-item bases different from your page slugs.If you do need different URLs, for example /program/ instead of /course/, plan it like a small migration:
/course/(.*) to /program/$1, with a permanent (301) status.If only one item 404s, look at the item rather than the rules.
If the page loads but shows "you do not have access" instead of the content, it is not a 404 at all. See our guide to students who cannot access a course.
Dashboard tabs are rewrite endpoints added to your dashboard page, so /dashboard/my-courses/ only works if all of these are true:
my-courses) or Edit Account (edit-account), has a slug. A blank slug disables that endpoint, so links to it 404.The checkout works the same way: Checkout Page under LifterLMS > Settings > Checkout must be a published page, and its Confirm Payment endpoint needs a unique slug. The course catalog is either the page set as Course Catalog under LifterLMS > Settings > Courses or, if none is set, the Course Archive base. If that page has been deleted, set a new one and refresh permalinks.
For a tour of what each tab shows, see our student dashboard guide.
If permalinks are refreshed and the settings are right, something else is claiming or rewriting the URL.
course or courses will clash. Deactivate leftovers from a previous platform after a migration to LifterLMS.Test on a staging copy with all plugins except LifterLMS deactivated and a default theme active, then reactivate them one at a time. LifterLMS's own troubleshooting guide recommends the same conflict test.
If you have shell access, WP-CLI shows exactly which rule matches a URL:
# Which rewrite rules match this URL?
wp rewrite list --match=/course/intro-to-design/
# Rebuild rewrite rules, including .htaccess on Apache
wp rewrite flush --hard
# Confirm the post exists, and check its status and slug
wp post list --post_type=course --name=intro-to-design --fields=ID,post_status,post_name
# See the LifterLMS permalink bases stored in the database
wp option get llms_permalinks --format=json
If wp rewrite list --match returns no LifterLMS rule, the rules are missing: flush them, and if they still do not appear, a plugin is preventing registration. If a page rule matches first, you have a slug clash.
Rewrite rules are not always rebuilt after a migration, and the new server may not have the right .htaccess or Nginx rules. Re-save the permalinks, then check the server configuration.
The tab endpoints are missing or clashing. Check Student Dashboard Endpoints for blank or duplicate slugs, make sure no child page uses the same slug, and save the Accounts settings.
Not with a setting. Removing a post type base makes WordPress guess between pages and courses, which causes exactly the clashes described above. It needs custom rewrite code and careful testing.
Refresh the permalinks, check the LifterLMS bases for clashes, then check the specific item and the dashboard settings. If the 404s started after a migration or a URL restructure, also plan redirects so you do not lose search traffic.
If you are planning a URL change, a platform move or a cleanup of years of redirects, our LifterLMS migration service can map and redirect every course and lesson URL safely. Get in touch with a few of the broken links.
Why LifterLMS subscriptions stop renewing and how to fix each cause: the staging lock, stalled cron and scheduled actions, gateway problems, declined…
Read article
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…
Read article
Diagnose a LifterLMS lesson that will not mark complete: quiz and assignment requirements, minimum lesson time, cached pages with expired security…
Read articleSkip the trial and error. Get specialist LifterLMS help and ship faster.