Teachable to LifterLMS: Moving Content, Students, Subscriptions and URLs
A step-by-step plan for moving from Teachable to LifterLMS: what Teachable lets you export, how to rebuild courses, import and enroll students…
Read articleMoving from Thinkific to LifterLMS takes your school off a hosted platform and onto a WordPress site you control. The usual reasons are fees, design limits, wanting your own checkout and data, or needing integrations Thinkific does not offer.
This guide is the practical sequence: ten steps in the order we would run them, from the exports you should take on day one to the email you send students on launch day. It is written for Thinkific site owners and the developers helping them.
If you are still choosing a platform, our LifterLMS vs Teachable, Thinkific and Kajabi comparison will help. For the general principles behind any LMS move, see our LifterLMS migration guide.
| Thinkific | LifterLMS | Comment |
|---|---|---|
| Course | Course | Rebuilt in the Course Builder |
| Chapter | Section | Same role in the outline |
| Video, text and download lessons | Lesson | Text pasted in, video embedded, files attached |
| Quiz lesson | Quiz attached to a lesson | Create a short lesson to hold the quiz if needed |
| Survey lesson | Form plugin or ungraded content | LifterLMS core has no survey type |
| Pricing options | Access plans | One-time, subscription, payment plan, free trial |
| Bundles and memberships | Memberships | Auto-enroll members into chosen courses |
| Coupons | Coupons | Recreate codes and limits |
| Certificates | Certificate templates | Redesign in the certificate editor |
| Communities | Community plugin | bbPress, BuddyPress or BuddyBoss with LifterLMS |
Two structural points matter. LifterLMS courses always use sections, so chapters translate directly. And a LifterLMS lesson holds at most one quiz, which suits Thinkific's model of quizzes as separate lessons.
Thinkific's User Table article explains the export: go to Users, then All Users, and choose Export. The CSV link is emailed to you. Two details from that article matter: exporting needs the Basic plan or higher, and only the columns visible in the table are included. Add every column you need, including custom sign-up fields, before you export.
Thinkific's Progress Reports export one course at a time from Users, Student Progress. The report includes when each student started, completed and last signed in, and their completion rate. That tells you who finished, but not which lessons a partly finished student completed. For lesson-level detail you would need Thinkific's Admin API.
Create a spreadsheet with one row per lesson: course, chapter, lesson title, lesson type, video file and any quiz. Add a second sheet listing pricing options, coupons, bundles, active subscribers and every public URL. This becomes your checklist for the rest of the project.
Choose good hosting, install LifterLMS, and run the setup wizard. Build on a staging site so your Thinkific school keeps selling while you work.
Download your videos from Thinkific's video library and upload them to a dedicated video host, then embed them in lessons. Rebuild each course in the Course Builder: chapters become sections, lessons follow in order. Recreate quizzes from your inventory, because questions and answers need to be re-entered. LifterLMS core includes multiple choice, picture choice and true or false questions; other types need the paid Advanced Quizzes add-on.
Turn each Thinkific pricing option into an access plan on the matching course or membership, with the same price, billing period and trial. Install a paid gateway add-on such as Stripe or PayPal, since the free core ships with only the manual gateway. Recreate coupons with the same codes so existing promotions keep working. Our article on payment plans and free trials in LifterLMS shows how each billing option is configured.
LifterLMS core does not import students from CSV, so create the WordPress accounts with a user import plugin or WP-CLI's wp user import-csv, using the student role. Then enroll each student in their courses and memberships with llms_enroll_student() in a script, or through the LifterLMS REST API.
Before you run it, pause enrollment emails under LifterLMS > Settings > Notifications and any engagements that fire on enrollment. Otherwise every imported student is emailed immediately.
With course-level progress exports, the practical approach is to mark finished courses as finished. Completing every lesson in the course lets LifterLMS calculate progress and course completion the normal way. This snippet, run with wp eval-file, does that for one student and course:
<?php
// Usage: wp eval-file llmsx-complete-course.php 123 456
// 123 = WordPress user ID, 456 = LifterLMS course ID.
// Do not send certificates or emails during the import.
add_filter( 'lifterlms_get_engagements', '__return_empty_array' );
$user_id = absint( $args[0] );
$course_id = absint( $args[1] );
$course = llms_get_post( $course_id );
if ( ! $course instanceof LLMS_Course ) {
WP_CLI::error( 'Course not found.' );
}
foreach ( $course->get_lessons( 'ids' ) as $lesson_id ) {
llms_mark_complete( $user_id, $lesson_id, 'lesson', 'llmsx_thinkific_import' );
}
WP_CLI::success( "Course {$course_id} completed for user {$user_id}." );
Wrap it in a loop over your progress CSV for bulk use. If you want students to receive their certificates on the new site, remove the filter for that run and let the certificate engagement fire, after warning students that a certificate email is coming. Partly finished students are usually told where they left off, or given lesson-level progress from the API if the course is long.
Thinkific's article on Thinkific Payments, Stripe and PayPal explains the three ways a school can take payments. Which one you used decides your options:
Cancel each Thinkific subscription only once the student is active on LifterLMS, and keep a shared sheet of who has moved.
Not in LifterLMS. The core importer reads LifterLMS export files only. Content is rebuilt, and students are imported with scripts or tools.
Yes. Point the domain at your WordPress site at cut-over and redirect the old paths.
Discussions do not transfer. Set up a community on WordPress, such as bbPress forums or BuddyBoss, and invite members to it at launch. Our community options guide compares them.
Hosting, updates, backups, security and email delivery. None of these is difficult, but each needs an owner. Choose managed WordPress hosting, use a transactional email service so receipts and password emails arrive, keep automatic backups, and schedule plugin updates on a staging copy first. Many schools hand this to a support plan so the course creator can stay focused on content and sales.
Keep prices and course structure the same at launch so returning students recognise everything. Improve content, pricing and design after the move has settled, one change at a time.
Run steps 1 to 3 this week. The inventory tells you how big the job really is and whether subscriptions need custom work.
If you would rather hand over the heavy lifting, our LifterLMS migration service covers rebuild, imports, subscription planning and redirects. Contact us with your inventory and we will scope it.
A step-by-step plan for moving from Teachable to LifterLMS: what Teachable lets you export, how to rebuild courses, import and enroll students…
Read article
A practical plan to migrate LearnDash to LifterLMS: how courses, topics, quizzes, groups and certificates map, how to carry over enrollments and…
Read article
Course content is the easy part of a move to LifterLMS. Enrollments, progress, active subscriptions and URLs are where migrations go wrong, so map…
Read articleSkip the trial and error. Get specialist LifterLMS help and ship faster.