LifterLMS Import and Export: Clone Courses and Reuse Lessons

How to export a LifterLMS course to a JSON file, import it on another site, clone a course in one click, and reuse lessons with Add Existing Lesson, plus what each method copies and what it leaves behind.

  • Add as a preferred source on Google
Illustration for “LifterLMS Import and Export: Clone Courses and Reuse Lessons”

Sooner or later you will want a copy of a course: a template for next term, a version for a different audience, or the same course on a second website. LifterLMS has four tools for this in the free core plugin, and choosing the right one saves hours of rebuilding.

This tutorial covers the LifterLMS import and export course tools, one-click cloning, and reusing lessons between courses with Add Existing Lesson. It is for course creators and site managers. You will learn what each method copies, what it does not, and the checks to run before the copy goes live.

Behaviour described here was checked against the LifterLMS 10.3 source code.

Which method should you use?

You want toUse
Make a variation of a course on the same siteClone
Move or copy courses to another LifterLMS siteExport, then Import
Keep a backup of a course structure before major editsExport
Use one lesson in another courseAdd Existing Lesson in the course builder
Start from a ready-made courseImport from LifterLMS.com on the Import screen
Move a whole site, with students and ordersA full site migration, not course export

The last row matters. Course export copies content and settings, not people. If students, progress and orders need to move too, you are doing a migration; see our LifterLMS migration guide.

How to export a LifterLMS course

One course

  1. Go to Courses in the WordPress admin.
  2. Hover over the course and click Export in the row actions.
  3. Your browser downloads a .json file named after the course and the date, such as Leadership-Basics_20261027.json.

Several courses at once

  1. Tick the courses on the Courses screen.
  2. Choose Export from the Bulk actions menu and apply.
  3. You get one JSON file containing all of them.

Export several related courses together if they reference each other as prerequisites. The reason is explained in the import section.

What the export file contains

  • The course content, excerpt and settings.
  • Its access plans, with prices and options.
  • Sections, lessons, quizzes and quiz questions, in order, with their settings.
  • Course categories, tags, tracks and difficulty, by name.
  • Author or instructor details, including email address.
  • The featured image URL, plus images embedded in content that are stored in your own media library, and reusable blocks used in the content.

What it does not contain

  • Students, enrollments, progress, grades or quiz attempts.
  • Orders and transactions.
  • Engagements, certificate templates, achievements and emails, which are separate items on your site.
  • Files linked from your content other than images, such as PDFs. The link is copied, the file is not.
  • Videos. Embed URLs are copied as text, so hosted videos keep working if the video host allows the new domain.

Treat the file as personal data, because it includes the author's email address.

How to import a course

  1. On the destination site, go to LifterLMS > Import.
  2. Click Upload, choose the .json file, and click Import.
  3. A success notice lists the imported courses, and any users that were created, with links to each.

The importer only accepts JSON files produced by the LifterLMS exporter. The importing documentation notes that imported courses arrive as drafts with their sections, lessons, quizzes, questions and access plans.

What happens during import

  • Authors are matched by email. If a user with the author's email exists on the destination site, they become the author. If not, LifterLMS creates a new user, which requires the importing account to be allowed to create users with that role.
  • Images are downloaded. The featured image and content images from the source site's media library are copied into the destination media library, so the source site must be reachable during the import.
  • Prerequisites are relinked only within the file. If a lesson or course prerequisite was included in the same import, it points to the new copy. If not, the prerequisite is removed. Course track prerequisites are removed.
  • Every item gets a new ID. Anything that referenced the old IDs, such as shortcodes with a course ID, links to lesson URLs, or members-only access plans tied to a membership, needs checking on the new site.

The upload size is limited by your server's PHP settings. If a large export fails with an upload error, raise upload_max_filesize and post_max_size or ask your host to.

Importing ready-made courses

The same Import screen lists courses and templates you can import directly from LifterLMS.com. The content, including images, is downloaded into your site, and you can edit it like any other course.

How to clone a course on the same site

Cloning is the fastest way to start a new version of an existing course.

  1. Go to Courses.
  2. Hover over the course and click Clone.
  3. A new course appears titled with (Clone) at the end, saved as a draft.

The clone is a full copy, built with the same engine as import: sections, lessons, quizzes, questions and access plans are duplicated as new items. Nothing in the clone is shared with the original, so editing a lesson in one does not change the other. Students are not copied.

Before publishing a clone:

  • Rename it and change the slug. The permalink is based on the "(Clone)" title.
  • Review the access plans. They are copies of the original plans, including prices, sale dates and members-only settings.
  • Check prerequisites and drip dates. Date-based drip settings copy the original dates, which are probably wrong for a new run.
  • Re-create engagements. Certificates and emails triggered by the original course do not fire for the clone until you add engagements for it.

Lessons can be cloned individually too, from the Lessons screen. Memberships do not have Clone or Export actions in core.

Developers can change the clone defaults. This snippet, placed in a small custom plugin, replaces the "(Clone)" suffix with a date stamp:

<?php
add_filter( 'llms_generator_cloned_post_title_suffix', 'llmsx_clone_title_suffix' );

function llmsx_clone_title_suffix( $suffix ) {
	return ' - copy ' . wp_date( 'Y-m-d' );
}

A companion filter, llms_generator_cloned_post_status, controls the status of clones. Leave it as draft unless you have a good reason; publishing clones automatically is how half-finished courses end up in your catalog.

Reusing lessons with Add Existing Lesson

LifterLMS 10.3 added an Add Existing Lesson button next to Add New Lesson in each section of the course builder. Click it, search for a lesson by title, and choose a result. Each result is labelled with what will happen:

  • Attach appears for orphaned lessons, ones that do not belong to any course. The lesson itself moves into this section.
  • Clone appears for lessons that already belong to a course. A copy is added to this section, and the original stays where it was.

This is the key point about reuse in LifterLMS: a lesson belongs to one course. There is no shared lesson that appears in two courses and updates in both. If the same material must stay identical in several courses, put the content in a reusable block (a synced pattern) and insert it in each lesson, so you edit it once.

The builder has matching Add Existing Quiz and Add Existing Question options for quizzes and question banks. To make a lesson available for attaching elsewhere, use Detach on the Lessons screen, which removes it from its course without deleting it. For the rest of the builder, see our LifterLMS course builder guide.

Moving courses between sites: a checklist

  1. Update LifterLMS on both sites to the same version.
  2. Export related courses together so prerequisites survive.
  3. Import on the destination site, ideally a staging copy first.
  4. Open each course in the builder and check every section and lesson is present.
  5. Check images, embedded videos and downloadable files.
  6. Review access plans: prices, currency, members-only settings and redirect URLs.
  7. Set up engagements, certificates and emails.
  8. Enroll a test student and walk through the course, including quizzes.
  9. Publish.

On sites with WP-CLI, wp llms course content 123 prints the outline of course 123, which is a quick way to compare structures on both sites. Paid add-ons that store their own data on lessons, such as assignments, should be active on both sites before you import; test one course before importing the whole catalog.

Common mistakes

  • Expecting students to move with the course. They do not. Course export is content only.
  • Importing courses one at a time. Cross-course prerequisites are dropped when the prerequisite is not in the same file.
  • Publishing a clone without checking dates. Drip dates, enrollment periods and sale dates are copied from the original.
  • Editing a file by hand. The JSON can be edited, but a broken structure fails to import. Keep the original.
  • Importing from a site that is offline. Images are fetched from the source during import. If it is unreachable, they are missing.

Frequently asked questions

Can I export LifterLMS students with the course?

No. The course exporter does not include students or progress. Student lists can be exported from the reporting tables, but moving enrollments and progress needs a migration approach.

Can I import courses from LearnDash or another LMS?

Not with this importer. It only accepts files made by the LifterLMS exporter. Moving from another platform needs a migration script or a manual rebuild.

Does cloning a course copy its access plans?

Yes. The clone gets its own copies of the plans, which you can then change without affecting the original course.

Can one lesson appear in two courses?

No. Add Existing Lesson either attaches an orphaned lesson or clones one that is already in a course. Use reusable blocks to keep shared content in sync.

What to do next

For a new version of a course on the same site, clone it, fix the title, dates and plans, and test it as a student. For a second site, export related courses together and import them onto staging first.

If you are moving a catalog with students, progress and subscriptions, or consolidating several sites into one, that needs more than the course exporter. Our LifterLMS migration service plans and scripts the move so nothing is lost. Tell us what you need to move and we will outline the safest route.

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