A course is one of the few things in a GoHighLevel sub-account that a client can lose twice. The first loss is the content: the modules, the lessons, the videos somebody spent weeks recording. The second is the students, meaning who bought, who has access to what, and how far each person got. HighLevel treats those two halves very differently, and most backup advice only covers the first.
The short answer: snapshots and the course import tool will protect the course you built. Neither touches enrollment or progress. For that you need the Course Progress Analytics export, the new Courses API, or a backup of the contacts underneath it all, and you need to run it before something goes wrong rather than after.
What is actually inside a HighLevel course?
It helps to split a course into the part the creator makes and the part the students make.
The creator side is the course product, its categories (HighLevel’s word for modules) and sub-categories, the lessons inside them, lesson videos and audio, downloadable materials, quizzes, assignments, certificates, and the offers that grant access. This is configuration. You can rebuild it from your own files if you have to, painfully.
The student side is the enrollment record for each person, the offers they were granted, every lesson they marked complete, their quiz and assignment submissions, and their comments. Every student is also a contact in the sub-account, carrying the tags and custom fields your workflows use to grant access and send follow ups. None of this can be rebuilt from your own files. If a member who paid for a twelve week program loses their progress at week nine, there is no way to reconstruct where they were except to ask them.
Do HighLevel snapshots back up courses?
They back up half of one. HighLevel’s snapshot overview lists a Memberships and Learning category that covers Certificates, Membership Offers, Membership Products, and Webinars, so loading a snapshot recreates your courses and the offers attached to them in the destination sub-account.
What the snapshot leaves behind is everything a student did. The same page states that snapshots transfer “configuration and selected reusable assets, not live account activity or customer records,” and lists contacts and live account activity among the things that never move. Students are contacts. Their progress is live account activity. A course loaded from a snapshot arrives with zero members.
That is the same line we drew in snapshots versus backup, and it catches course creators for the same reason it catches everyone else. The thing you can see (the course) comes back looking perfect, so it is easy to assume the rest came with it.
Snapshots also go stale. HighLevel is explicit that a snapshot does not update when the source account changes. You have to refresh it to capture new or edited lessons, so a snapshot taken in spring will not include the module you added in August.
Can you copy a course without using a snapshot?
Yes, and for day to day protection it is often the better tool. HighLevel’s Import Content from Another Course feature lives inside the Course Builder: open the course you want to copy into, click Add Content, and choose Import from another course. You can bring over a single lesson, selected modules and sub-modules, or the whole course.
According to HighLevel’s documentation, the import carries lesson titles and structure, the module hierarchy, videos and attached media, thumbnails, descriptions and formatting, quiz questions, assignments, and resources. Imported content is copied rather than linked, and it is added alongside whatever is already in the destination course without overwriting anything.
The practical use is a frozen copy. Before a major rewrite of a course that is already selling, import the full course into a new, unpublished product and leave it alone. If the rewrite goes badly, or someone on the team deletes the wrong module, you have a working version to pull lessons back from. It costs nothing and takes a few minutes. It is still a copy inside the same sub-account, though, so it will not survive anything that takes the whole account down with it.
How do you export course progress and student data?
HighLevel’s Course Progress Analytics dashboard sits under Memberships, then Courses, then Analytics, then Course progress. You can filter it by course and by enrollment date, and the member table shows each learner’s name, courses completed, enrollment date, course start date, last accessed date, and session count.
The CSV export downloads exactly what the dashboard is showing at that moment. Smaller exports land in your browser straight away. Exports of 500 rows or more are processed on HighLevel’s side and emailed to you with a download link that expires after 24 hours, so whoever clicks Export needs to actually open that email the same day.
Treat the file as a record, not a restore point. We found no documented way to load a progress CSV back into HighLevel and have it mark lessons complete again. If you ever need it, the file tells you where each member stood, and someone will have to reapply that by hand.
There is an older Member Analytics view as well, which lets you drill into an individual member’s progress by product, category, and lesson and manually mark categories or lessons complete. That manual option is the realistic recovery path for a handful of students. For a few hundred it is a long afternoon.
What happens if a course or lesson video is deleted?
We could not find a documented trash folder or restore option for deleted courses anywhere in HighLevel’s help center. That does not prove one will never exist, but it is the right assumption to plan around: once a course is deleted, expect it to stay deleted.
Media is a partial exception. HighLevel added a Trash to Media Storage, where deleted files are held for 30 days and can be restored before they are permanently removed. Course lessons can pull audio and video straight from Media Storage, and HighLevel’s documentation says that import reuses the stored file instead of uploading a new copy. That makes Media Storage cleanup riskier than it looks, so check which lessons use a file before you delete it. The 30 day trash gives you a window to notice a mistake. After that, the only copy is whatever you kept on your own drive.
Then there is the account level. HighLevel’s cancellation article lists memberships and courses among the things to export before you cancel, retains canceled account data for 90 days, and states plainly that it does not keep backups of purged account data. We cover that timeline in more detail in what happens to your data when you cancel. For a coaching or education client, courses are often the most valuable thing in the account, and they sit on the same deletion clock as everything else.
How do the native backup options compare?
| Option | What it protects | What it misses |
|---|---|---|
| Snapshot | Courses, offers, certificates, and webinars, as of the last refresh | Every student, every enrollment, all progress, and anything added since the refresh |
| Import from another course | A frozen copy of lessons, media, quizzes, and assignments in the same account | Students and progress, and anything that takes the whole sub-account down |
| Course Progress Analytics CSV | Who enrolled, when they started, last access, and completions, as of the export | Lesson by lesson detail, quiz answers, and any way to restore it into HighLevel |
| Media Storage trash | Deleted audio and video files for 30 days | Anything older than 30 days, and anything that was not in Media Storage |
| Your own master files | Original videos and documents, kept outside HighLevel | Course structure, offers, and everything on the student side |
| Contact backup | The students themselves, with the tags and custom fields that drive access | The course content and the progress records |
Can you back up courses through the HighLevel API?
This changed recently. Until now, the documented route most developers used was POST /courses/courses-exporter/public/import, which pushes a course in but, as developers on HighLevel’s ideas board pointed out, offers no way to read it back out. A request on HighLevel’s ideas board for full course API support collected more than 200 votes and was marked complete at the start of October 2026.
HighLevel’s v3 API reference now has a Courses section with endpoints grouped under products, categories, lessons, quizzes, assessments, assignments, offers, enrollments, and progress. The progress endpoints are read only and require a location token with the courses.readonly scope. One returns a contact’s progress across up to 50 products at once, one lists completed lessons (for a single learner, or as a paginated rollup by contact), and one returns per-category progress for a contact in a product.
For an agency with a developer, that is the first real route to a scheduled, automated copy of course progress. It is also brand new, so we would test it carefully against a real course before trusting it, and watch for gaps between what the endpoints return and what the dashboard shows. Everything we said about DIY backup jobs applies here too: pulling the data is the easy part, and storing it, monitoring failures, and handling token refreshes is where these projects usually stall.
How should agencies protect courses and memberships?
Start with the habits that cost nothing. Keep the master copy of every lesson video and download in a shared drive the client controls, not only in HighLevel. Before a big edit to a live course, import it into an unpublished duplicate. Refresh your snapshot after you add or change lessons, not once a year. Put a monthly Course Progress Analytics export on someone’s calendar, and save the file outside HighLevel.
Then protect the students as contacts, because that is the part of a membership business that cannot be recreated from your files. For that, we built GHLArmor, and since it is our product you should weigh the recommendation accordingly. GHLArmor is the first backup approved by the HighLevel Marketplace. It backs up contacts and their custom field values, opportunities, notes, and conversations across every sub-account, with version history, and stores the copies outside HighLevel. It does not back up course content or lesson progress today, so pair it with your own master files and the progress export above. What it does cover is the member list itself, along with the tags and fields your access workflows depend on, which is usually the first thing a client asks about when something goes wrong.
If a course is part of how a client earns money, it deserves the same treatment as their contact list and their workflows. HighLevel will happily help you rebuild the course. Keeping the people who bought it is on you.
Frequently asked questions
Do HighLevel snapshots include courses? Yes, but only the course itself. HighLevel lists Membership Products, Membership Offers, Certificates, and Webinars among the assets a snapshot can copy. Snapshots do not transfer contacts or live account activity, so the students enrolled in a course and their progress do not come across.
How do you export student progress from a HighLevel course? Go to Memberships, then Courses, then Analytics, then Course progress. The CSV export downloads exactly what the dashboard is showing. Exports of 500 rows or more are emailed to you as a download link that stays valid for 24 hours.
Can you duplicate a HighLevel course before editing it? Yes. Inside the Course Builder, choose Add Content, then Import from another course. You can copy single lessons, modules, or the entire course. HighLevel copies the content rather than linking it, so later edits to the original do not touch the copy.
Can you restore a deleted course in HighLevel? We could not find a documented restore option for deleted courses in HighLevel’s help center, so plan as if deletion is permanent. Files deleted from Media Storage are different: they sit in a Trash folder for 30 days and can be restored from there.
Is there a HighLevel API for courses? Yes. HighLevel’s v3 API documentation now has a Courses section covering products, categories, lessons, offers, enrollments, and read-only progress endpoints, alongside the older course import endpoint. It is new, so test it against your own data before relying on it for backups.