LifterLMS – WordPress LMS Plugin


WordPress LMS pluginLifterLMS is a powerful WordPress LMS plugin for WordPress that makes it easy to create, sell, and protect engaging online courses and training based membership websites. LifterLMS is a complete WordPress LMS plugin, course building and LMS solution that works with any well-coded WordPress theme, modern WordPress blocks, and all the popular WordPress page builders (like Elementor, Beaver Builder, Divi, Gutenberg, etc.). As an engaged WordPress community member, LifterLMS actively encourages and helps other great plugins integrate with LifterLMS like Affiliate WP, Monster Insights, WP Fusion, the most popular form plugins, GamiPress, Astra Pro, the Course Scheduler, and many more. You can also connect your WordPress LMS website to 1,500+ other apps via Zapier. LifterLMS is one of only 11 WordPress plugins listed in the Zapier app directory.

As an innovative self-hosted WordPress LMS platfom solution LifterLMS strikes a beautiful balance in being an all-in-one WordPress LMS solution while also integrating with other best of breed technologies relevant to course creators and membership site owners.

Similar to WooCommerce and WordPress, As a WordPress LMS plugin, LifterLMS gives back to the open source WordPress community by contributing the core LifterLMS plugin for FREE for the world to benefit from. The core LMS incredibly powerful and customizable by itself with it’s course building, membership, gamification system, and more. We believe in free distributed learning for all, and our core free open source WordPress LMS plugin helps further tha vision LifterLMS exists to democratize education in the digital classroom.

At it’s core LifterLMS exists to lift up others through education.

You do NOT need a separate ecommerce or membership plugin made by a different company to use LifterLMS! All that and more is included with LifterLMS so you can avoid the “Software Frankenstein” problem (too many plugins made by different companies that don’t work well together have different levels of support). LifterLMS combines LMS features, course building, membership features, ecommerce feautures, and engagement features into one powerful LMS platform tool.

LifterLMS is also known for having a thriving well supported LMS user community through active listening, social engagement, a course library and robust documentation. As a feature complete LMS solution, LifterLMS invests heavily in support and it’s industry leading customer success program. LifterLMS doesn’t just provide LMS software. LifterLMS builds community and invest heavily in supporting the community of LMS site builders.

LifterLMS uses it’s own product to create a helpful course library to help the course building community learn. A company should use it’s own software beyond simple demos. Course creation software made by course builders!

We encourage you to get to know the team of online course building experts behind the WordPress LMS plugin by signing up for a $1 temporary 30 Day website on our servers with the core LifterLMS plugin AND all the premium LMS add-ons installed. This LMS demo site allows you to test drive the core LMS & all the add-ons before you invest. You can practice creating an online course with LifterLMS’s industry leading course builder. Or simply take a course yourself on your demo site to test the course experience out for yourself. You can even add your other favorite plugins & themes to your demo site so you can see them in action together with the LMS.

Are you ready to Try LifterLMS for $1? 🚀

You’ll see why so many people like you are starting with or switching from another WordPress LMS or hosted platform to LifterLMS for online course creation, membership sites, and remote schools.

Who Uses LifterLMS?

  • WordPress Freelancers
  • WordPress Agencies
  • WordPress Educators like Shawn Hesketh at WP101
  • IT Departments
  • Marketing Agencies
  • Entrepreneurs
  • CEU Publishers
  • Schools
  • Organizations
  • Governments
  • Enterprise Companies
  • DIY (Do It Yourself course creators, coaches, and entrepreneurs)
  • Instructional Designers
  • WordPress LMS Industry professionals

What Types of People Use LifterLMS for their WordPress LMS?

1) Builders

The WordPress developers, designers & IT pros who build LMS websites and training portals for clients, employers & themselves

2) Starters

Do-it-yourself innovators who are looking to create high value online courses, coaching or training based membership websites with a WordPress LMS

3) Switchers

People who have outgrown a hosted LMS platform or an incomplete WordPress LMS stack looking for more power, control and better support

Who Makes The Best WordPress LMS Plugin LifterLMS?

The LifterLMS team is a diverse group of talented course creators, developers, designers, marketers and entrepreneurs. Before developing the LifterLMS product we consulted and built custom WWordPress LMS style training based membership sites for clients all over the world. It was through many years experience building high end custom WordPress LMS websites for the expert industry, that the LifterLMS project was born.

Because 5 years ago we couldn’t find a WordPress LMS plugin that provided a rock solid all-in-one foundation for online course based LMS style training based membership websites, we decided to build LifterLMS and contribute the core plugin to you and the WordPress community.

LifterLMS is WordPress LMS, course & membership creation software built by course creators and a talented technical team. We understand WordPress, ecommerce, eLearning, course creation, engagement, gamification, conversion optimization, the website building industry, the LMS industry, and the needs of the online teacher coach, and training professional.

You can learn more about the people behind LifterLMS here.

LifterLMS WordPress LMS By The Numbers …

  • 4,348,041 Course Enrollments powered by LifterLMS
  • 6,570,731 Course and lesson completions powered by LifterLMS
  • 86,807 Achievement badges awarded by LifterLMS
  • 120,728 Certificates awarded by LifterLMS
  • Over 10,000 active installs of the WordPress LMS plugin
  • 181 5 star reviews

LifterLMS Features

Start with our core free WordPress LMS plugin and scale-up as your business grows!

Make Money Building an Education-Based Business

LifterLMS plus one payment gateway like Stripe or PayPal is powerful enough to get you started on your LMS website journey!

  • Credit card payments
  • One-time payments
  • Recurring payments
  • Payment plans
  • Unlimited course and membership pricing models
  • PayPal
  • Subscriptions
  • 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
  • E-commerce dashboard
  • Credit card management
  • Subscription switching
  • Payment switching
  • Native Zapier integration

Create Courses on Your WordPress LMS Website

  • Course multimedia lessons
  • Course quizzes
  • Course builder
  • Drip Content
  • Course and lesson pre-requisites
  • Course tracks
  • Course assignments
  • Quiz time limits
  • Student dashboard
  • Multi-instructor courses
  • Lesson downloads
  • Course import & export
  • Discussion areas
  • Instructional design
  • Forum integrations
  • Graphics pack
  • Course reviews
  • Group enrollments for courses and memberships

Engage Your Students

  • Achievement badges
  • Certificates
  • Personalized email
  • Social learning
  • Private coaching
  • Text messaging

Offer Memberships

  • Sitewide membership
  • Course bundles
  • Traditional memberships
  • Automatic course enrollment
  • Bulk course enrollment
  • Content restrictions outside of a course
  • Members-only payment plans
  • Private group discussions
  • Members-only forums

Integrate your WordPress LMS with the Tools You Need

  • Payment gateways
  • Email marketing
  • Forums
  • Mobile friendly
  • Use any theme or page builder
  • Built for compatibility
  • CRMs
  • E-learning authoring tools
  • Tin Can API (xAPI)

Secure and Protect Your Content

  • Course protection
  • User account management and registration
  • Members only content
  • Course only content
  • Restricted access
  • Password management
  • Self-hosted

Own and Manage Your WordPress LMS Platform

  • Detailed course, membership, ecommerce, and student reporting
  • Course gradebook
  • Email notifications
  • Bulk course and membership enrollments
  • Student management
  • Course and membership access management
  • Web design management
  • Branding & typography
  • WordPress LMS User Roles
  • Security
  • Require terms
  • Scalable
  • Layout
  • Testing tools

Get Support For Your WordPress LMS Project

Further WordPress LMS Reading

Extend and Enhance Your LMS with LifterLMS Add-ons


Increase your LMS website and it’s training program’s value with these engagement add-ons


Integrate your LMS with the third-party tools you know and love

LMS Website and User Experience Design Tools

Make your online course creations and WordPress LMS platform beautiful


Our world-class LMS software support has your back and all of our paid products include priority private support with the LifterLMS support team

  • LifterLMS Support Ticket System, ready for any question you have about your LMS
  • Liftoff Sessions access with live screensharing to help you get started with the LMS software
  • LifterLMS Office Hours is weekly Mastermind group hosted by LifterLMS CEO Chris Badgett and special guests

Save Big on your WordPress LMS with a Bundle

Save money while unlocking the full potential of your course building and LMS platform

  • Level up your online course LMS website with our ecommerce, design, marketing technology, and automation tools with the Universe Bundle
  • Add even more engagement and student transformation potential to your immersive training programs with our entire suite of products including advanced features used by the best teachers, experts, and coaches with the Infinity Bundle

Give The Best WordPress LMS Plugin LifterLMS a Try

There are many ways to take LifterLMS for a test drive before commiting to the WordPress LMS

  • Go ahead and install the free core LifterLMS plugin right now. The free core WordPress LMS plugin is very powerful and customizable.
  • Get a temporary 30 Day website on our servers with the core LifterLMS plugin AND all the premium add-ons installed. This demo website allows you to test drive all the LMS add-ons before you invest. You can also practice creating an online course from scratch and test out the learner experience by enrolling yourself in a course on your demo site. You can even add your other favorite plugins & themes, but this demo site is not something you get to keep after the 30 days are over. Try LifterLMS for $1 now.
  • Another way to test LifterLMS out is to see what the student experience is like. Take a free course on how to build a LifterLMS website in 20 minutes. Take a Free Course now.

Scaling LifterLMS From A Simple Online Course…

LifterLMS is incredibly flexible, customizable and scalable. It can be used for a simple one course website, and it can also be used as course marketplace or multi instructor online school. LifterLMS can handle small sites with low course enrollments, and it’s also used in large universities and inside fortune 500 corporations for employee training.

Unlike hosted LMS software where you would pay monthly for access and pay more as your platform grows, LifterLMS does not charge you more per course. LifterLMS also does not charge you more per instructor or per student or based on your revenue.

Some LifterLMS websites are small in terms of course and membership enrollments by design. Some are quite large in the hundreds of thousand of course enrollments. The largest site we know about has 734,415 course enrollments.

Wether you are going big or keeping it small, LifterLMS can scale to your needs for your online course, membership site, training portal, or remote school.

What Others Are Saying About LifterLMS for Course Building, Membership Sites, and Remote Schools…

“I’ve used a number of course creation and delivery platforms over the years. And they were all fine… right up to the day when they weren’t. The trouble is, they all want you to package and manage your course the way THEY think you should do it. THEIR feature set. THEIR way to do it. Now I host all my courses on LifterLMS. TOTALLY different experience, because 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. Love it! Great support and community too.”

Nick Usborne, Teacher, Entrepreneur serves more than 30,000 members, so it’s no small challenge to migrate to a new membership plugin. We spent more than a year carefully evaluating dozens of LMS and membership plugins before we finally discovered LifterLMS (a membership plugin and LMS plugin combined into one). It was the only plugin that checked all the boxes for our needs for course creation and membership functionality. And the LifterLMS team also shares our passion for creating better online learning experiences. In particular, we deeply resonate with their goal of restoring the human touch to online learning—something that is absent from most online courses today.”

Shawn Hesketh, Owner, WP101

“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 it’s 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!! I’m looking forward to everything that comes next from the creators of LifterLMS!!”

Sarah Lorenzen, Teacher, Entrepreneur

“LifterLMS has been the best decision we have made towards the build out of our course library, online Learning Management System site, and community. The breadth and depth of what LifterLMS offers in a few WordPress plugins exceeds anything else we evaluated as it includes: easy course construction, integrated eCommerce, community capabilities, gamification and the support for delivery of 1-on-1 coaching collaboration services. Lifter also has pre-built integrations with other key WordPress technologies we wanted to use. LifterLMS has attracted a solid community and support network of leading experts to help guide anyone who wants to transform the world or their industry with online training. Chris and the Lifter team are real people, and they care.”

Michael Wolf, CEO, emPowering NOW LLC (Golden XPR)

“I bought/installed LifterLMS yesterday then spent the day having a blast! Two years ago I started writing a book, which morphed into wanting to present the material online in a more interactive way. I started my website from scratch in January and installing the WordPress LMS plugin was a milestone moment! A milestone moment that turned out to be one joy right after the other! I’m always amazed when something is made easy! The LifterLMS product is amazing!! Power to the people! Really quite extraordinary to have something so helpful be able to be in the hands of regular folk.”

Margot Worthy, Author, Teacher

LifterLMS in Action

  • Success Stories — Discover these amazing stories and accomplishments from our community of WordPress LMS website builders.
  • Showcase — Check out these WordPress LMS websites using LifterLMS

Join Our Growing Community of Course Builders, Membership Site Owners, and WordPress LMS Professionals

When you download LifterLMS, you join a thriving community of education entrepreneurs, course creators, developers, LMS professionals, and WordPress enthusiasts. We’re one of the fastest growing open source eLearning communities online, and you are welcome here in our LMS community.

If you’re interested in contributing to LifterLMS, head over to the LifterLMS GitHub Repository to find out how you can pitch in on the open source WordPress LMS software.

Want to add a new language to LifterLMS? Swell! You can contribute language translations to the LMS at

Also I’d like to invite you to the LifterLMS VIP Facebook group so you can check out what other LifterLMS users and course creators are up to and ask questions to the LMS website building community. We also have an engaged LifterLMS Slack community with live developer office hours if you would like to connect in Slack.

The mission of LifterLMS is to democratize education in the digital classroom. Our vision is to lift up others through education.

We invite you to let us guide you to a successful training platform through our WordPress LMS technology, course library, and support systems. We want you to avoid the common online course & general LMS website building mistakes, avoid the Software Frankenstein problem, and NOT waste any time bringing your WordPress LMS website to life.

LifterLMS helps you ACCELERATE.

Here’s What I’d Like You To Do Next …

Install the free LifterLMS plugin on your website from here on WordPress, then …

Try out all the premium WordPress LMS add-ons for $1 by signing up >>HERE<<



  • LifterLMS Courses
  • LifterLMS Pricing Tables
  • LifterLMS Checkout
  • LifterLMS Lessons
  • LifterLMS Achievement Earned
  • LifterLMS Achievement Badges
  • LifterLMS Quiz Results
  • LifterLMS Student Dashboard
  • LifterLMS Certificates
  • LifterLMS Sales Reporting
  • LifterLMS Student Reporting
  • LifterLMS Enrollment Reporting
  • LifterLMS Sidebar Widgets
  • LifterLMS Subscription Management
  • LifterLMS Settings
  • LifterLMS Course Builder
  • LifterLMS Lesson Settings
  • LifterLMS Engagements
  • LifterLMS Email Engagements
  • LifterLMS Course Access Plans
  • LifterLMS Update Upcoming Order Details
  • LifterLMS Lock Down Non LMS Content with Memberships
  • LifterLMS Membership Course Bundles and Auto Enrollment
  • LifterLMS Business to Business Bulk Enrollment Activations with Vouchers


This plugin provides 1 block.

  • Certificate Title Displays the title of a certificate.


Minimum System Requirements

LifterLMS Requires

  • PHP 7.4 or later
  • WordPress 5.6 or later
  • MySQL 5.6 or later

Visit our full system requirements for additional information.

Automatic Installation

This is the simplest way to install LifterLMS as it utilizes WordPress to handle file transfers and you never need to leave the web browser or admin panel.

  1. Log in to your WordPress dashboard.
  2. Navigate to Plugins -> Add New
  3. In the search field type “LifterLMS” and click “Search Plugins”
  4. Once you’ve located LifterLMS click “Install Now”
  5. Once installation is complete, click “Activate”

Manual Installation

To manually install LifterLMS you’ll need to download the zip file using the “Download” link on this screen. You’ll then need to use FTP to manually upload the files to the proper directory on your webserver.

Please see this WordPress Codex document for full instruction on Manual Plugin Installation.

Setup Wizard

After installing LifterLMS for the first time you will be redirected to the Setup Wizard. This wizard will walk quickly configure LifterLMS so you can get to course creating as quickly as possible. At the conclusion you’ll have the option to import a sample course.

You can return to the setup wizard at any time by following these steps.

ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ

Where do I buy LifterLMS add-ons or bundles?

You can explore the individual add-ons here or save BIG with a bundle

Are there any troubleshooting steps you’d suggest I try that might resolve my issue before I post a new thread?

First, make sure that you’re running the latest version of LifterLMS. And if you’ve got any other LifterLMS extensions or themes, make sure those are running the most current version as well.

The most common issues we see are either plugin conflicts, theme conflicts, or outdated servers. You can test if a plugin or theme is conflicting by manually deactivating other plugins until just LifterLMS is running on your site. If the issue persists from there, revert to the default Twenty Fifteen theme. If the issue is resolved after deactivating a specific plugin or your theme, you’ll know that is the source of the conflict. If it is a hosting issue, contact your web host and make sure they’re running the most current version of PHP.

Also be sure to check out the official LifterLMS Knowledge Base.

I’m still stuck. Where do I go to file a bug or ask a question?

Users of the free LifterLMS should post their questions in the plugin’s forum. If you find you’re not getting support in as timely a fashion as you wish, you might want to consider purchasing a product from LifterLMS so you can access the LifterLMS support team.

If you’re already a LifterLMS customer, you can simply log into your account and contact the support team directly on the LifterLMS website. We can provide a deeper level of support in there and address your needs on a daily basis during the work week. Generally, except in times of increased support loads, we reply to all comments within 12 business hours.

LifterLMS is awesome! Can you set it all up for me?

LifterLMS offers technical support, but we do not offer custom website development services. However, we do recommend third party LifterLMS Experts who can help with web design, web development, instructional design or marketing for a fee. Click here to visit the LifterLMS Experts page.

I’m interested in LifterLMS add-ons, but there are a few questions I’ve got before making the purchase. Can you help me get those addressed?

Absolutely. If you’re not finding your questions answered on the product pages, you can ask your presales questions through this contact form. You can also connect live with a member of our team here.

What add-ons are available for LifterLMS, and where can I read more about them?

You can find a full list of official LifterLMS Add-ons here

I have a feature idea. What’s the best way to tell you about it?

We care about your feature ideas and what you have to say. You can request a feature, vote on existing feature requests, and checkout the product roadmap.

I still have questions. Where can I find answers?

Be sure you’ve taken the free tutorial training video course: How to Create an Online Course with LifterLMS. We also encourage you to get to know us by signing up for a $1 temporary 30 Day website on our servers which comes with the core LifterLMS plugin all our add-ons intalled. This demo allows you to test drive all the add-ons before you invest. Check it out here: Try LifterLMS for $1.

I’m interested in contributing to LifterLMS, how can I start?

LifterLMS is an open-source project. We manage our team, developers, issues, and code on GitHub.

We welcome contributions of all kinds, anyone can contribute even if you don’t write code! Check out our Contributor’s Guidelines to get started.

I found a security vulnerability or issue, how can I report it to the team?

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 to report a security vulnerability.

You can review our full security policy at


1 ਅਗਸਤ 2022
A must for all educators, LifterLMS offers an intuitive, easy-to-operate LMS with excellent integration options to make learning easier. The LifterLMS Support Team are prompt in their response should difficult technical issues arise and the online YouTube tutorials are a definite bonus.
1 ਅਗਸਤ 2022
LifterLMS is a very useful and full option plugin. I can recommend it to everyone looking to create online courses. The support team is also amazing and always answers in a timely fashion to any requests you may have.
1 ਅਗਸਤ 2022
LifterLMS is easy to use and has a ton of videos to help you get it set up the way you want. I did buy one of the premium addons but got that in a sale! it's worth it!!
26 ਜੁਲਾਈ 2022
LifterLMS is intuitive and loaded with excellent features to easily launch a learning management system. Their support/setup videos are great and their support team is excellent. Thank you for a great product!
Read all 279 reviews

ਯੋਗਦਾਨੀ ਤੇ ਵਿਕਾਸਕਾਰ

“LifterLMS – WordPress LMS Plugin” is open source software. The following people have contributed to this plugin.


“LifterLMS – WordPress LMS Plugin” has been translated into 23 locales. Thank you to the translators for their contributions.

“LifterLMS – WordPress LMS Plugin” ਦਾ ਆਪਣੀ ਭਾਸ਼ਾ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰੋ।

ਵਿਕਾਸ ਕਾਰਜ ਵਿੱਚ ਰੁਚੀ ਰੱਖਦੇ ਹੋ?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


v6.9.0 – 2022-07-28

Updates and Enhancements

  • Removed site-wide font-weight styles targeting <h1> through <h6> elements. #2217

Bug Fixes

  • Fixed issue preventing decimals from being used for coupon discount amounts. #2149
  • Added AR (Arezzo) to Italy’s states list. #2214

v6.8.0 – 2022-07-12

Bug Fixes

  • Fixed Hello Theme’s word-break and spacing for quiz answer options. #2132
  • Fixed text/label alignment in Twenty-Twenty-Two theme.
  • Fixed regression introduced in version 6.3.0 which prevented the Courses nav item from being customized in the BuddyPress profile nav menu. #2142

Developer Notes

  • Added new filter llms_product_get_restrictions hook to filter the list of restrictions placed on a given product. #2201

v6.7.0 – 2022-06-09

Updates and Enhancements

  • Update LifterLMS Blocks to v2.4.3.
  • Upgraded Action Scheduler to v3.4.1.
  • Upgraded Action Scheduler to v3.4.2.

Bug Fixes

  • Fixed a fatal error on PHP 8+ when restoring a post type from revision. #2164

v6.6.0 – 2022-05-23

PHP Minimum Required Version Change

  • Raised the minimum supported PHP version to 7.4.

WordPress Minimum Required Version Change

  • Raised the minimum supported WordPress core version to 5.6.

New Features

  • Added support for WordPress 6.0.

Bug Fixes

  • Fixed the ability for 3rd party plugins to use the lifterlms_external_engagement_handler_arguments and lifterlms_external_engagement_query_arguments filters.
  • Added automatic exclusion of “no cache” pages from the WP Engine server-side cache when using “pretty” permalinks. #1717
  • Stop subtracting LifterLMS order note comments from global comment counts via the wp_count_comments filter on WordPress 6.0 and later. See related WordPress Trac ticket #19901

v6.5.0 – 2022-05-11

Upcoming PHP Version Requirement Change

This will be the last version of LifterLMS to support PHP 7.3. The next version of LifterLMS, expected before the end of May 2022, will raise the minimum supported PHP version to 7.4. PHP 7.3 reached its official end of life on December 6, 2021. If you are still using PHP 7.3 please upgrade to PHP 7.4 or later as soon as possible.

Updates and Enhancements

Bug Fixes

  • Students who have already completed a lesson will now automatically bypass the lesson’s drip restrictions. #1835
  • Properly encode certificate JS localization data. #2140

Developer Notes

  • Added a new filter, llms_lesson_drip_bypass_if_completed, which controls the automatic bypass of drip restrictions for completed lessons. #1835
  • Allow avoiding error return when updating an LLMS_Post_Model post meta with the same value as the one stored in the database. #909

v6.4.0 – 2022-04-19

Upcoming PHP Version Requirement Change

LifterLMS will drop support for PHP 7.3 by May, 2022. This will raise the minimum supported PHP version to 7.4. PHP 7.3 reached its official end of life on December 6, 2021. If you are still using PHP 7.3 please upgrade to PHP 7.4 or later as soon as possible.

New Features

  • Any “secure” payment gateway options will be automatically masked when written to debug log files.

Updates and Enhancements

  • When building notification content, only parse merge codes used in the notification. #1465
  • Improved checks related to the number of quiz attempts allowed for each student.
  • Prevent browser page caching on quizzes. #2092

Bug Fixes

  • Allowed classes extended from the manual payment gateway class to display payment instructions.
  • Allowed the LLMS_Shortcode_User_Info class to be filtered by the llms_load_shortcodes and llms_load_shortcode_path hooks.
  • Stop using the deprecated FILTER_SANITIZE_STRING constant.
  • Fixed an issue that caused shortcodes to not be replaced in some engagement emails. #2070
  • Improve core forms detection so to exclude duplicates. #2052
  • Added Aosta (AO) to the list of Italian provinces. #2098
  • Fixed a compatibility issue with the Elementor Pro Theme Builder encountered on course and membership catalogs. #2111
  • Fixed an issue where merge codes in reusable blocks on certificate templates were not replaced when the template was displayed or when the certificate was awarded and published. #2058
  • Fixed an issue with OceanWP and Twenty Twenty themes where the Terms and Conditions checkbox was displayed incorrectly. #1938

Developer Notes

  • Added a new filter, llms_secure_strings allowing developers to register strings that should be automatically masked when written to log files.
  • Added new filter llms_no_cache to control whether or not LifterLMS will send nocache headers. #2092
  • Added new filter llms_template_loader_restricted_priority to control the priority of the template_include hook callback used to load restricted content single templates.

v6.3.0 – 2022-04-07

Upcoming PHP Version Requirement Change

LifterLMS will drop support for PHP 7.3 by May, 2022. This will raise the minimum supported PHP version to 7.4. PHP 7.3 reached its official end of life on December 6, 2021. If you are still using PHP 7.3 please upgrade to PHP 7.4 or later as soon as possible.

New Features

  • Automatically add student’s dashboard endpoints to the BuddyPress profile nav. #627

Updates and Enhancements

  • Upgraded LifterLMS Blocks to v2.4.2.
  • Updated LifterLMS Helper to v3.4.2.

Bug Fixes

  • Fixed paged queries in student dashboard not working when using plain permalinks.
  • Fixed an issue that prevented searching students in some admin areas when WordPress was installed in a subdirectory. #2096
  • Fixed lesson’s comments status not reflecting default global setting when created with the course builder. #2099


  • Deprecated LLMS_Integration_Buddypress::achievements_screen() method with no replacement.
  • Deprecated LLMS_Integration_Buddypress::certificates_screen() method with no replacement.
  • Deprecated LLMS_Integration_Buddypress::courses_screen() method with no replacement.
  • Deprecated LLMS_Integration_Buddypress::memberships_screen() method with no replacement.
  • Deprecated LLMS_Integration_Buddypress::remove_courses_paginate_links_filter() method with no replacement.
  • Deprecated LLMS_Integration_Buddypress::modify_courses_paginate_links() method with no replacement.

Developer Notes

  • Added llms_get_paged_query_var() function that returns the page number query var for the current request.
  • Added new filter llms_buddypress_profile_endpoints to control the LifterLMS endpoints to be added to the BuddyPress profile.
  • Added new filter llms_buddypress_min_nav_item_slug to control the LifterLMS main BuddyPress’ nav item slug.
  • Added new filter llms_buddypress_min_nav_item_label to control the LifterLMS main BuddyPress’ nav item label.
  • Added new filter llms_buddypress_min_nav_item_position to control the LifterLMS main BuddyPress’ nav item position.

v6.2.0 – 2022-03-30

Updates and Enhancements

  • Changed the llmsStudentsSelect2() JavaScript function to use the LifterLMS REST API “list students” endpoint instead of the LLMS_AJAX_Handler::query_students() PHP function.
  • Upgraded LifterLMS Blocks to v2.4.1.

Bug Fixes

  • Fixed issue with hidden checkboxes on LifterLMS forms.
  • Fixed a compatiblity issue with the Divi Theme Builder ignoring access restrictions when using template with custom body. #2063
  • Fixed an error encountered on the Engagements > Certificates screen when using the BuddyBoss theme. #2080


Developer Notes

  • Added new filter llms_template_loader_priority to control the priority of the template_include hook callback used to load restricted content templates.

v6.1.0 – 2022-03-23

Upcoming PHP Version Requirement Change

LifterLMS will drop support for PHP 7.3 by May, 2022. This will raise the minimum supported PHP version to 7.4. PHP 7.3 reached its official end of life on December 6, 2021. If you are still using PHP 7.3 please upgrade to PHP 7.4 or later as soon as possible.

New Features

  • Added the {earned_date} certificate merge code.

Updates and Enhancements

  • Changed the label for the {current_date} certificate merge code from ‘Earned Date’ to ‘Current Date’.
  • Updates LifterLMS REST to v1.0.0-beta.24.

Bug Fixes

  • Fixed an issue encountered when editing an order with a completed payment plan. #2067
  • Fixed access of protected LLMS_Abstract_Query properties.

v6.0.0 – 2022-03-08

This major release of LifterLMS focuses on improving the experience of creating, designing, and managing achievements and certificates: use the block editor to design certificates, sync awards with their templates, award achievements and certificates on demand without requiring an engagement trigger, and much more. In addition, this release removes a significant number of previously deprecated classes, methods, and functions. Please read the full Breaking Changes sections for more information on removed code.

New Features

  • The block editor is now enabled by default for certificates when using WordPress versions 5.8 and later.
    • Existing certificates are marked as “legacy” and will continue to use the classic editor until migrated.
    • To migrate a certificate, click the “Migrate Certificate” button. This will force the certificate’s content into blocks.
  • A number of new settings are available to certificates when using the block editor:
    • Set the certificate’s display (and print) size using common paper sizes such as US Letter, US Legal, A3, A4, and more.
    • Set the certificate’s display orientation: portrait of landscape.
    • Set the certificate’s inner margins.
    • Set the certificate’s background color.
  • A new block, the Certificate Title Block, has been made available to certificates.
    • The block works like a WordPress core Heading Block with added options for selecting from a few display fonts (provided by Google Web Fonts).
    • The block controls the title of awarded certificates.
  • Added the ability for administrators and LMS managers to edit earned certificates/achievements from the students reporting screen, as well as award new certificates/achievements to students.
  • Added the ability to sync awarded certificates with the template used to generate them. #1078
  • The post_name of earned certificate posts will be generated with a randomized 3+ character string in favor of relying on sequential numbers.
  • Added certificate global options for the default size of new certificates and certificate templates.
  • Certificate and email template merge code buttons now include [llms-user] information shortcodes.
  • Added certificate sequential ID functionality merge code.
  • Added a link to return to the student dashboard when viewing an awarded certificate. #1959
  • Provide additional information to hooks on the student single course reporting screen.

Updates and Enhancements

  • Added new default images for use with achievements and certificates.
    • The site-wide default images can be customized on the admin panel under Settings -> Engagements.
    • The old default images will automatically be used for legacy certificates and can be forced by filtering llms_use_legacy_engagement_images. #1081
  • Certificates no longer use the header.php and footer.php files from the site’s theme, instead custom templates (templates/certificates/header.php and templates/certificates/footer.php) are used instead. These templates are minimal and exclude theme wrappers which reduces the visual conflicts encountered from theme wrappers, backgrounds, and more, especially when printing certificates. #463
  • The achievements and certificates dashboard endpoints are now paginated. #669
  • Added pagination to achievement and certificate reporting pages.
  • The URL of earned user certificates has been changed from “my_certificate” to “certificate”. Requests to the old url are automatically redirected to the new url, including instances where the URL slug has been translated.
  • The URL of certificate template previews has been changed from “certificate” to “certificate-template”.
  • The certificate merge code, {first_name}, now outputs an empty string in favor of falling back to the user’s nickname when there is no first name for the user. #1640
  • The look and behavior of the certificate {{MINI_CERTIFICATE}} pop-over notification merge code now displays a placeholder preview of the certificate in favor of attempting to render a tiny version of the actual certificate. #1950
  • The coupon code in the student’s order details table is now wrapped in a <code> tag instead of an <a> tag. #2033
  • Updates LifterLMS REST to v1.0.0-beta.23.
  • Updated LifterLMS Blocks to version 2.4.0.

Bug Fixes

  • Delayed engagements are automatically unscheduled when the related post is deleted.
  • A disabled student dashboard endpoint will no longer display the endpoint’s summary on the main dashboard page. #535
  • Prior to sending a delayed engagement the recipient’s enrollment in the related post is verified resulting the engagement not being triggered if the recipient’s enrollment has been terminated. #290
  • Post search filter boxes on various post tables will now longer display a link to the selected post.
  • Basic notification code is no longer loaded on the admin panel.
  • Fixed the label hover on picture type quizzes in some themes. #2015

Database Migration


  • Public access to properties of the abstract LLMS_Database_Query has been deprecated.
    • Public access to class property LLMS_Database_Query::$found_results. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_found_results().
    • Public access to class property LLMS_Database_Query::$max_pages. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_max_pages().
    • Public access to class property LLMS_Database_Query::$number_results. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_number_results().
    • Public access to class property LLMS_Database_Query::$results. The property is no longer publicly writable but can be read via LLMS_Database_Query::get_results().
    • Public access to class property LLMS_Database_Query::$query_vars. The variable as a whole cannot be publicly accessed, instead use LLMS_Database_Query::get() and LLMS_Database_Query::set() to read and write to the array.
    • The above changes were made to the abstract class LLMS_Database_Query but the following concrete classes that utilize the abstract are also affected by this change: LLMS_Query_User_Postmeta, LLMS_Student_Query, LLMS_Query_Quiz_Attempt, LLMS_Events_Query, and LLMS_Notifications_Query.
  • Class LLMS_Achievement_User is deprecated with no direct replacement.
    • Method LLMS_Achievement::is_enabled() is deprecated with no replacement.
    • Method LLMS_Achievement::get_blogname() is deprecated with no replacement.
    • Method LLMS_Achievement::format_string() is deprecated with no replacement.
    • Method LLMS_Achievement::get_title() is deprecated with no replacement.
    • Method LLMS_Achievement::get_content() is deprecated with no replacement.
    • Method LLMS_Achievement::get_content_html() is deprecated with no replacement.
    • Method LLMS_Achievement::create() is deprecated with no replacement.
  • Method LLMS_Achievements::trigger_engagement() is deprecated in favor of LLMS_Engagement_Handler::handle_achievement().
  • Class LLMS_Certificate is deprecated with no direct replacement.
    • Method LLMS_Certificate::is_enabled() is deprecated with no replacement.
    • Method LLMS_Certificate::get_blogname() is deprecated with no replacement.
    • Method LLMS_Certificate::format_string() is deprecated with no replacement.
    • Method LLMS_Certificate::get_title() is deprecated with no replacement.
    • Method LLMS_Certificate::get_content() is deprecated with no replacement.
    • Method LLMS_Certificate::get_content_html() is deprecated with no replacement.
    • Method LLMS_Certificate::get_title() is deprecated with no replacement.
  • Method LLMS_Certificates::trigger_engagement() is deprecated in favor of LLMS_Engagement_Handler::handle_certificate().
  • Method LLMS_Engagements::init() is deprecated with no replacement.
  • Method LLMS_Engagements::handle_achievement is deprecated in favor of LLMS_Engagement_Handler::handle_achievement.
  • Method LLMS_Engagements::handle_certificate is deprecated in favor of LLMS_Engagement_Handler::handle_certificate.
  • Method LLMS_Engagements::handle_email is deprecated in favor of LLMS_Engagement_Handler::handle_email.
  • Method LLMS_Database_Query::set_found_results() is deprecated.
  • Class LLMS_Achievement_User is deprecated with no direct replacement.
    • Method LLMS_Achievement_User::has_user_earned() is deprecated with no replacement.
    • Method LLMS_Achievement_User::init() is deprecated with no replacement.
    • Method LLMS_Achievement_User::trigger() is deprecated with no replacement.
    • Method LLMS_Achievement_User::get_content_html() is deprecated with no replacement.
  • Class LLMS_Certificate_User is deprecated with no direct replacement.
    • Method LLMS_Certificate_User::init() is deprecated with no replacement.
    • Method LLMS_Certificate_User::trigger() is deprecated with no replacement.
    • Method LLMS_Certificate_User::get_content_html() is deprecated with no replacement.
    • Method LLMS_Certificate_User::set_shortcode_user() is deprecated with no replacement.
  • Engagement debug logging is removed. Use llms_log() directly instead.
  • Filter llms_db_query_get_default_args is deprecated in favor of llms_{$this->id}_query_get_default_args.
  • Filter llms_certificate_has_user_earned is deprecated in favor of llms_earned_certificate_dupcheck.
  • Unused public class property LLMS_Achievements::$content is deprecated with no replacement.
  • Method LLMS_Admin_Post_Types::meta_metabox_init() is deprecated with no replacement.
  • The site options lifterlms_certificate_bg_img_width, lifterlms_certificate_bg_img_height, and lifterlms_certificate_legacy_image_size are now used only for certificates and certificate templates created using the classic editor.
    • The settings, found on the Engagements Settings screen, are hidden by default.
    • During the database upgrade from versions earlier than 6.x, an site option, llms_has_legacy_certificates is added when at least one certificate is found. This option will display the settings so they can continue to be used for legacy certificates.
    • After migrating all certificates on a site, the settings will still display. In order to remove them from the screen a developer can either delete the option llms_has_legacy_certificates or return false from the filter llms_has_legacy_certificates.
  • Method LLMS_Engagements::handle_certificate is deprecated in favor of LLMS_Engagement_Handler::handle_certificate. #290
  • Method LLMS_Engagements::handle_achievement is deprecated in favor of LLMS_Engagement_Handler::handle_achievement. #290
  • The constant LLMS_ENGAGEMENT_DEBUG is deprecated with no replacement.
  • Engagement debugging via LLMS_Engagements::log is deprecated. Use llms_log() instead.
  • Method LLMS_Engagements::handle_email is deprecated in favor of LLMS_Engagement_Handler::handle_email.
  • Filter lifterlms_register_post_type_llms_my_certificate is deprecated in favor of lifterlms_register_post_type_my_certificate.
  • Deprecated the misspelled protected method LLMS_Database_Query::preprare_query() and replaced with LLMS_Database_Query::prepare_query().
    • Class method LLMS_Events_Query::preprare_query replaced with LLMS_Events_Query::prepare_query().
    • Class method LLMS_Query_Quiz_Attempt::preprare_query replaced with LLMS_Query_Quiz_Attempt::prepare_query().
    • Class method LLMS_Query_User_Postmeta::preprare_query replaced with LLMS_Query_User_Postmeta::prepare_query().
    • Class method LLMS_Student_Query::preprare_query replaced with LLMS_Student_Query::prepare_query().
    • Class method LLMS_Notifications_Query::preprare_query replaced with LLMS_Notifications_Query::prepare_query().
    • Class method LLMS_Notifications_Query::preprare_query replaced with LLMS_Notifications_Query::prepare_query(). #859

Breaking Changes

  • Removed FSE template: templates/block-templates/single-certificate.html.
  • Removed the deprecated LLMS() function in favor of the llms() function.
  • Removed the deprecated the LLMS_SendWP::do_remote_install() method in favor of the LLMS_Abstract_Email_Provider::do_remote_install() method.
  • Removed the deprecated LLMS_Abstract_Email_Provider::output_css() method.
  • Removed the deprecated LLMS_Abstract_Generator_Posts::increment() method.
  • Removed the deprecated LLMS_Admin_Users_Table::load_dependencies() method.
  • Removed the deprecated LLMS_Admin_Import::localize_stat() method.
  • Removed the deprecated LLMS_Admin_Notices_Core::check_staging() method.
  • Removed the deprecated LLMS_Admin_Setup_Wizard::generator_course_status() method.
  • Removed the deprecated LLMS_Admin_Setup_Wizard::output_step_html() method.
  • Removed the deprecated LLMS_Admin_Setup_Wizard::scripts() method.
  • Removed the deprecated LLMS_Admin_Setup_Wizard::watch_course_generation() method.
  • Removed the deprecated llms_format_decimal() function.
  • Removed the deprecated llms_set_person_auth_cookie() function.
  • Removed the deprecated LLMS_Course::sections property.
  • Removed the deprecated LLMS_Course::sku property.
  • Removed the deprecated LLMS_Frontend_Assets::enqueue_inline_pw_script() method.
  • Removed the deprecated LLMS_Frontend_Assets::enqueue_inline_script() method.
  • Removed the deprecated LLMS_Frontend_Assets::is_inline_script_enqueued() method.
  • Removed the deprecated LLMS_Generator::add_custom_values() method.
  • Removed the deprecated LLMS_Generator::add_custom_values() method.
  • Removed the deprecated LLMS_Generator::format_date() method.
  • Removed the deprecated LLMS_Generator::get_author_id_from_raw() method.
  • Removed the deprecated LLMS_Generator::get_default_post_status() method.
  • Removed the deprecated LLMS_Generator::get_generated_posts() method.
  • Removed the deprecated LLMS_Generator::increment() method.
  • Removed the deprecated llms__created action hook from the LLMS_Abstract_Database_Store::create() method.
  • Removed the deprecated llms__deleted action hook from the LLMS_Abstract_Database_Store::delete() method.
  • Removed the deprecated llms__updated action hook from the LLMS_Abstract_Database_Store::update() method.
  • Removed the deprecated llms_user_removed_from_membership_level action hook from the LLMS_Student::unenroll() method.
  • Removed the deprecated and misspelled $purchaseable global variable in the lifterlms_template_pricing_table() function.
  • Removed the deprecated and misspelled $purchaseable global variable in the templates/product/pricing-table.php file.
  • Removed the deprecated LLMS_Frontend_Password class.
  • Removed the deprecated LLMS_Install::db_updates() method.
  • Removed the deprecated LLMS_Install::update_notice() method.
  • Removed the deprecated LLMS_Notifications::dispatch_processors() method.
  • Removed the deprecated llms_processors_async_dispatching filter hook from the LLMS_Notifications::__construct() method.
  • Removed the deprecated LLMS_Notifications::$_instance property.
  • Removed the deprecated LLMS_Person_Handler::register() method.
  • Removed the deprecated LLMS_Person_Handler::sanitize_field() method.
  • Removed the deprecated LLMS_Person_Handler::update() method.
  • Removed the deprecated LLMS_Person_Handler::validate_fields() method.
  • Removed the deprecated LLMS_Person_Handler::voucher_toggle_script() method.
  • Removed the deprecated templates/admin/notices/db-update.php file.
  • Removed the deprecated templates/admin/notices/db-updating.php file.
  • Removed the deprecated llms_usernames_blacklist filter hook in the llms_get_usernames_blocklist() function.
  • Removed the deprecated includes/libraries/wp-background-processing/index.php file.
  • Removed the deprecated includes/libraries/wp-background-processing/wp-async-request.php file.
  • Removed the deprecated includes/libraries/wp-background-processing/wp-background-process.php file.
  • Removed the deprecated LLMS_Section::get_next_available_lesson_order() method.
  • Removed the deprecated LLMS_Section::get_order() method.
  • Removed the deprecated LLMS_Section::get_parent_course() method.
  • Removed the deprecated LLMS_Section::set_parent_course() method.
  • Removed the deprecated LLMS_AJAX::check_voucher_duplicate() method.
  • Removed the deprecated LLMS_AJAX::get_ajax_data() method.
  • Removed the deprecated LLMS_AJAX::register_script() method.
  • Removed the deprecated LLMS_Interface_Post_Audio interface.
  • Removed the deprecated LLMS_Interface_Post_Sales_Page interface.
  • Removed the deprecated LLMS_Interface_Post_Video interface.
  • Removed the deprecated LLMS_Achievements::$_instance property.
  • Removed the deprecated LLMS_Certificates::$_instance property.
  • Removed the deprecated LLMS_Emails::$_instance property.
  • Removed the deprecated LLMS_Engagements::$_instance property.
  • Removed the deprecated LLMS_Events::$_instance property.
  • Removed the deprecated LLMS_Grades::$_instance property.
  • Removed the deprecated LLMS_Integrations::$_instance property.
  • Removed the deprecated LLMS_Payment_Gateways::$_instance property.
  • Removed the deprecated LLMS_Processors::$_instance property.
  • Removed the deprecated LLMS_Sessions::$_instance property.

Developer Notes

  • Added LLMS_Awards_Query, used for querying data about awarded certificates and achievements.
    • The method signature LLMS_Student::get_achievements() and LLMS_Student::get_certificates() now use this class under tho hood.
    • The previous method signature, which passed data into a direct SQL query, is now deprecated.
  • Achievement and certificate data storage locations have been modified, primarily to reduce reliance on the wp_postmeta table which will result in a site-wide performance improvement, especially on large sites.
    • Meta properties _llms_achievement_content and _llms_certificate_content have been removed in favor of WP_Post::$post_content.
    • Meta properties _llms_achievement_title and _llms_certificate_title have been removed in favor of WP_Post::$post_title.
    • Meta properties _llms_achievement_template and _llms_certificate_template have been removed in favor of WP_Post::$post_parent.
    • Meta properties _llms_achievement_image and _llms_certificate_image have been moved the meta property _thumbnail_id in order to utilize the WordPress core’s featured image functionality and internal APIs.
  • Reliance on lifterlms_user_postmeta for achievement and certificate data will be removed in a future release.
    • User postmeta properties _achievement_earned and _certificate_earned will continue to be recorded but are no longer being used internally.
    • The updated_date is now accessible via WP_Post::$post_date.
    • The user_id is now accessible via WP_Post::$post_author.
  • Added new Javascript UI components library, modeled after @wordpress/components. Read more.
  • Added a new SVG icon library, modeled after @wordpress/icons. Read more.
  • The merge code button seen on certificate and email template editors is now an SVG image instead of a PNG.
  • Added utility function for escaping and quoting strings. #1027
  • Added the ability to force an admin metabox field value through the new meta arg. #2016
  • Added new utility function for stripping prefixes from strings.

Performance Improvements

  • Increased the number of files that are autoloaded instead of manually loaded.

Updated Templates

Read the full changelog