Move your courses,
keep every student.
You built something your students love. Switching course platforms shouldn't put any of it at risk. We handle the entire move to WordPress or Laravel, so your courses, videos, and enrollments arrive intact — and your students pick up right where they left off, on a faster site.
"The migration preserved every enrollment date, every quiz, every video. Our students didn't notice a thing — except the site got faster."
Music Education Platform Director — 13 courses, 691 videos migrated from Thinkific to LearnDash
What platforms do we migrate?
We only take on migrations where the source platform offers a real API. That's how everything arrives accurately, down to the details a CSV export quietly drops: quiz logic, completion history, and each student's original enrollment date. No scraping, no spreadsheet guesswork.
How much does LMS migration cost?
Fixed-price per migration. No hourly billing. You know the total before we start.
How do we protect your video content after migration?
Self-hosting doesn't mean leaving your videos exposed. Seven overlapping layers protect them as well as a paid Vimeo plan does. You skip the subscription and pay only for the storage and bandwidth you use. And there's no upload cap, so your whole library migrates at once, instead of trickling in under Vimeo's annual limits. Built on AWS CloudFront.
Engineers, not salespeople
migratelms.com is a deliberately small operation. Every migration is scoped, built, and QA'd by the same two people — the ones whose names are on this page. No account managers, no outsourced work, no hand-offs. If your migration hits a weird Thinkific GraphQL edge case, you're talking to the engineer who'll fix it.
Senior PHP developer specializing in LMS platform architecture, WordPress/LearnDash internals, and AWS infrastructure. Built the Thinkific export pipeline and LearnDash import system from the ground up. Expertise in API integration, video asset migration, and content protection engineering. Brings systems-level engineering experience to make complex migrations reliable, repeatable, and easier to validate.
Senior WordPress developer and instructional designer specializing in LMS migrations, course architecture, and content modeling. Experienced with WordPress internals, LearnDash structures, Thinkific APIs, course access logic, block editor workflows, and accessibility. Brings technical judgment and a course-builder’s perspective to preserve course flow, learner experience, and long-term maintainability.
Because the team is two engineers, we take on a limited number of migrations at a time. That means your project gets real attention, not a runbook handed to a junior. Read more about the team →
Which LMS platform is right for you?
Field notes from real migrations
How We Migrated 691 Videos from Thinkific to S3 Without Vimeo
Thinkific's GraphQL API exposes direct MP4 CDN URLs through VideoContent types. Here's how we used that to bypass Vimeo entirely and migrate 691 course videos to self-hosted S3 with CloudFront delivery.
The Enrollment Bug That Almost Ruined Our Migration
Thinkific's REST API returns all enrollments for users in a queried course — not just enrollments for that specific course. We discovered this cross-contamination bug affecting 1,439 records across 13 courses.
Why Vimeo Upload Quotas Make S3 the Better Choice for Course Videos
At $65/month, Vimeo Advanced limits you to 240 video uploads per year per seat. With 1,000+ course videos, that's nearly two years of uploading. S3 has no upload limits and costs a fraction per GB.
Video Protection Without DRM: A Layered Approach for Course Creators
Full DRM is overkill for educational content. Here's our layered stack: S3 bucket policies with referrer restrictions, HTML5 controlsList attributes, CloudFront signed cookies, and player-level hardening.
Frequently asked questions about LMS migration
Yes, they keep everything they've earned. Every enrollment, course, and piece of progress moves over with its original dates intact, so nothing is lost and no one has to start over. The one new step is signing in: because passwords can't safely transfer between platforms, each student sets a password the first time they visit, through a one-time link we email them at launch. Their courses are already there waiting for them, so they just pick a password and they're back in.
Everything that makes up your courses: the full course and lesson structure, your videos (moved to your own S3 storage), PDFs and downloads, quizzes and assessments, student accounts matched by email, and enrollment records with their original date ranges. We also set up and configure your video hosting and protection on S3 and CloudFront, so it's ready to serve students on day one.
Yes, fully. Question types, answer options, and scoring logic all transfer, and we map them onto your new platform's native quiz engine, whether that's LearnDash ProQuiz, LifterLMS quizzes, or Tutor LMS assessments. Your quizzes work the same way for students after the move.
Yes, and this is where a lot of migrations quietly fail. Thinkific treats a quiz as just another lesson in your curriculum, while LearnDash treats it as a separate item attached to a lesson. If a tool doesn't account for that difference, it drops your quizzes without warning. We map each quiz into the right spot so it keeps its original position in the course, exactly where students expect it.
Your quizzes themselves transfer completely. Individual students' past attempt history and lesson-by-lesson progress usually don't, and we'll be honest about why: reliably moving that historical data costs more than it's worth for most courses, and it's rarely looked at again after the switch. If you're in a compliance-regulated field where that history matters, we can migrate it on request and scope it into your quote.
Yes. Your PDFs display right inside the lesson and stay searchable and screen-reader friendly. If a PDF was already built with accessibility tags, that structure carries over. Older PDFs without tags still read and display fine, but we can't retroactively add accessibility markup to them. If your courses need fully WCAG-compliant PDFs, plan a quick remediation pass before launch and we'll point you in the right direction.
Once, with a friendly nudge from us. Passwords can't safely move between platforms because each one scrambles them differently, so at launch we send each student a one-time email letting them know their courses have moved and inviting them to set a new password. In practice 60 to 75 percent of students do it within the first 48 hours, and the rest can set theirs any time they return.
Yes, and it's anchored to the original purchase date, not the migration date. If a student bought a year of access on July 15 and we migrate in October, their access still counts from July 15 and expires the following July, not a year after the move. Nobody gets shortchanged, and nobody gets an accidental extension.
Yes. We pull your videos straight from your source platform's API and move them into your own AWS S3 storage with CloudFront delivery. That means no monthly Vimeo or Wistia subscription, and none of their upload caps, so your entire library can move at once instead of trickling in over months.
With several overlapping layers, so no single trick exposes your content. Your videos only load on your own domains, the download and right-click-save options are removed from the player, and access can be tied to a logged-in student session. It's protection comparable to a paid Vimeo plan, without the monthly fee.
Not much, and we walk you through the parts that are yours. Most of the work happens on our side. From you we need answers to a few scoping questions that shape the right plan, plus access to your current course platform and your destination site, shared through a secure intake link rather than over email, so we can pull your content and place it correctly. You'll get a migration checklist that lays out exactly what we need and when, so you're never guessing about your part.
A typical course library, 50 to 100 lessons and under 500 enrollments, is done in 2 to 3 business days. Larger catalogs with 500 or more lessons and thousands of enrollments take 5 to 7 business days. The migration itself is automated, so the time goes mostly into verifying and QA-ing every record, not the transfer.
Every migration is a fixed-price quote, so you know the total before we start, with no hourly billing. The base price is set by the size of your catalog, optional add-ons are available when you need something specific, and we'll put together a custom quote for anything outside the standard tiers. You can see the current tiers and add-ons on our pricing page. For a number tailored to your migration, email hello@migratelms.com with your source platform, destination, course count, video count, and enrolled user count, and we'll send a quote within 24 hours. Or book a free 15-minute scoping call at calendly.com/mgratch/consultation.
Three easy ways. (1) Email hello@migratelms.com with your information about your desired migration and we'll send a fixed-price quote within 24 hours. (2) Or fill out the form at migratelms.com/contact with the same details. (3) Or book a free 15-minute scoping call at calendly.com/mgratch/consultation. Either way, every migration starts with a fixed-price quote, with no hourly billing and no commitment until you approve the scope.
Because both lose things you can't easily get back. CSV exports drop your course structure, quiz logic, and the links between lessons and their videos. Rebuilding by hand stops being practical past about ten lessons. Scraping breaks the moment a platform updates and usually violates its terms of service. Pulling your data through the official API gets the exact structured content the platform uses internally, which is the only way to move everything completely and accurately.
Not right now, and it's for your protection. Their APIs don't expose lesson-level content or video links: Teachable's covers courses and enrollments but not the lessons inside them, and Kajabi has no documented public API at all. We only take on platforms where the API guarantees a complete, reliable extraction, because the alternative is scraping, which is fragile and risky. If that changes on their end, we'll add them.
Yes. LearnWorlds offers a full REST API covering courses, users, enrollments, progress, assessments, and certifications, with depth comparable to Thinkific. Everything we migrate from Thinkific, we can migrate from LearnWorlds.
Yes. Laravel destinations are actually simpler than WordPress, because we work directly with your database structure instead of around plugin quirks and conflicts. We also support Academy LMS and Edulab LMS as ready-made Laravel destinations if you'd rather not build from scratch.
We handle that so you don't end up with duplicates. If a student's email already exists on your WordPress site, we keep their existing name, role, and signup date and only fill in the blanks from your old platform. We also keep a quiet reference to their original account, so if we run the migration again, it matches the same person every time.
No. Source platforms cap how fast their APIs can be queried, and a careless export can trip those limits and fail partway through. Our exporter paces itself automatically to stay safely under each platform's limits, so your migration runs to completion without stalling or dropping data. On Thinkific's GraphQL API in particular, we tune query sizes and spacing to avoid the cascade failures that break less careful tools.
Ready to migrate?
Fixed-price quote within 24 hours. Or book a free 15-minute scoping call.