Description
LifterLMS is a complete WordPress LMS plugin designed to make it easy to create, launch, and scale online courses from your own website.
- Build structured courses: Create courses with sections, lessons, and quizzes, and track every student’s progress.
- Sell and protect your content: Sell courses and memberships, take payments, and restrict access to members-only content.
- Engage and certify learners: Manage students, award certificates, and report on how they are doing.
- Grow with premium add-ons: Start with the free core plugin, then add extensions for advanced ecommerce, assignments, groups, social learning, private coaching, advanced video, PDFs, and more.
Try LifterLMS for $1: get a 30-day demo site with every premium add-on installed.
Use LifterLMS for course businesses, membership sites, coaching, schools, corporate training, compliance, continuing education, certifications, and client LMS projects.
Own your platform, content, and student data.
What You Can Build With LifterLMS
LifterLMS helps you create and manage many types of online learning websites, including:
- Online course websites
- Training portals
- Membership-based learning sites
- Coaching programs
- Corporate training platforms
- Continuing education websites
- Internal training systems
- Client LMS projects
- Multi-instructor learning platforms
- Course marketplaces
- Private student communities
Not sure which fits you? Explore LifterLMS solutions
A WordPress LMS You Own
Hosted course platforms often limit how you build, customize, price, and grow your learning business. With LifterLMS, you run your LMS on your own WordPress website: choose your hosting, control your content, connect the tools you use, and grow without platform fees based on your number of courses, students, instructors, or revenue. That gives creators, educators, developers, agencies, and organizations complete control over their online learning platform.
Free and Open Source WordPress LMS Plugin
The core LifterLMS plugin is free and open source, with no limits on courses, memberships, enrollments, or earnings. Use it to create courses, build quizzes, manage students, and protect members-only content. When your project needs more, extend it with official add-ons and bundles for payments, advanced quizzes, assignments, groups, social learning, advanced video, private areas, PDFs, notes, continuing education, and more. Start simple and expand as your courses, students, and training programs grow.
We believe in free, distributed learning for all. LifterLMS exists to democratize education in the digital classroom.
Get Started With LifterLMS
Install the free LifterLMS plugin from WordPress.org to start building your LMS, or get a temporary 30-day demo website with LifterLMS and all premium add-ons installed to test the course builder, learner experience, ecommerce settings, reporting tools, and add-ons before deciding which setup is right for your project.
Works With Your WordPress Theme, Block Editor, and Page Builder
LifterLMS works with modern WordPress themes, full-site editing themes, the Block Editor, and popular WordPress page builders, so you can use your existing WordPress site or build a new LMS website around the theme and tools you prefer.
LifterLMS works with:
- Elementor
- Beaver Builder
- Divi
- Custom WordPress themes
- WordPress plugins used for marketing, ecommerce, analytics, forms, automation, and community features
Premium Add-ons and Bundles
Some LMS projects need more than the free core plugin. LifterLMS offers official add-ons and bundles for advanced features, ecommerce, vouchers, student engagement, reporting, integrations, and business growth. See LifterLMS pricing.
See why so many people start with LifterLMS or switch from another WordPress LMS or hosted platform to LifterLMS for their successful online courses, membership sites, and remote schools.
Who LifterLMS Is For
Course creators: Create and sell courses, quizzes, certificates, and memberships from your own website instead of a hosted course platform.
Coaches and consultants: Turn your expertise into guided programs, private coaching offers, memberships, and premium learning experiences.
Schools and educators: Create online learning spaces for students, lessons, assessments, certificates, and course materials.
Training teams: Build internal training, employee onboarding, compliance training, professional development, and client education programs, with groups and group leaders.
Developers and agencies: Build WordPress LMS websites for clients who need courses, memberships, ecommerce, reporting, and custom design.
Membership site owners: Add structured courses to a membership website, restrict learning content, and bundle course access with membership plans.
Organizations and nonprofits: Deliver educational programs, community training, certification paths, or continuing education.
Meet the LifterLMS Team
The LifterLMS team is a diverse group of talented course creators, developers, designers, marketers, and entrepreneurs.
Before creating LifterLMS, we built high-end, custom WordPress learning and membership websites for clients worldwide. LifterLMS was born from that hands-on experience, with the goal of giving WordPress users the kind of LMS tools that previously required custom development.
The team continues to develop LifterLMS as an open-source project while supporting the people who use WordPress for online learning.
Learn more about the people behind LifterLMS.
LifterLMS by the Numbers
- 130 million+ Course & Membership Enrollments
- 151 million+ Courses & Lessons Completed
- 1.8 million+ Achievements Awarded
- 9.7 million+ Certificates Earned
- 308 5-star reviewers
Features
Make Money Teaching Online
Set up LifterLMS and add the Stripe or PayPal payment add-on, or use WooCommerce. That’s all you need to get started. As your business grows, free and premium add-ons help you create more value for your students and increase revenue.
- Credit card payments
- One-time payments
- Recurring payments
- Payment plans
- Unlimited course and membership pricing models
- Checkout
- Free courses
- Course bundles
- Private coaching upsells
- Course and membership coupons
- Bulk course and membership sales
- Affiliate ready
- Native course and membership sales pages
- Offline course and membership sales
- Customizable course and membership enrollment
- Country and currency
- Ecommerce dashboard
- Credit card management
- Subscription switching
- Payment switching
Create Courses on Your WordPress LMS Website
Use LifterLMS to:
- Create multimedia lessons
- Build courses with sections and lessons
- Add quizzes and quiz question banks
- Create assignments
- Use course tracks
- Set course and lesson prerequisites
- Drip lesson content over time
- Add quiz time limits
- Support multiple instructors
- Add lesson downloads
- Import and export courses
- Create discussion areas
- Add course reviews
- Manage group enrollments for courses and memberships
The Course Builder lets you manage sections, lessons, quizzes, and other course elements from one place, without losing sight of how the learning path fits together. Focused lesson and quiz layouts and clear course navigation help students move through course content with fewer distractions.
Engage Your Students
Use LifterLMS to:
- Award achievement badges
- Issue certificates
- Send personalized emails
- Support social learning
- Use student dashboards
- Show learner progress
- Track lesson and course completion
These tools help students understand where they are, what they have completed, and what to do next, and let you follow learner activity. For training programs, that supports completion rates, accountability, and clearer learner progress; for course businesses, a better student experience without manually guiding every learner.
Offer Memberships
LifterLMS includes membership tools, so you can sell more than individual courses: protect content, bundle courses, create members-only areas, and give learners access to a wider learning experience.
Use LifterLMS to:
- Create sitewide memberships
- Create traditional membership plans
- Automatically enroll members into courses
- Restrict non-course content
- Offer members-only payment plans
- Create private group discussions
- Build members-only forums
- Create learning paths for different member levels
Own and Manage Your WordPress LMS Platform
LifterLMS gives you LMS management tools inside the WordPress admin, from registration, student accounts, and passwords to reporting.
Use LifterLMS to:
- View course, membership, ecommerce, and student reporting
- Use a course gradebook
- Send email and SMS notifications
- Manage bulk course and membership enrollments
- Manage course capacity
- Use WordPress LMS user roles
- Manage branding and typography through your WordPress setup
- Test and troubleshoot your LMS
- Use the system analyzer
Get Support for Your WordPress LMS Project
LifterLMS includes documentation, training, setup tools, and support resources to help you build and manage your LMS.
- Technical support
- 30 Days of live weekly onboarding calls called Liftoff Sessions
- Live Office Hours
- Free training courses
- Free training webinars
- Setup wizard
- Detailed documentation
- Dynamic resources
- Demo course
- REST API
- Developer ecosystem
- Recommended Resources for course creators
More Resources
Enhance Your LMS With LifterLMS Add-ons
When your course, membership, or training website needs more advanced tools, extend LifterLMS with official add-ons for assessment, ecommerce, groups, media, private student support, reporting, and learning design.
Advanced LMS add-ons include:
- LifterLMS Advanced Quizzes
- LifterLMS Assignments
- LifterLMS Groups
- LifterLMS Private Areas
- LifterLMS Private Site
- LifterLMS Social Learning
- LifterLMS Advanced Videos
- LifterLMS PDFs
- LifterLMS Notes
- LifterLMS Cart Abandonment Recovery
- LifterLMS Name Your Price
- LifterLMS Course Cohorts
- LifterLMS Continuing Education
- LifterLMS Custom Fields
- LifterLMS Advanced Coupons
- LifterLMS Events
- LifterLMS Gifts
Connect LifterLMS With Your Payment, Email, and Business Tools
Official LifterLMS extensions include:
- LifterLMS Stripe
- LifterLMS PayPal
- LifterLMS Authorize.Net
- LifterLMS WooCommerce
- LifterLMS Kit
- LifterLMS Mailchimp
You can also connect LifterLMS with WordPress plugins for SEO, forms, CRM, forums, page building, analytics, security, caching, backups, community features, affiliates, and marketing automation. It also supports xAPI / Tin Can API workflows and learning authoring tools, and connects to thousands of apps through automation tools such as Zapier.
Run LifterLMS From Any AI Tool You Already Use
LifterLMS is built to work with AI assistants, agents, and automation tools.
Core LMS resources are exposed as WordPress Abilities, so compatible AI and automation tools can discover what your LMS can do and act on it through the same permissions and safeguards used by logged-in WordPress users.
The free core plugin includes AI-ready abilities for:
- Courses, sections, and lessons
- Memberships and access plans
- Students, enrollments, and student progress
- Quizzes, quiz questions, and quiz attempts
- Manual quiz grading
- Student grades and lesson-level progress
- Certificate templates and awarded certificates
- Orders and transactions in read-only mode
LifterLMS add-ons can extend this further.
With supported add-ons such as Assignments, Groups, and Events installed, AI-ready workflows can also cover assignments and submissions, group management, seats, invitations, and events.
LifterLMS can support AI and automation workflows through:
- WordPress Abilities API
- LifterLMS MCP Server
- LifterLMS CLI / WP-CLI
- LifterLMS REST API
- Webhooks for course, enrollment, quiz, order, and certificate activity
Learn more in the LifterLMS AI agent guide
LMS Website and User Experience Design Tools
Use LifterLMS with the modern LifterLMS Sky Pilot Theme for even more beautiful results. LifterLMS works with any well-coded WordPress theme, but check out Sky Pilot if you want to start with a modern, beautiful, full-site editing block-based theme. And consider using our Aircraft page builder plugin to make building beautiful web pages fast using our design template library.
Why People Switch to LifterLMS
The main reasons we hear from users switching to LifterLMS from plugins like LearnDash, Tutor LMS, LearnPress, Sensei LMS, WP Courseware, and MasterStudy LMS (see our shortlist of the best WordPress LMS plugins) are:
- The best most feature-complete customizable well-coded features
- Outstanding customer support including live calls
- The free LifterLMS plugin is amazing making the project affordable
- Memberships, ecommerce, and gamification included in LifterLMS without the need for 3rd party plugins
Hosted course platforms and other WordPress LMS plugins can suit different priorities; LifterLMS is designed for people who want to build and own a WordPress-based LMS they can truly grow with.
Save on LifterLMS With a Bundle
If your LMS project needs several add-ons, a bundle may be a better fit than buying individual extensions. LifterLMS bundles give you access to groups of tools for course creation, ecommerce, design, marketing, automation, student engagement, and advanced LMS features.
Explore:
Scaling LifterLMS
LifterLMS can support anything from a single paid course or a free training resource library to a multi-course academy, a client LMS build, or a larger learning website with multiple audiences. It is lightweight enough for small niche sites while powering huge universities and employee training in Fortune 500 corporations, and we’ve even worked with a site that has 8,019,355 course enrollments.
Because LifterLMS runs on WordPress, performance at scale depends on your hosting, caching, theme, and plugins, all of which you control.
LifterLMS in Action
Explore real LifterLMS websites and customer stories to see how course businesses, memberships, professional training, coaching, schools, and client LMS projects use WordPress for online learning.
What LifterLMS Users Say
“Now I host all my courses on LifterLMS. Totally different experience. I’m free to do things my way. I’ve never yet hit a wall where LifterLMS didn’t enable me to do things the way I wanted.”
Nick Usborne, Teacher and Entrepreneur
“As a former school teacher, professional user experience designer, and current online course creator, I can honestly attribute much of our success to LifterLMS and its consideration for multiple learning modalities, the LMS UI/UX out of the box, and natural student engagement opportunities. In less than 10 months we’ve gone from $0 to $300K in revenue with LifterLMS playing a huge part in that!!”
Sarah Lorenzen, Teacher and Entrepreneur
Join the LifterLMS Community
When you download LifterLMS, you join a thriving community of education entrepreneurs, course creators, developers, LMS professionals, and WordPress enthusiasts. Use it to see what others are building, ask questions, share ideas, and learn from other WordPress LMS projects.
Join the LifterLMS VIP Facebook group to connect with other LifterLMS users, or the LifterLMS Slack community if you prefer Slack.
Contribute to LifterLMS
Developers can review the code, report issues, and suggest improvements in the LifterLMS GitHub repository, helping improve the plugin for the wider WordPress LMS community. Start with the contributing guidelines. You can also help translate LifterLMS for more users around the world through translate.wordpress.org.
What Should You Do Next?
If you are building an LMS with WordPress, start with the free LifterLMS plugin to create your first course, test the learner experience, and see how LifterLMS fits your website. Then choose the next step that matches your project:
Screenshots
Blocks
This plugin provides 18 blocks.
- প্রাইসিং টেবিল Outputs a LifterLMS Pricing table (like those found on a course or membership page) for a course or membership outside of a course or membership. Useful if you want to create custom sales pages.
- চেকআউট Outputs the checkout page for purchasing courses and memberships in LifterLMS.
- সদস্যতা Display a loop of LifterLMS Membership "Tiles" as displayed on the default "Memberships" page.
- Access Plan Button Outputs a button which links to the purchase page for a LifterLMS access plan. Useful if you’re creating custom sales pages for courses or memberships.
- Course Prerequisites Display a notice describing unfulfilled prerequisites for a course.
- কোর্সের সিলেবাস Display the Course Syllabus for a specific course.
- Course Outline Outputs the course outline as displayed by the widget of the same name. Can show full course outline or just the current section outline. Setting the Outline Type to Current Sections refers to the section that contains the next uncompleted lesson for current student. If the student is not enrolled then the first section in the course will be displayed.
- Course Reviews Display reviews and review form for a LifterLMS Course.
- LifterLMS Login Displays the LifterLMS login form. If a user is already logged in, nothing is displayed.
- LifterLMS Register Displays the LifterLMS registration form. If a user is already logged in, nothing is displayed.
- Course Meta Information Display all meta information for a course.
- কোর্স Displays a loop of LifterLMS Course "Tiles" as displayed on the default "Courses" page.
- সার্টিফিকেট শিরোনাম প্রদর্শন শিরোনাম এর একটি সার্টিফিকেট.
- আমার সাফল্য Outputs achievements using the achievement loop templates.
- অবশ্যই লেখক Display the Course Author’s name, avatar, and (optionally) biography for a specific course.
- My Account Outputs the login, registration, dashboard, profile and reset password templates.
- Course Progress with Continue Button Display a progress bar with continue button for a specific course. Renders only for enrolled students.
- LifterLMS Link Add dynamic LifterLMS links to navigation menus.
Installation
Minimum System Requirements
LifterLMS requires:
- PHP 7.4 or later
- WordPress 5.9 or later
- MySQL 5.6 or later
For the best experience, use supported versions of WordPress, PHP, your theme, and your other active plugins.
Review the full system requirements here:
Minimum System Requirements for LifterLMS
Automatic Installation
The easiest way to install LifterLMS is from your WordPress dashboard.
- Log in to your WordPress dashboard.
- Go to Plugins > Add New.
- Search for “LifterLMS”.
- Click Install Now.
- Click Activate.
After activation, LifterLMS will guide you through the setup wizard.
Manual Installation
You can also install LifterLMS manually.
Download the plugin zip file from WordPress.org, then upload it through your WordPress dashboard or by FTP.
For full instructions, see the WordPress guide to manual plugin installation:
Setup Wizard
After installation, LifterLMS launches a setup wizard to help you configure your LMS.
The setup wizard helps you create the core pages your LMS needs, including student account, checkout, course catalog, and membership catalog pages.
You can also import sample courses if you want to explore how a LifterLMS course is structured before building your own.
You can return to the setup wizard later if you need to review or update your setup.
FAQ
-
What is an LMS plugin for WordPress?
-
An LMS plugin lets you create, manage, and deliver online learning from a WordPress website.
With an LMS plugin, you can create courses, add lessons, enroll students, run quizzes, track progress, protect learning content, issue certificates, and sell access to courses or memberships.
-
What is LifterLMS?
-
LifterLMS is the most trusted WordPress LMS plugin for creating online courses, memberships, quizzes, training programs, and learning websites.
You can use it to build a course website, sell training, manage students, protect content, and run your LMS from WordPress.
-
Is LifterLMS free?
-
Yes. The core LifterLMS plugin is free and open source.
You can use the free plugin to create courses, lessons, quizzes, memberships, student dashboards, certificates, and more.
Premium add-ons are available when you need more advanced features, such as payments, assignments, groups, advanced quizzes, private areas, advanced video, PDFs, notes, continuing education, and integrations.
-
Can I create and sell online courses with LifterLMS?
-
Yes. You can create online courses with lessons, sections, quizzes, assignments, downloads, prerequisites, course tracks, and drip schedules.
You can also sell course access using access plans, one-time payments, subscriptions, payment plans, coupons, memberships, and bundles.
-
Do I need WooCommerce to sell courses with LifterLMS?
-
No. LifterLMS has its own checkout and ecommerce tools, and takes payments through the LifterLMS Stripe and PayPal add-ons.
You can also use the LifterLMS WooCommerce extension if your project needs a WooCommerce-based checkout workflow.
-
Can I build a membership site with LifterLMS?
-
Yes. LifterLMS includes membership features.
You can create memberships, restrict content, bundle courses, create members-only areas, and automatically enroll members into courses.
-
Can I use LifterLMS for corporate training or team training?
-
Yes. LifterLMS can be used for employee training, client training, onboarding, professional development, continuing education, and other structured training programs.
With LifterLMS Groups, you can organize learners into groups, assign group leaders, manage bulk enrollments, and support team-based learning.
-
Does LifterLMS support quizzes and assessments?
-
Yes. LifterLMS includes quiz tools in the core plugin.
You can also use LifterLMS Advanced Quizzes and LifterLMS Assignments when you need more advanced assessment options.
-
Does LifterLMS support certificates?
-
Yes. LifterLMS can award certificates and achievement badges based on student activity and course progress.
This can be used for course completion, professional development, continuing education, and other learning milestones.
-
Does LifterLMS work with my WordPress theme?
-
LifterLMS works with modern WordPress themes, full-site editing themes, the WordPress Block Editor, and popular page builders.
It is designed to work with your WordPress site rather than forcing you into one fixed hosted platform layout.
-
Does LifterLMS work with Elementor, Beaver Builder, or Divi?
-
Yes. LifterLMS works with popular WordPress page builders, including Elementor, Beaver Builder, and Divi.
You can also use LifterLMS with the WordPress Block Editor and compatible full-site editing themes.
-
Can I track student progress in LifterLMS?
-
Yes. LifterLMS includes reporting and student management tools.
You can track student enrollments, course progress, lesson completion, quiz attempts, certificates, achievements, memberships, and ecommerce activity.
-
Can I migrate from another LMS to LifterLMS?
-
Many site owners move to LifterLMS when they want to build their LMS on WordPress, own their content, control student data, customize the learner experience, or connect their LMS with the rest of their WordPress tools.
Migration details depend on your current platform, course structure, users, payments, and content format.
-
Where can I get help with LifterLMS?
-
Free plugin users can use the WordPress.org support forum.
LifterLMS customers can access private support through their LifterLMS account.
You can also use the documentation, training courses, webinars, community groups, developer resources, and system analyzer.
-
Where can I buy LifterLMS add-ons or bundles?
-
You can explore official LifterLMS add-ons and bundles on the LifterLMS website.
-
How do I report a security issue?
-
The LifterLMS team takes security issues and vulnerabilities very seriously. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
Please contact the LifterLMS team directly to report a security issue: https://lifterlms.com/security/
Reviews
ডেভেলপার এবং কন্ট্রিবিউটর
“LifterLMS – WP LMS for eLearning, Online Courses, & Quizzes” is open source software. The following people have contributed to this plugin.
কন্ট্রিবিউটর“LifterLMS – WP LMS for eLearning, Online Courses, & Quizzes” has been translated into 27 locales. Thank you to the translators for their contributions.
Translate “LifterLMS – WP LMS for eLearning, Online Courses, & Quizzes” into your language.
ডেভেলপমেন্ট এ আগ্রহী?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
v11.0.1 – 2026-11-04
Bug Fixes
- Adding missing ActionScheduler file. #3444
v11.0.0 – 2026-11-03
New Features
- Added an admin notice for sites on WP Engine with protected media, linking to instructions for more efficient file serving. #3365
- Added CSS custom properties for frontend colors and corner radius so a single override updates related hovers, focus styles, and tinted backgrounds. #2286
- Added a {related_post_title} merge code for engagement emails and certificates which outputs the title of the post that triggered the engagement. #3064
- Added new engagement triggers: course progress percentage reached, course completed with a low grade, quiz failed multiple times, enrollment cancelled or expired, order failed/refunded/cancelled, and daily-scanned inactivity triggers for no course progress, course never started, days since last login, course completion deadline, and abandoned quiz attempts. #3051
- Added unenrollment notification trigger (popup and email) for courses and memberships, disabled by default.
- Added a new ‘Order Failed’ email notification for when an order fails at checkout or after recurring payment retries are exhausted. It is disabled by default and can be enabled for the customer, the product author, and custom recipients.
- Adds a “My Subscriptions” student dashboard tab and per-transaction receipt downloads.
Updates and Enhancements
- Orders now lists transactions (and free orders) with a separate Subscriptions listing, allowing export of transactions and subscriptions to csv.
- Added CSS custom properties for element border width, border style, and surface hover, using the current values as defaults.
- Updated the default password strength message so it no longer says a weak password is required. #3370
- Add-on updates are no longer installed from Add-ons & more. Available updates now link to the WordPress Plugins or Themes screen. #3371
- Explained when a password is rejected because it includes other information from the form. #3401
- Course and membership loop tiles and certificate cards now link only the title, and achievement cards open from a title button. The whole card stays clickable. Featured image alt text uses the image’s alt text, or is left empty. Themes that override the loop template keep the previous wrapping link until that template is updated.
- Improved heading structure, labels, tables, and page titles for quizzes, focus mode, and the student dashboard.
- Updated the bundled Action Scheduler library to version 3.9.3, improving compatibility with PHP 8.4.
- Clarified the help text for course enrollment, course time period, and access plan sale dates to show the exact time each date starts or ends. #3341
Bug Fixes
- Fixed a blank Scheduled Actions tab on the LifterLMS Status page after searching or running a row or bulk action. #3418
- Fixed a “headers already sent” PHP warning when a logged-out visitor views the checkout page and another plugin has already flushed the page output. #3425
- Fixed a PHP warning on REST API instructors collection requests that return no results. #3439
- Display an error message when the checkout form is submitted with an expired security nonce instead of silently reloading the form. #3422
- Fixed the permalink of a newly created quiz not being clickable in the Course Builder after saving. #3414
- Fixed icon spacing on LifterLMS buttons rendered with an icon and no supporting CSS from a theme or plugin.
- Fixed the student dashboard mobile navigation not navigating to the selected endpoint when the Go button is clicked.
- Fixed manual entry of datepicker dates being mis-parsed on sites using a non-US date format.
- Fixed lesson progression button layout and text alignment in the block editor.
- Course and membership loop titles use their previous size and weight again now that they are h2 or h3 headings.
- Fixed a PHP fatal error when viewing a course’s grades page on the student dashboard using the course ID instead of its slug.
- Fixed frontend notification toasts overlapping when several are displayed at once.
- Fixed frontend notification toasts stacking with extra space between them when the theme adds margins to notifications.
- Improved customer search in the combined orders and transactions table to match a customer’s full name.
- On the order update payment method form, only the submit button is now labeled “Reactivate Subscription” for subscriptions pending cancellation.
- Fixed a PHP 8.1+ “Automatic conversion of false to array is deprecated” notice when uploading a protected non-image file.
Developer Notes
- Updated
AGENTS.mdwith the add-on and theme repositories agents can clone and how to build them. - Replaced
[version]placeholders left in deprecation and_doing_it_wrong()notices with the versions they refer to, and release tooling now replaces any'[version]'string, including in multi-line calls. - Release preparation bumps the REST API library version when the library changed since the last release, and replaces its
[version]placeholders with that version.
Performance Improvements
- Replaced the unbounded order exclusion list in the Orders & Transactions report with an indexed
_llms_has_transactionorder flag, backfilled via a batched background migration, for better performance on large stores. - Improved performance of REST API collection requests and of the protected media folder check in the admin.
Security Fixes
- Additional checks when serving protected media.
- Additional checks on reporting collection requests.
- Additional checks on REST enrollment collection requests.
- Additional checks on quiz attempt answers.
- Additional checks on REST API collection requests.
- Additional checks when authorizing access to protected media.
- Additional checks when protecting the media uploads folder.
- Additional checks on restricted content in post type listings.
- Additional checks on restricted content in feeds.
- Additional checks on restricted content in search results and archives.
- Additional checks on timed quiz answers.
- Additional checks on REST API sections and access plans requests.
- Additional checks on student management table requests.
- Additional checks on webhook topics.
Updated Templates
- templates/achievements/template.php
- templates/admin/receipt-transaction.php
- templates/certificates/preview.php
- templates/checkout/form-switch-source.php
- templates/content-single-question.php
- templates/loop/content.php
- templates/myaccount/form-edit-account.php
- templates/myaccount/my-grades-single-table.php
- templates/myaccount/my-notifications.php
- templates/myaccount/my-subscriptions.php
- templates/myaccount/my-transactions.php
- templates/myaccount/navigation.php
- templates/myaccount/receipt-transaction.php
- templates/myaccount/view-order-transactions.php
- templates/quiz/questions/content-choice.php
- templates/quiz/questions/content-picture_choice.php
- templates/quiz/results.php
- templates/single-lesson-focus.php
v10.3.2 – 2026-10-09
Security Fixes
- Additional checks when loading templates.
v10.3.1 – 2026-10-08
Updates and Enhancements
- Captcha secret keys are partially hidden in Security settings after they are saved. #3387
Bug Fixes
- Additional fix for the plan description editor when adding a new access plan in some cases.
- Clear the post cache after migrating a post to the block editor.
Security Fixes
- Additional checks on REST API collection requests. Thanks @pokeroot and Huzaifa Jawaid!
- Additional security enhancements.
v10.3.0 – 2026-10-05
New Features
- Course builder shows a permalink preview for unsaved lessons and quizzes, based on the title, until the slug is edited.
- Added an “Add Existing Lesson” button next to “Add New Lesson” in each Course Builder section.
- Added a Customers screen under Orders with lifetime value, order history, and customer segments.
Updates and Enhancements
- Refreshed the course builder settings panels and outline columns.
Bug Fixes
- Fix overlapping percentage sign when entering certificate margins. #3373
- Fixed certificate editor sidebar control layout. #3340
- Improved styling in the back end editor for Lesson Progression and Access Plan buttons. #3359
- Fixed the course builder hiding the lesson editor after saving content added in the builder. #3360
- Fixed editing the access plan description on a new plan before it is saved. #3369
- Fixed a blank line in the order billing address when Address 2 is empty. #3375
- Fixed lesson settings in the course builder jumping back down after the drip method is changed. #3376
- Fixed deleting the last course section immediately adding three new lessons. #3377
- Fixed the course builder dropping quiz questions when the quiz editor is opened again while they are still loading.
- Improved prevention of recurring charges when the site URL no longer matches the stored lock.
- Show address fields that are populated. Thanks @robindevitt! #3020
Security Fixes
- Additional checks on feeds. Thanks @Yo1o-sir!
- Additional checks on REST API endpoints.
- Improved validation of course builder and import data.
Updated Templates
- templates/admin/customers/customer.php
- templates/admin/customers/list.php
- templates/admin/customers/orders-table.php
- templates/admin/customers/orders.php
- templates/admin/customers/overview.php
v10.2.1 – 2026-09-14
New Features
- Added informative notices about available add-ons in the admin.
- Makes Course IDs easier to find. #3321 Thanks @robindevitt!
Updates and Enhancements
- Added a Name Your Price add-on option to the new access plan dialog and removed the Sale template.
- Redirected the setup wizard skip button to the LifterLMS dashboard and added a Launch Setup Wizard link on the plugins screen.
- Updates for PHP 8.4 compatibility.
Bug Fixes
- Fixed interactive blocks not working in focus mode. #3350
- Disabled the Mark Complete button in markup while a lesson’s minimum time is still running, and left it disabled when other progression requirements remain. #3352
Security Fixes
- Hardened certificate export handling. Thanks @s3rt4c!
- Additional checks in admin reporting. Thanks @s3rt4c!
- Additional authorization checks on REST API endpoints. Thanks @s3rt4c and @MrDarkRoot!
Updated Templates
v10.2.0 – 2026-08-24
New Features
- The sections and lessons list endpoints accept
parent_idas an alias for theparentfilter. - Added a read-only REST API endpoint for student grades with per-lesson course grade breakdowns, added a readonly grade field to student progress responses, and registered a student grades ability with the WordPress Abilities API.
- Added time-limited signed download URLs for protected media files, exposed as a download_url field in assignment submission and quiz attempt REST API responses.
- Added a certificate merge code for the student’s display name.
- REST API: added endpoints for quizzes, quiz questions, quiz attempts (including grading), orders and their transactions, certificate templates, and awarded certificates, with new webhook topics and WordPress Abilities API registration.
Updates and Enhancements
- The course students reporting table now sorts by student ID by default instead of by name, avoiding expensive name joins and filesorts on large sites. Columns remain click-sortable.
- Improved cache miss detection and added expiration times to object cache entries for more reliable behavior on persistent object cache backends.
- Student search is not limited to the student role.
- List abilities return an empty list instead of a not-found error for empty collections.
- Ability input schemas reject unknown parameters instead of silently ignoring them.
- List abilities omit rendered markup when a raw counterpart is available, reducing payload size.
- Nested abilities accept id as the parent resource identifier.
- Section and lesson order is optional on create.
Bug Fixes
- Course and membership student exports now honor the boosted export page size, reducing the number of requests required to generate an export file by up to 10x.
- Course reports and exports no longer bulk-create per-lesson time cache rows in user meta, and an automatic database update removes the zero-value rows previously created this way.
- Awarded certificates and achievements now fall back to the template’s post title when the deprecated title meta value is empty.
- Fixed course builder deep links so the lesson or quiz settings panel opens on load. #3328
- Fixed course builder tooltips being clipped by the editor sidebar and outline. #3315
- Fixed stale object cache values for core forms, membership-associated posts, student grades, product active-subscription counts, and theme template override directories on sites using a persistent object cache (Redis, Memcached). #3116
- Fixed automatic recurring payment retries never running when a failed payment placed an active order on hold.
- Fixed media protection block editor labels incorrectly showing “Protect Image” for file, video, and audio blocks.
- Preserve the authorization hook name passed to media upload.
- Ability reads default to the edit context, returning complete resource data.
- Declared and validated the
statusparameter on the REST enrollment update endpoint. - Cached student progress is reset when lesson progress is deleted via the REST API and when lessons or sections are trashed, restored, deleted, or moved to a new parent.
- The lesson REST response emits
completeforquiz.progression, matching the documented schema enum and the accepted input values. - Clarified the REST schema documentation for the
metafield serialization and the enrollmenttriggerdefault. - Ability get and list operations now use the edit context when the caller omits it.
- Hardened quiz attempt answer retrieval.
- Lesson quiz updates keep the quiz’s lesson association in sync.
- Abilities return not-found errors from missing resources.
Performance Improvements
- Course and membership student exports now count the total result set once instead of re-running the count query on every page of the export.
- Improved the performance of the Time in Course column on the course students reporting screen and export by computing course totals with a single query, adding a lesson index to the time sessions table, and skipping all per-student queries when a course has no tracked time.
Security Fixes
- Additional checks on access plan button output. Thanks @thaer-assfour!
- Additional checks on settings save. Thanks @thaer-assfour!
v10.1.1 – 2026-08-11
Updates and Enhancements
- Increased entropy used when generating order keys. Thanks @enterlectury!
Bug Fixes
- Fixed saving when attaching an existing lesson after editing its title or permalink in the Course Builder.
- Fixed the “View add-on details” tooltip being cut off on the Add-ons screen. #3301
- Fixed access plan details not saving when using the course or membership Save button in the block editor. #3256, #3300
- Fixed duplicate engagement emails sent to all recipients when multiple emails share the same triggering post.
- Aligned admin Select2 fields with WordPress 7.0 form control sizing. #3291
- Fixed lesson completion being rejected when the Mark Complete button was clicked the moment the minimum time requirement was reached, before the next time-tracking heartbeat had persisted the elapsed time. #3295
- Prevented a fatal error when cloning a course or creating a course cohort if a cloned lesson or course could not be loaded during prerequisite handling.
Developer Notes
- Corrected the REST API student progress
statusproperty description to reflect the completion status rather than the enrollment status, and noted that the students ability lists LifterLMS students only.
Security Fixes
- Additional checks on checkout completion redirects. Thanks @enterlectury!
- Additional checks when creating users during course import. Thanks @enterlectury!
- Additional authorization checks on REST API key and webhook admin actions. Thanks @enterlectury!
v10.1.0 – 2026-07-31
New Features
- Added WordPress Abilities API (WP 6.9+) integration, registering the LifterLMS REST API endpoints for courses, sections, lessons, memberships, access plans, students, enrollments, and student progress as discoverable abilities for AI clients and automation tools.
- Added a Quizzes subtab to the single course reporting view.
- Added
wp llms course enrollments <id>command to list students enrolled in a specific course. - Added AI agent usage guide (
docs/ai-agents.md) for CLI with patterns for Claude Code, Cursor, Codex, and similar tools. - Added
wp llms course content <id>command to retrieve course structure (sections and lessons) in a single call. - Added course and membership selection to the Pricing Table block. #3239
- Added a HelpScout help beacon to the LifterLMS admin screens.
- Lesson time tracking and minimum time required on lesson enforcement.
- Added an accessible expand control on quiz attempt results so students can discover answer details and clarifications.
Updates and Enhancements
- Adding quiz ID to the lesson listing in the Course Builder. #3024
- Bundled lifterlms-blocks, lifterlms-cli, lifterlms-helper, lifterlms-rest, and banner-notifications directly into core; standalone copies are no longer released separately.
- Limited the pricing table to a maximum of 3 access plan columns per row, using 2 columns when there are exactly 4 plans. #3288
- Added the
wp-element-buttonclass to front-end buttons (pricing tables, checkout, registration, quizzes, dashboard, certificates) so they inherit theme button styling. - Increased the voucher admin “Uses” field width so redemption counts with more than two digits are readable.
Bug Fixes
- Fixed media library attachment detail screen incorrectly showing course-protected files as protected by an assignment submission.
- Fixed media protection URL rewrite failing when a persistent object cache is enabled. Thanks @faisalahammad!
- Added ABSPATH direct file access protection guards. Thanks @faisalahammad!
- Switched the “Add New Plan” access plan dialog to full screen in the editor.
- Fixed course titles showing HTML character codes in block settings. #3239
- Made the course selection dropdown in course blocks searchable. #3239
- Fixed reporting stat tiles becoming misaligned depending on the number and height of tiles shown.
- Fixed course, section, lesson, and quiz titles containing quotes or HTML characters displaying incorrectly in the course builder.
- Fixed the appearance of the custom fields notice on the forms screen under WordPress 7.0. #3161
- Fixed the parent course lookup when setting up lesson data. Thanks @soydiloreto! #3230
- Fixed multi-line quiz question spacing and accessibility on the front end. #3286
- Fixed LifterLMS buttons in the block editor preview inheriting WordPress admin button styles instead of theme button styles.
Developer Notes
- Corrected the docblocks for
get_course()andget_lesson()so the documented$the_course/$the_lessonand$argsparameters match theLLMS_CourseandLLMS_Lessonconstructors they forward to. #2175
Security Fixes
- Additional checks on content restriction in feeds.
- Hardened database queries in the voucher and lesson handler classes.
- Improved redirect handling in content restriction and lesson completion.
- Improved redirect handling in the template loader and lesson progression controller.
Updated Templates
- templates/admin/reporting/tabs/courses/overview.php
- templates/admin/reporting/tabs/courses/quizzes.php
- templates/admin/reporting/tabs/memberships/overview.php
- templates/admin/reporting/tabs/quizzes/attempt.php
- templates/admin/reporting/tabs/quizzes/overview.php
- templates/admin/reporting/tabs/students/courses-course.php
- templates/admin/reporting/tabs/students/information.php
- templates/certificates/actions.php
- templates/content-single-question.php
- templates/course/complete-lesson-link.php
- templates/lesson/minimum-time.php
- templates/myaccount/dashboard-section.php
- templates/myaccount/form-redeem-voucher.php
- templates/myaccount/my-grades.php
- templates/myaccount/my-orders.php
- templates/myaccount/view-order-transactions.php
- templates/product/access-plan-button.php
- templates/product/free-enroll-form.php
- templates/quiz/results-attempt-questions-list.php
- templates/quiz/start-button.php
v10.0.10 – 2026-07-06
Security Fixes
- Additional sanitization of pricing display markup. Thanks Mustafa Ahmed!
- Additional checks on post search AJAX requests. Thanks @devploit!
