Agencies need to move contacts between GoHighLevel sub-accounts more often than you'd expect: a client splits into two businesses, a broker hands a book of leads to a partner, or you consolidate test accounts into a live one. HighLevel has two native ways to do it, and both move the contact record but not the files. This guide covers each method, what it drops, and how to prepare the destination so the move goes cleanly.
Before you move contacts between GoHighLevel sub-accounts
Whichever method you use, the destination needs matching structure first. Custom field values only land if a field of the same type exists on the other side.
- Compare custom fields. List the source sub-account's fields and check each one exists in the destination with the same type. A text field in one and a dropdown in the other won't map. Comparing custom fields between sub-accounts covers how.
- Create missing fields. Add them by hand in Settings under Custom Fields, or see bulk creating custom fields.
- Create tags you'll reference in imports or workflows.
- Match dropdown options exactly. A value that isn't one of the destination's options may not import as expected.
- Consider a snapshot if the destination also needs the source's pipelines, workflows and forms. Snapshots copy configuration, not contacts.
Method 1: Export a CSV and import it
The most common approach, and the only one that doesn't cost per contact.
- In the source sub-account, go to Contacts > Smart Lists and filter to the contacts you're moving.
- Use Manage Fields to show every column you need. The export only includes visible columns.
- Select the contacts and choose Export. Download it from Contacts > Bulk Actions.
- In the destination sub-account, start a contact import and upload the CSV.
- Map each column to the matching standard or custom field.
- Decide how to handle duplicates, and add a tag like
moved-from-acme-2026-10so you can find this batch later. - Run the import and spot-check a few records.
What doesn't come along:
- Notes beyond the latest one, which is cut at 255 characters
- Conversations, calls and recordings
- Tasks and appointment history
- Files in upload fields, attachments and signed documents
- Opportunities, which need their own export and import
Method 2: The Copy Contact to Sub-Account workflow action
HighLevel's workflow builder has an action that copies a contact into another sub-account. As of October 2026:
- It's a premium action billed per execution, and LC Premium Triggers & Actions must be enabled in agency settings.
- You choose the target sub-account and can toggle Copy Tags, Copy Custom Fields and Update Contact if it Already Exists, plus add new tags in the target.
- There's an option to skip contacts missing both email and name.
To move an existing list:
- Create a workflow with a trigger you can control, such as Contact Tag added.
- Add Copy Contact to Sub-Account, pick the destination and set the toggles.
- Publish it, then bulk-add the trigger tag to the contacts you want to move.
It's handy for ongoing syncing, such as copying every new VIP lead into a partner's account. Its limits match the CSV route and add a cost:
- Custom fields only copy if the field exists in the target with the same type.
- Conversations, activity, notes, tasks, appointments and payments aren't copied.
- HighLevel's docs say file and document transfer isn't supported, and a copied contact may still point to files stored on the original. If you delete the original, those files can become inaccessible.
The file problem
Both native methods give you a contact in the destination with empty file fields. For many businesses, that's the part that matters. A lending partner receiving a book of merchants needs the bank statements and applications. A franchise splitting territories needs signed agreements.
Doing it by hand means downloading each file from the source contact and uploading it to the matching contact in the destination. With the API, you can script it, but you'll need to:
- Download every file from each source contact.
- Find or create the matching destination contact.
- Upload each file into the right file field on the destination contact.
- Log anything that failed so nobody assumes it moved.
Downloading all files from GoHighLevel contacts covers the first half of that in detail.
Checklist after the move
- Contact counts match between your filter in the source and your import tag in the destination.
- Custom field values appear on a sample of records.
- File fields are populated, if you moved files.
- Duplicates were handled the way you intended.
- Workflows in the destination didn't fire unexpectedly on imported contacts. Pause contact-created triggers during big imports if needed.
- The source contacts are kept, at least until you've confirmed the files are safe.
Where the native way gets slow
The record moves in minutes. The files are the slow part, and they're the part neither native method handles. For agencies doing this regularly, such as splitting a book between partners or reps, it turns into a recurring manual project.
How Backup & Insights handles it
Backup & Insights from RGS Tools moves contacts with their documents.
- Copy to another sub-account pushes contacts and their documents into a different sub-account.
- Rep packages split a sub-account's contacts into packages with their files, one per rep. Useful when a book is being divided rather than moved whole.
- File backup keeps a copy of every file with a manifest tying it to its contact, so you have a record of what existed before the move.
Backup & Insights is $99/mo per agency with unlimited sub-accounts and a 7-day free trial. Use it alongside the field preparation steps above, since the destination still needs matching fields.
Questions
Can I copy contacts from one GoHighLevel sub-account to another?
Yes. You can export a CSV and import it into the other sub-account, or use the Copy Contact to Sub-Account workflow action. The workflow action is a premium action billed per execution and must be enabled in agency settings.
Does Copy Contact to Sub-Account copy files and conversations?
No. As of October 2026, HighLevel's documentation says file and document transfer isn't supported by the action, and conversations, activity, notes, tasks, appointments and payments are not copied.
Why didn't my custom fields copy to the new sub-account?
Custom field values only copy when a field with the same type already exists in the destination sub-account. Create or match the fields first, then run the copy.