LifterLMS and Beaver Builder: Modules, Templates and Limits

The Beaver Builder integration built into LifterLMS since 8.0: the nine modules, enrollment-based visibility for rows and modules, the default layouts added to courses and lessons, and the limits to plan around.

  • Add as a preferred source on Google
Illustration for “LifterLMS and Beaver Builder: Modules, Templates and Limits”

Beaver Builder has the most complete page builder integration in LifterLMS. Since LifterLMS 8.0 it is part of the free core plugin: course, lesson and membership modules, visibility rules based on enrollment, and starter layouts. It used to be a separate lab in the LifterLMS Labs plugin.

This guide is for site owners, designers and developers building LifterLMS pages in Beaver Builder. It lists every module, shows how the visibility settings work, explains what happens to existing courses when you open them in the builder, and covers the limits we test for on every build. The Elementor and Divi guides cover the other two common builders.

Behaviour described here was checked in the LifterLMS 10.3 source code. The LifterLMS Beaver Builder documentation notes that it works with Beaver Builder Lite or Pro.

Before you start: Labs or core?

If your site has used Beaver Builder with LifterLMS for a while, check LifterLMS > Labs. When the old Beaver Builder lab in LifterLMS Labs is enabled, the integration in core steps aside and the lab's code runs instead. On LifterLMS 8.0 or later, disable that lab so you get the maintained core version, then test a few existing pages. The module names are the same, so layouts built with the lab keep working.

The core integration only loads when Beaver Builder is active. It also enables the builder for Courses, Lessons and Memberships by default, and removes Quizzes and Questions from Beaver Builder's post type list, because those are rendered by LifterLMS and edited in the course builder.

The LifterLMS Beaver Builder modules

In the builder, the modules sit in a LifterLMS Modules group. Some are only offered on the post type they make sense on.

ModuleWhat it showsWhere it is available
Course InformationLength, difficulty, tracks, categories and tagsAnywhere; pick a course or leave blank for the current one
Course AuthorName, avatar and optional bio of the course authorAnywhere; pick a course or use the current one
Course Continue ButtonProgress bar and a button to the student's next lessonAnywhere; pick a course or use the current one
Pricing TableAccess plans for a course or membershipAnywhere; Product Type set to current, a course, or a membership
Course InstructorsInstructors of the current courseCourses only
Course SyllabusSections and lessons of the current courseCourses only
Course Progress BarProgress bar for the current courseCourses only
Lesson Mark Complete ButtonMark Complete or Mark Incomplete, or Take Quiz when a quiz is attachedLessons only
Membership InstructorsInstructors of the current membershipMemberships only

The modules that take a course setting are useful on landing pages. A home page can show a featured course's information, author and pricing table without duplicating that content by hand.

Enrollment-based visibility

This is the feature that makes Beaver Builder attractive for course sales pages. Every row and module has a Visibility setting on its Advanced tab. LifterLMS adds two options to Beaver Builder's usual list:

  • Enrolled Students
  • Non-Enrolled Students and Visitors

Choose one and further fields appear:

  1. In decides what enrollment is checked: Current Course or Membership, Any Course(s) or Membership(s), or Specific Course(s) and/or Membership(s).
  2. For specific items, Match sets Any of the following or All of the following, and you choose them in the Courses and Memberships fields.

A typical course page uses two rows. The first is set to Non-Enrolled Students and Visitors and holds the sales copy, testimonials and pricing table. The second is set to Enrolled Students and holds a welcome message, the continue button and the syllabus. One URL then works as both the sales page and the course home.

Two details from the code are worth knowing. On a lesson, "current course" means the lesson's parent course. On pages and posts that are not courses or memberships, the current option has nothing to check, so use Any or Specific there.

Default layouts and existing courses

The first time you open a course, lesson or membership in Beaver Builder, LifterLMS adds a starter layout below whatever is already there:

  • Courses get a row with Course Information, Course Instructors, Course Progress Bar, Course Continue Button, Course Syllabus and Pricing Table modules.
  • Lessons get a Lesson Mark Complete Button module.
  • Memberships get Pricing Table and Membership Instructors modules.

When you publish from the builder, the post is marked as migrated. From then on LifterLMS stops printing those same elements through its default template hooks, so the modules are the single source and you can move or delete them without getting duplicates. On a lesson only the Mark Complete button moves into a module; the lesson navigation is still added by LifterLMS.

There is also a fuller "LifterLMS Course" layout under LifterLMS templates in the builder's Templates panel, which you can apply when starting a course design from scratch.

If you would rather start from your own saved layouts, the starter rows can be switched off with the llms_beaver_builder_should_migrate_post filter. Do that only if you also have a plan for the default elements, otherwise they stay on and appear below your design.

<?php
// Skip the LifterLMS starter layout for memberships only.
add_filter( 'llms_beaver_builder_should_migrate_post', 'llmsx_bb_skip_membership_layout', 10, 2 );

function llmsx_bb_skip_membership_layout( $migrate, $post_id ) {
	if ( 'llms_membership' === get_post_type( $post_id ) ) {
		return false;
	}
	return $migrate;
}

Limits and gotchas

Page restriction on builder-enabled courses and memberships

This is the one to understand before launch. When Beaver Builder is enabled on a course or membership page that LifterLMS would otherwise restrict, for example a course limited to members of a membership, LifterLMS lifts the page-level restriction. The design assumption is that you control access with the enrollment visibility settings on your rows and modules.

So if a builder-enabled course should be members-only, set every row that holds protected material to Enrolled Students. Lessons are not affected: a locked lesson is still locked, and LifterLMS shows its normal no-access page. Course pages are usually sales pages anyway, but check this on any site that relies on membership restrictions.

Lesson structure stays in LifterLMS

You design lesson content in the builder. Drip schedules, prerequisites, quizzes, time requirements and navigation stay in LifterLMS. Since 10.3 the course builder recognises Beaver Builder lessons and will not overwrite their content from its own lesson editor, so edit lesson text in Beaver Builder and structure in the course builder.

Styling

The modules output standard LifterLMS markup and mostly have no design controls of their own. Expect to add CSS for buttons, the syllabus and access plans. Target LifterLMS classes such as .llms-access-plans and .llms-syllabus-wrapper, not Beaver Builder's generated node IDs, which change when a module is recreated.

Private Areas

If you use the Private Areas add-on for one-to-one coaching, the integration already stops Beaver Builder from replacing a private area's content with the course or membership layout. No extra work is needed.

Beaver Themer

LifterLMS does not document Beaver Themer specifically. If you build singular Themer layouts for lessons or courses, include a Post Content module, because LifterLMS adds its default elements through the post content. Test a locked lesson and an open one before rolling a layout out.

Common mistakes

  • Everything twice. The old Labs lab and core are both being relied on, or a course was designed before migration and then had modules added. Disable the Labs lab and remove duplicate modules.
  • Enrolled-only rows visible to everyone. The row's In setting is "Current Course or Membership" on a normal page. Switch to Specific and pick the course.
  • Pricing table missing. The course has no published access plans, or the module's Product Type points at the wrong item.
  • Visibility rules ignored for logged-in admins. Admins are not enrolled by default. Test with a real student account, ideally in a private browser window.
  • Stale pages after enrolling. Page caching served the visitor version to a student. Exclude logged-in users from page caching; our guide to LifterLMS caching conflicts has the details.

Frequently asked questions

Do I still need LifterLMS Labs for Beaver Builder?

No. The integration has been in core since LifterLMS 8.0. Keep Labs only for other labs you use, and disable its Beaver Builder lab.

Does it work with Beaver Builder Lite?

The LifterLMS documentation says the integration works with Lite or Pro. Lite has limits of its own, so check Beaver Builder's plan comparison for anything you need beyond the LifterLMS modules.

Can I show different content to enrolled students on the same course page?

Yes. Set rows or modules to Enrolled Students or Non-Enrolled Students and Visitors, with In set to the current course.

Can I design quizzes with Beaver Builder?

No. Quizzes and questions are removed from Beaver Builder's post types on purpose. Style quizzes with CSS or template overrides.

What to do next

On staging, disable the old Labs lab if it is on, open one course in Beaver Builder, and build the two-row pattern: sales content for visitors, course home for students. Test with a visitor, an enrolled student and a member of any restricting membership. Then save that layout and reuse it for the rest of the catalog.

If your site depends on membership restrictions, or you want a reusable course layout built and styled once in a child theme, our LifterLMS development service can do it, and our support plans cover testing after updates. Get in touch with a link to the page you want to rebuild.

Add LifterLMS Expert to your preferred sources

Add lifterlmsexpert as a preferred source on Google, or open this article in your AI assistant to use it as a source.

  • Add as a preferred source on Google
Free consultation

Prefer expert help over DIY?

Skip the trial and error. Get specialist LifterLMS help and ship faster.

Talk to a LifterLMS Expert Explore our services

Replies within one business day