
Loading article…
Migrations
The pillar guide for moving off GoHighLevel. Data (contacts + years of conversation history via GoSeedly), phone numbers, OAuth integrations, workflows, and documentation. Every piece, with the tools that solve each one and the order to do them in.
Andrew Lee Jenkins · 2026-05-18 · 14 min read · Updated 2026-09-04

Loading article…
KEEP READING

Migrations · 20 min read
Read article
Migrations · 9 min read
Read article
Ownership · 20 min read
Read article
Migrations · 8 min read
Read articleMost GoHighLevel migrations do not fail because the destination CRM is missing features. They fail because moving off is a bigger project than most agencies budget for, and the pieces that break the timeline are almost never the ones people plan around.
The CRM part is straightforward. You license Seedly, deploy it on infrastructure you control, and you have a CRM. Every other piece is what actually eats the calendar. The data, and specifically the years of conversation history sitting inside GHL's message store. The phone numbers that customers already call and text. The OAuth apps that make Google Calendar, Google Ads, Google Business Profile, Outlook, and Zoom feel native. The workflows you built over months that nobody has fully written down. All of it has to move without your clients noticing.
If you are early in evaluating a move, this covers the whole picture. Each section links to the dedicated guide for the piece it covers.
Explore Seedly's codebases and read the setup guides before choosing your software.
Explore the codebasesHere is the full map. Skip to the section you care about, but do not underestimate the ones you skip. The migrations that succeed treat every item on this list as its own project.
The order the migration is executed in matters. Data first, then phone numbers and OAuth in parallel so their long clocks run at the same time, then workflow rebuilds against the live data, then final verification. The playbook at the bottom of this post walks the sequence.
Every DIY GHL migration hits the same wall at roughly the same time.
Contacts export cleanly. GHL's UI gives you a CSV, Seedly ingests it, and every contact carries its custom fields and tags across without much drama. Deals map to opportunities in a few clicks. Notes and tasks come with them. You feel like you are 80% done.
Then you try to bring across the conversation history. SMS threads with years of client back-and-forth. Email chains attached to specific deals. Facebook Messenger and Instagram DMs. Live chat transcripts that live inside GHL's own inbox. The metadata for calls that went through GHL's telephony. None of this is in GHL's normal contact export in any shape you can actually reuse. And you cannot leave it behind, because it is the record every future customer conversation refers back to.
Rebuilding the archive by hand is not a weekend project. Every conversation has to be threaded to the right contact, timestamped to the actual moment it happened, and marked with the channel it came from. Miss any of that and search becomes useless and reporting is a lie.
That is the wall most agencies stall on. Either they give up and stay on GHL for another quarter, or the migration turns into a paid engagement with somebody who has done it before.
GoSeedly is a self-run migration kit from DevLaunch (operated by Hypercat Studio LLC, independent of both Seedly and HighLevel). You buy the source code once for $197 at launch, code CULT gets you 10% off, and you run the whole migration on your own machine. Nothing leaves your computer, and you keep the code for every subsequent sub-account.
Everything the base importer handles.
Everything captured but archived locally rather than force-imported into Seedly.
The distinction matters. GoSeedly does not silently drop the archived categories, they land in an encrypted local archive so you have them if you ever want to reference or process them further. What crosses into your live Seedly is the record set that behaves the same on the other side.
The 10-15 minute tutorial video walks the happy path. Real migrations, especially the first sub-account, take longer because of the clean-up and verification phases, which is where you catch and fix decisions made years ago you had forgotten about.
The number your customers already call is the second-biggest thing that stops people from moving. It should not be, because Twilio ports and LC Phone transfers are boring plumbing at this point, but agencies get scared into staying on GHL over exactly this fear.
There are three situations and each has a different fix.
The phone number migration guide walks each situation in detail and, more importantly, the sequence. Build your Twilio infrastructure and register the A2P 10DLC brand and campaign BEFORE the numbers land, or you will port successfully into an account that cannot send a text. Every skipped step here surfaces as clients thinking their business phone stopped working.
If the numbers are with an outside carrier, kick the port off on day one of the migration. The 2-4 week clock will run in parallel with everything else.
The version of GHL you were using had one verified OAuth app per provider, shared across every customer. On your own Seedly, you have two options. File your own verified apps with Google, Microsoft, and Zoom (weeks of paperwork per provider, D-U-N-S numbers, MPN membership, project allowlisting, marketplace listings), or use a managed OAuth broker.
Filing your own is real work.
None of this fits inside a migration window if you are moving an active agency.
CRMLynk is the managed OAuth layer I built for exactly this. One verified app per provider (Google, Microsoft, Zoom, all approved), your Seedly deployment plugs into it with two environment variables, every provider works immediately. Starter is $49/mo up to 30 connected accounts, Growth is $99/mo up to 100. Users skip the "unverified app" warning, you skip filing paperwork.
Treat CRMLynk as a stepping stone, not a permanent part of your stack. You own the CRM code, so you should own the OAuth alongside it eventually. Every Seedly CRM license includes a free "Broker Build Kit" in your account portal, which is the full playbook for building your own OAuth broker end to end (per-provider approval walkthroughs, per-scope video shot scripts, legal doc templates, and every gotcha I hit taking CRMLynk through review). Use CRMLynk to unblock now, use the kit to graduate when you have a week to build.

Sign up at crmlynk.com/subscribe.
Seedly's workflow engine covers 80 node types and 76 triggers, which spans what most GHL accounts actually do. Lead capture, drip sequences, appointment reminders, review requests, pipeline automations, conditional branching on custom fields, webhooks to external services. The mechanics differ from GHL's editor but the primitives translate.
The mistake most agencies make is trying to migrate every workflow. Log into your GHL sub-account and look at what is actually running right now. Most accounts have a handful of automations doing real work and a graveyard of experiments nobody remembers building. Rebuild the ones actually firing, leave the rest behind.
Rebuild those in Seedly against the live migrated data. This is where you catch the automations that referenced custom fields you renamed, or triggered on tags that were never really being applied. It is faster than most people expect because you are not designing new automations, you are transcribing verified ones.
If your GHL account is complex enough that you cannot fully explain it out loud, or you are moving dozens of sub-accounts for clients, PatchyHub is worth an afternoon before you touch anything. Drop your GHL snapshot in and you get a visual map of every workflow, funnel, custom field, and automation, plus how they connect. It surfaces the "oh right, this workflow fires a webhook that updates a field that triggers another workflow" chains you would otherwise miss.
The PatchyHub links in this post carry my referral code.
Skip PatchyHub if you already know what you built and the account is straightforward. It shines on complex handoff scenarios, not on solo agency accounts you designed yourself last month.
The sequence that actually works for a single sub-account.
CULT for 10% off. Install and read the compatibility guide.The full move takes as long as your slowest piece, and that is almost always the phone port. If your numbers sit with an outside carrier, the port itself is 2-4 weeks, which sets the outside limit on the whole migration. LC Phone transfers run days. If your numbers were already on your own Twilio, the phone piece is a five-minute change and something else becomes the long pole.
Everything except the phone port can run in parallel with everything else. Kick the port off on day one, sign up for CRMLynk the same afternoon so integrations are ready before you have data to test them against, then work through data and workflows while the port clock runs. The clean-up phase inside GoSeedly is the part that surprises people, because it is where you rediscover decisions you had forgotten about, so give the first sub-account more clock time than you think you need and the subsequent ones will move faster.
CULT for 10% off at launch