A GoHighLevel membership or course isn't one thing you can export with a single click — it's public pages, gated lesson media, and member data, and each leaves the platform a different way. Here's the honest, complete method.
GoHighLevel has no single button that exports a full membership or course. The public pages, the gated video lessons, and the member records each live in a different place, so a complete move combines a few methods. You can export the public-facing pages (sales and course landing pages) as clean static HTML with ExportGHL Sites, recover your original lesson media (the videos, PDFs, and audio you uploaded) from source, and pull your member records through GoHighLevel's native CSV export. ExportGHL Sites captures the rendered front end — it does not pull login-gated lessons, hosted video files, or CRM data — so this guide walks the full, honest workflow end to end.
Planning a bigger move? This pairs well with our complete GoHighLevel migration guide and our walkthrough on exporting a GoHighLevel website to static HTML.
The reason there's no one-click export is that a GoHighLevel course is really three separate things stitched together. Treating them as one is where migrations go wrong. Break your course into these layers before you start:
Each layer has its own correct export route. The rest of this guide handles them in order.
Not as a single file, no. GoHighLevel's Memberships product keeps lesson content behind a login and keeps the course structure and member data in its back end, and — like most SaaS platforms — it doesn't offer a one-click "export my whole course" download. What it does offer is a native CSV export for your contacts and members, which is the right tool for the people side of the move.
Everything else you assemble yourself from pieces you already own: the public pages (via a rendered exporter), the lesson media (your original source files), and the structure (documented by hand). Assuming the content is yours to move, none of this needs special permission — though if your account is managed by an agency, it's worth confirming who controls it before you start. It does mean using the right method for each layer instead of hunting for a button that doesn't exist.
Before touching any tool, list what you're moving under the three headings above — public pages, gated media, and member/structural data. A simple spreadsheet works: one tab for the pages to snapshot, one for every lesson's source files, and one for the module and lesson order. This list is your migration map, and it keeps you from assuming a single export captured everything.
Add the ExportGHL Sites Chrome extension from the Chrome Web Store and pin it. Open each public page — your sales page, course landing page, and opt-ins — then open the extension, enter your email, enable Rendered snapshot mode, and export. You'll get clean static HTML, CSS, and JS with localized assets for every page that renders without a login. (Pages that require a member login won't render for the exporter, which is expected — those are handled in the next steps.)
The teaching content moves by re-gathering the source files you uploaded, not by scraping the player. Collect the original video, PDF, audio, and worksheet files from your own storage — your Drive, your computer, or wherever you kept the masters before uploading. If you no longer have the originals, download each asset from where it's hosted while you still have access. Keep them named and organized to match your course structure so re-uploading later is straightforward.
Use GoHighLevel's native CSV export in the contacts area of your account to pull member and contact records. This is the only correct route for people data — ExportGHL does not read, touch, or export CRM records of any kind. Export the full contact list plus any tags or custom fields that mark enrollment, so you can re-segment members on the new platform.
Record the module and lesson order, the drip schedule, and any access or membership-tier rules in your spreadsheet. This structure is back-end configuration that no front-end export preserves, so writing it down now is what lets you rebuild the course faithfully rather than from memory.
Put the pieces back together on your destination: host the exported static pages, upload your recovered media into a course or membership platform in the order you documented, and import the member CSV. Then reconnect the server-side parts — logins, protected access, drip, and payments — using the new platform's own features or standard embeds, since those did not come across in the static export.
Being precise here saves you a frustrating migration. ExportGHL Sites works by loading a page in the browser, letting all the JavaScript and dynamic layout finish, and saving the final rendered result as static HTML, CSS, and JS with its assets.
It captures: any page that renders publicly — sales pages, course landing pages, opt-in and marketing pages — with their images, fonts, and styling localized and ready to host.
It does not capture: content behind a member login, hosted/streamed video files, your CRM contacts and member records, back-end course structure (module and lesson configuration, drip rules), or live form submissions. Those each leave GoHighLevel a different way, as covered in the steps above. If a membership plugin or part of your journey is server-side, plan to reconnect it after export — our guide to reconnecting forms and calendars covers the pattern.
Because video and gated lessons aren't something a page snapshot can reliably pull, treat your media as source assets you repossess rather than export:
module-2_lesson-3_title.mp4 so that when you re-upload to the new platform, the order and grouping are obvious and fast to rebuild.This keeps the heavy teaching content under your control and independent of any single platform going forward.
Member and contact data is the one layer GoHighLevel exports for you, and it's important to use that route rather than looking for a workaround. In the contacts area of your account, use GoHighLevel's native CSV export to download your contact records, including the tags or custom fields you use to mark course enrollment or tiers.
To be unambiguous: ExportGHL never reads or exports CRM data — it only exports rendered front-end pages. Contacts, members, and their fields leave GoHighLevel exclusively through GoHighLevel's own export. Keep that CSV safe; it's what lets you re-enroll the right people on your new platform without anyone losing access.
With the three layers in hand, the rebuild is mostly assembly. Host the exported static pages anywhere that serves plain HTML — see our self-hosting tutorial — and point your sales and landing pages there. Upload your recovered media into a course or membership tool (a WordPress membership plugin, Teachable, Kajabi, or similar), recreating the module and lesson order from your documentation. Finally, import your member CSV and set up logins, drip, and payments using the new platform's native features.
The result: your front-end look is preserved exactly, your lessons live as files you own, and your members come across cleanly — with no dependence on any one platform keeping your business running. If you're also moving automations, clone them across accounts with ExportGHL Workflows.
Snapshot one of your GoHighLevel sales or course landing pages and see the clean, ready-to-host static output before you pay.
Start free