LifterLMS Migration Guide: Moving to LifterLMS Safely

Course content is the easy part of a move to LifterLMS. Enrollments, progress, active subscriptions and URLs are where migrations go wrong, so map those first and rehearse the whole move on staging.

  • Add as a preferred source on Google
Illustration for “LifterLMS Migration Guide: Moving to LifterLMS Safely”

A migration to LifterLMS is rarely blocked by course content. Lessons are text, video and files, and those can be moved, even if the last resort is copy and paste. What goes wrong is everything attached to the content: who is enrolled in what, how far they got, which subscriptions are still billing, and which URLs your customers and search engines already know.

This guide covers how to plan and run the move from another WordPress LMS such as LearnDash, Tutor LMS or LearnPress, or from a hosted platform such as Teachable, Thinkific or Kajabi. It is specific about which tools exist, what they do, and where you will need manual work or a script.

One rule first: the old system stays live and untouched until the new one has passed a full rehearsal.

What has to move, and what will not move by itself

Start by listing everything the current system holds.

WhatTypical routeWatch for
Course structureMigration tool (LearnDash) or rebuild in the Course BuilderLifterLMS uses course, section, lesson. A fourth level, such as LearnDash topics, becomes lessons.
Lesson content and filesTool, WordPress export, or copy acrossShortcodes and blocks that belong to the old LMS stop rendering once it is removed.
VideoRe-point embeds or re-uploadVideo stored by a hosted platform must be downloaded and re-hosted.
QuizzesTool or rebuildCore has multiple choice, picture choice and true or false. Other types need the Advanced Quizzes add-on or a redesign.
UsersAlready present (same WordPress site) or imported from CSVDo not expect a hosted platform's export to include passwords you can load into WordPress. Plan a password reset.
Enrollments and progressTool, or a script using the LifterLMS REST API or CLIThe built-in LifterLMS importer does not carry these.
CertificatesRebuild the templatesCertificates already earned are records, not only designs.
Orders and subscriptionsUsually not transferableA subscription lives inside one checkout system and one gateway account.
URLsRedirect mapEvery indexed or bookmarked address needs a destination.

Why subscriptions are the hard part

A recurring payment created by another plugin or platform keeps being billed by that system until someone cancels it. LifterLMS orders are created by the LifterLMS checkout and cannot adopt an agreement made elsewhere without custom development. Stripe does offer a payment data import from another processor, but the previous processor has to cooperate, it takes time, and matching LifterLMS orders still have to be created.

One smaller trap: video stored on the old platform goes with the account when it closes. Download it before you cancel anything.

Know exactly what each tool does

LifterLMS has a course exporter and an importer, and it is easy to assume they are a migration tool. They are not. The LifterLMS course importer under LifterLMS > Import reads only the JSON files produced by the LifterLMS exporter. It moves courses between LifterLMS sites: it creates draft courses with their sections, lessons, quizzes, questions and access plans. The export file holds no student accounts, enrollments or progress, so none of that comes across.

From LearnDash

The LifterLMS LearnDash migration page points to Transfer, a paid third-party plugin from Honors WP. By its vendor's description it works only with LearnDash and LifterLMS, and it covers courses, lessons, topics, quizzes and questions along with user data such as course progress. The vendor also lists limits: data belonging to other plugins and custom fields is not transferred, and post IDs change on import.

WP All Import can move post content too, but the same LifterLMS page describes it as content-only: lessons arrive unattached, and you assign them to courses and sections by hand.

From Tutor LMS or LearnPress

We have not found a maintained tool that converts Tutor LMS or LearnPress data into LifterLMS. Plan for a rebuild of the course structure plus a scripted transfer of enrollments and progress. Because all three are WordPress plugins, your user accounts are already in place if you stay on the same site.

From Teachable, Thinkific or Kajabi

Teachable and Thinkific both state in their help centers that a course cannot be exported as a single file. You download videos and files one by one and copy text and quiz content manually. Teachable documents a CSV export of users. Kajabi's help center likewise describes a manual backup of course content, with individual videos downloadable and contacts exportable. The LifterLMS importer does not read user CSVs, so accounts go in through a WordPress user-import plugin or a script.

Scripting the rest

For enrollments and progress, LifterLMS ships a REST API and WP-CLI commands with resources for students, student enrollments and student progress. That is what a developer uses to write a script you can run again: read the old records, create the enrollment, mark the completed lessons.

Build the inventory and the mapping document

Write down what exists and where each item is going.

  • Courses: every course with its lesson and quiz count, and which ones have active learners.
  • Products and prices: each one becomes a LifterLMS access plan (free, one-time, recurring or payment plan). Bundles and all-access offers usually become memberships. Our guide to memberships and access plans explains the options.
  • Quiz question types: each type and its LifterLMS equivalent, or a note that it needs redesign.
  • User groups: active, expired, refunded, staff. Decide who gets enrolled and with what expiry.
  • Active subscriptions: gateway, amount, next billing date, and the decision for each group: leave it billing on the old system until it ends, ask the customer to re-subscribe, or fund a custom transfer.
  • Integrations: email lists, CRM tags, webhooks and forms that depend on the old LMS.
  • URLs: every public course, lesson, sales, login and account address.

Anything without a clean equivalent gets a decision and an owner now, not during cutover.

Rehearse the whole move on staging

  1. Take a full backup, then clone the production site to a staging URL. For a hosted-platform move, set up the new WordPress site there instead.
  2. Stop staging from reaching customers. Put payment gateways in test mode and block outgoing email. When LifterLMS detects that the site URL has changed, it stops automatic recurring payments on the copy and shows a notice, as its staging sites documentation explains. On staging, leave them off.
  3. Run the content migration and check a sample of courses lesson by lesson, including embedded media, downloads and quizzes.
  4. Run the enrollment and progress transfer, then reconcile counts against the source: users, enrollments per course, completions.
  5. Log in as several learner types (new, halfway through, completed, expired) and confirm each sees what they should.
  6. Create the access plans and run test purchases. The steps are in how to sell courses with LifterLMS.
  7. Time the full run and write down every manual step. That list becomes your cutover runbook.

One caution: creating students and enrollments in bulk can trigger LifterLMS notifications and engagement emails. Review LifterLMS > Settings > Notifications and your engagements before a bulk run, on staging and again on production.

Freeze, cut over and redirect

Cutover is a short window in which nothing changes on the old system while you copy its final state.

  • Freeze. Announce a date and time, then stop new enrollments and content edits on the old system.
  • Final sync. Rerun the enrollment and progress transfer so activity since the rehearsal is captured.
  • Switch. Point the domain or deactivate the old LMS, set gateways to live mode, turn email back on, and confirm recurring payments are enabled on the production URL. The Reset Automatic Payments Status tool under LifterLMS > Status > Tools & Utilities brings the choice back if you need it.
  • Redirect. Apply 301 redirects from each old address to its new one. LifterLMS uses /course/ and /lesson/ bases by default and lets you edit its slugs on the WordPress Permalinks settings screen, which can shorten the redirect list if the old site used a similar pattern. Send old login and account pages to the LifterLMS Student Dashboard.
  • Keep a way back. Leave the old system reachable by admins for a while. On a hosted platform, keep the account until the last subscription billed there has ended or moved.

Tell learners what is changing

  • Before the freeze: what is changing, when, and what they need to do. Often that is nothing, or setting a new password.
  • At launch: the login link, password reset instructions, where their courses are, and who to contact.
  • Subscribers: a separate message about billing. Nobody should be charged by both systems, so cancel the old agreement before the new one starts.

Post-launch checklist

  • Spot-check logins for each learner group.
  • Compare enrollment and completion counts with the frozen source one more time.
  • Place a real purchase with a real card, then refund it.
  • Confirm the gateway connection is live and watch the first renewals under Orders.
  • Test every address in the redirect map, submit the new sitemap and watch for crawl errors.
  • Confirm receipts, welcome emails and certificates send from production, and that your email tool or CRM receives new enrollments.
  • Check page speed under real traffic. See how to speed up a LifterLMS site.

What to do next

If you are moving a handful of courses with no active subscriptions, you can probably run this yourself. Start with the inventory, rebuild on staging, and use our LifterLMS setup guide for the base configuration.

Bring in help when the stakes are higher: active subscriptions, years of progress or certification records that must survive, a source with no migration tool, or a business that cannot absorb a failed launch weekend. Our LifterLMS migration service covers the mapping, scripted transfer, rehearsal and cutover. Still deciding whether to move at all? Read how LifterLMS compares with other WordPress LMS plugins, or send us your inventory and we will tell you where the hard parts are.

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
VishavjeetChoubeyLifterLMS Expert
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