Client relationships end. Sometimes the ending is friendly, a client outgrows you and brings marketing in house, or you sell part of your book to another shop. Sometimes it isn’t. Either way the same question shows up, and it catches more GoHighLevel agency owners off guard than it should: how do you actually hand a sub-account to another agency without wrecking it on the way out?
The short version is that HighLevel has a built-in transfer, it lives at Agency Level > Sub-Accounts > Manage Client > Actions > Transfer Sub-account, and it moves the entire sub-account in one piece. Contacts, conversations, appointments, opportunities, funnels, and history all travel together. What does not travel is everything that connects the sub-account to the outside world: integrations, domains, email senders, payment configuration, and in most cases phone numbers. The transfer is real, it works, and the receiving agency will spend a day rebuilding plumbing.
| Moves with the sub-account | Does not move |
|---|---|
| Contacts, conversations, appointments, opportunities, and history | Saved smart lists |
| Websites and funnels | Auth connections (Google, Facebook, Instagram, QuickBooks, Clio, DrChrono, Yext) |
| Calendars, though external calendar integrations disconnect | Facebook and Google settings |
| Workflows and other automation, arriving in draft status | Sub-account level Stripe fields |
| Contacts already enrolled in workflows, with enrollment data intact | Mailgun and SMTP configuration |
| Users of type Account assigned only to that sub-account | SaaS mode settings |
| Sub-account level API keys | Domains, including whitelabel subdomains |
| LC Phone numbers, when both agencies run on LC Phone | Add-on subscriptions such as WordPress, Yext, WhatsApp, and Dedicated IP |
How does a HighLevel sub-account transfer actually work?
Two things are worth understanding before you touch the button.
First, a transfer is a move, not a copy and not a merge. HighLevel’s own analogy is picking up a house and setting it down in a different neighborhood. You cannot transfer half a sub-account, you cannot fold its contacts into an existing sub-account on the other side, and once the receiving agency approves the request, the sub-account is theirs. Your agency loses access to it.
Second, permissions on this are deliberately tight. By default only the agency owner can request or complete a transfer. The owner can extend that permission to specific agency admins, and any admin without it simply cannot submit or approve a request. That restriction exists for the obvious reason: transfer is the one action in HighLevel that hands an entire client’s data to a different company.
The mechanics from the releasing side are short. Open Agency Level > Sub-Accounts, go to Manage Client for the sub-account, and choose Actions > Transfer Sub-account. You will be asked for the receiving agency’s Relationship Number, which they can find in their own agency settings, so get it from them first rather than guessing. Confirming sends a request. The receiving agency gets an email with a Review Request button and can also find the request under Sub-Accounts > Sub-Account Transfers. As soon as they approve, the sub-account moves.
Both sides can watch the request from that same Sub-Account Transfers page, on the Send or Receive tab depending on which end you’re on, and a pending request can be cancelled from its three-dot menu. If you have several sub-accounts going to the same agency, HighLevel supports bulk transfers rather than making you repeat the process. And if the transfer screen refuses to cooperate, HighLevel’s guidance is to open a support ticket rather than improvise.
One eligibility note that trips people up: the receiving agency has to be active and actually able to take the account. If they’re over capacity for their plan, or the sub-account is HIPAA-enabled and they haven’t bought the HIPAA compliance add-on, the transfer stalls until they fix it. Confirm that on their side before you start.
What should you do before sending the request?
Most of the pain in a transfer comes from skipping the prep, so here is the part to do slowly.
Sort out users first. Only users set to the Account user type, and assigned exclusively to the sub-account being transferred, come across. A user assigned to that sub-account and two others stays behind, which means the receiving agency inherits an account with missing staff and orphaned record ownership. Fix the assignments before you send, not after.
Then handle the things that block a transfer outright. SaaS mode has to be disabled on the sub-account. Active add-on subscriptions attached to it, WordPress hosting, Yext, WhatsApp, a dedicated IP, need to be cancelled first, because they don’t move and they will hold the transfer up. HighLevel also recommends setting campaigns, triggers, and workflows to draft before you go, which matches what happens on arrival anyway.
Now document what won’t survive. Saved smart lists don’t transfer, so screenshot every filter set the client relies on. Domains and subdomains have to be re-added on the other side, which makes this a good moment to write down every custom domain and DNS record in play. The same goes for integrations, since every auth connection is deleted in the move and someone has to know which ones existed to reconnect them.
There’s a smaller detail worth a note in the handover doc: deleted workflows don’t come along. HighLevel’s deleted-workflow tab shows only items deleted in that location, so anything sitting in the recycle bin at the moment of transfer effectively evaporates. If a deleted workflow matters, restore it first.
What does the receiving agency have to rebuild?
Plan for a rebuild day, and set the client’s expectations accordingly, because for a few hours the account will look right and behave wrong.
The list is fairly predictable. Every auth connection has to be reconnected, with Facebook and Google reintegrated from scratch. Sub-account level Stripe has to be set up again. Email and phone senders have to be re-added, which in practice means LC Email or Mailgun or SMTP on one side and LC Phone or Twilio on the other. Domains have to be re-added and DNS re-verified. SaaS mode has to be switched back on if the account was a SaaS client. And every workflow, campaign, and trigger has to be published, since they all land in draft.
Email deserves its own paragraph because the behavior varies. On LC Email, a dedicated domain assigned by the old agency is removed during the transfer, while a dedicated domain owned by the sub-account itself comes across. A dedicated IP is unassigned and its subscription removed. The email verification on or off setting is preserved. After the move, the sub-account uses LC Email if the receiving agency does, or switches to whatever provider the receiving agency uses instead. If the sub-account was on Mailgun or SMTP, that configuration is wiped and the account adopts the new agency’s default.
Phone numbers are the single most common surprise. If the releasing agency, the receiving agency, and the sub-account are all on LC Phone, the numbers move with the account and eligible A2P registration stays attached, with future usage billed to the receiving agency. If either side is running Twilio, HighLevel moves nothing, and the two agencies plus the Twilio account owner have to coordinate the port themselves. That negotiation is much easier before the transfer than after, when one party has the account and the other has the numbers.
There’s also a security item people forget. Sub-account level API keys carry over unchanged, which is convenient for the receiving agency and a problem for the releasing one. Any integration you built against that sub-account keeps working from the other side of the handover. Rotate anything sensitive as part of your offboarding, the same way you would when a staff member leaves.
Should you transfer to an existing agency or eject the sub-account?
There’s a second option in the same menu, and it fits a different situation. Ejecting converts a sub-account into a standalone agency of its own instead of moving it under someone else’s roof. You nominate one user from the sub-account to become the new agency owner, they get an email invitation to sign up on the $97 per month plan, and the sub-account lands in the agency account they create. HighLevel pays the releasing agency a 40% affiliate commission on that new agency’s renewals.
So the choice is really about where the client is going. If another agency is taking over the relationship, transfer to their agency using their relationship number. If the client is leaving to run HighLevel themselves, eject, which spares everyone the awkward step of parking the account somewhere temporary. The asset behavior is broadly the same either way, including the parts that get cleared.
Why take your own backup before a transfer?
Here is the thing that makes transfers different from every other risky operation in HighLevel: there is no second copy anywhere.
A transfer is an ownership change on the only instance of that data. Once the receiving agency approves, your access ends, and if something is wrong on the other side, missing smart lists, a workflow that came across mangled, a client who calls three weeks later asking for a conversation thread from last year, you are asking a favor of another company rather than fixing it yourself. Reversing a completed transfer is not a self-serve action. And unlike a deletion, none of HighLevel’s recovery windows apply here, because from the platform’s point of view nothing was lost.
The instinct is to take a snapshot first, which is worth doing and is not a backup. Snapshots copy configuration, not contacts, conversations, or opportunities, so a snapshot protects your build and none of the client’s actual business. A contact export gets closer but is thinner than most people assume and leaves conversation history behind entirely. Workflows have their own awkward story, since there is no native export for them outside of snapshots.
Closing that gap is why we built GHLArmor, so weigh the recommendation knowing it’s our product. It’s the first backup approved by the HighLevel Marketplace, and it copies contacts, conversations, custom fields, opportunities, and workflows to storage outside HighLevel on a schedule. In a transfer, that’s the difference between handing over a sub-account and handing over your only record of the work. Agencies that keep an independent copy can offboard a client cleanly, answer questions about the relationship months later, and prove what the account contained on the day it changed hands, which matters more than it sounds when a handover turns into a dispute. It’s also the same protection that keeps a client’s data reachable when an agency shuts down rather than transferring anything at all.
Whatever you use, take the copy before the transfer, not during. After approval there is nothing left to copy from.
Frequently asked questions
Can I transfer only part of a HighLevel sub-account? No. HighLevel moves the entire sub-account or nothing. Partial transfers are not supported, and a transfer cannot merge one sub-account’s data into another sub-account. If you only want to hand over some records, you have to export them and let the other side import them, which loses conversation history.
Who is allowed to transfer a HighLevel sub-account? By default only the agency owner can request or approve a sub-account transfer. The agency owner can grant transfer permission to specific agency admins, and admins without that permission cannot submit or approve requests. The receiving agency also has to be active and have the capacity and compliance add-ons to accept the sub-account.
Do phone numbers transfer with a HighLevel sub-account? Only if both agencies use LC Phone. In that case the numbers move with the sub-account, eligible A2P registration stays attached, and future usage is billed to the receiving agency. If either agency runs on Twilio, no numbers move automatically and both sides have to coordinate the port with Twilio separately.
Do workflows keep running after a HighLevel sub-account transfer? No. Automation transfers with the sub-account but arrives in draft status, so nothing fires until the receiving agency publishes it. Contacts already enrolled in a workflow stay enrolled and their enrollment data comes across intact. The receiving agency should plan to review and publish every workflow on day one.
Can I undo a HighLevel sub-account transfer? Before approval, yes. A pending request can be cancelled from the three-dot menu on the Sub-Account Transfers page. Once the receiving agency approves, HighLevel’s documentation describes no self-serve rollback, so getting the sub-account back means asking the receiving agency to transfer it to you or opening a support ticket.