# Move from GoHighLevel or HubSpot

> Scan your GoHighLevel or HubSpot account, choose what to bring into Spacebrain, check the results, finish the cutover, and resume or undo a migration.

Canonical: https://help.spacebrain.ai/integrations/migrate-from-gohighlevel-or-hubspot/
Last modified: 2026-09-25T00:00:00.000Z

If you're moving to Spacebrain from GoHighLevel or HubSpot, a guided migration copies your records, pipelines, and supported setup into your workspace. Spacebrain scans first, shows you what it found, and lets you choose what to bring over before anything is created. This guide is for the workspace admin running the move.

## Before you begin [#before-you-begin]

* **Role:** a workspace **Admin** or **Owner** must connect, run, undo, or finalize a migration. Other roles can look around and read the results. They see &#x2A;*You can explore the migration options and review evidence. A workspace admin must connect, run, undo, or finalize connected migrations.**
* **Availability:** guided migrations are being turned on workspace by workspace. If you see **Connected migrations are in concierge beta**, contact support to ask about access. In the meantime you can import contacts, companies, or leads from a CSV or Excel file on the same page.
* **One account per workspace:** each HubSpot account or GoHighLevel location moves into one Spacebrain workspace. Check you're in the right workspace.
* **A dedicated access token** from your old system, with read-only access (steps below).
* **Time to review:** plan to check the results before you switch your team over. Don't switch off the old system on the same day.

## Where to start [#where-to-start]

There's one migration page. You can reach it three ways:

* **Integrations → Browse apps**, select **HubSpot** or **HighLevel** (GoHighLevel), then select **Open migration**.
* **Settings → Migrations**.

The page is titled **Migrations**. A step bar shows where you are: **Source**, **Scan**, **Plan**, **Migrate**, **Verify**. If you've started before, choose it from the migration list to continue, or select **New migration**.

## Step 1: Choose your source and connect [#step-1-choose-your-source-and-connect]

1. Under &#x2A;*Where are you moving from?**, choose **HubSpot** or **GoHighLevel**. (Choose **Other CRM / file** to upload a spreadsheet instead.)
2. **For GoHighLevel**, choose what to move:
   * **Migrate a live location** scans your working sub-account and can move its records.
   * **Import a snapshot (guided)** brings reusable setup, such as fields, pipelines, and automation drafts, from a clean temporary location. A snapshot doesn't include contacts, appointments, or conversations.
3. Paste your token:
   * **HubSpot:** paste a **HubSpot private app token**.
   * **GoHighLevel:** paste a **HighLevel private token** and the **Location ID**. Use the sub-account ID, not your agency ID.
4. Select **Connect and scan**.

The token is stored encrypted. Nothing is imported at this step, and your old system isn't changed.

### Create the token [#create-the-token]

Open &#x2A;*Need help connecting HubSpot?** or &#x2A;*Need help connecting GoHighLevel?** on the page for step-by-step help. In short:

* **HubSpot:** a super admin creates a private app, named "Spacebrain migration", with **read** access to the data you want to move. Copy the access token from its **Auth** tab.
* **GoHighLevel:** in the sub-account you're moving, open **Settings → Private Integrations → Create new integration**. Name it "Spacebrain migration", give it read access, then copy the token and the location's ID. Use a Private Integration token, not an older API key.

Use a token made only for this migration, so you can remove it afterwards without breaking anything else.

## Step 2: Scan [#step-2-scan]

Spacebrain reads your account's records, fields, and automation settings. The page shows **Scanning source account**. No records change in your old system, and nothing is created in Spacebrain during the scan.

If the scan stops, select **Retry scan**. It picks up safely. You can also select **Cancel scan safely**.

## Step 3: Plan what to move [#step-3-plan-what-to-move]

### Choose what to bring [#choose-what-to-bring]

Under **Review the source inventory**, you'll see counts from your old account and a checkbox for each area:

* **Companies**, **People**, and **Selective Leads**
* **Custom field definitions**
* **Pipelines and stages** and **Deals / opportunities**
* **Notes** and **Tasks**
* **Email, SMS, call, and meeting history** (brought in read-only; nothing is re-sent)
* **Automation drafts and parity report**

An area marked **Unavailable with this token** needs more permissions on your token. Add them and scan again, or leave that area out.

### Check where things will go [#check-where-things-will-go]

**Migration destinations** shows how each area is handled:

* **Automatic:** Spacebrain creates it for you.
* **Drafts:** created switched off, for you to review. Automations always arrive as drafts.
* **Guided:** added to your cutover checklist to rebuild by hand.
* **Not detected:** nothing found in your account.

Under **Asset migration plan**, you can change individual items to **Import automatically**, **Create disabled draft**, **Map existing asset** (use something you already built in Spacebrain), **Guided rebuild**, or **Exclude**.

### Set the rules [#set-the-rules]

Under **Migration policy**:

* **Existing-record policy** decides what happens when a record already exists in Spacebrain:
  * **Fill blank Spacebrain fields (recommended)** keeps your Spacebrain values and only fills empty fields.
  * **Source values win** overwrites with values from the old system.
  * **Skip existing records** leaves existing records alone.
* **Historical activity range**: &#x2A;*Last 24 months (recommended)**, **All available history**, or **Custom start date**.
* **Create Leads for people associated with deals** if you want those people to appear as leads too.

Spacebrain matches records by the old system's ID first, then by email or phone (people) or company domain.

### Run preflight and start [#run-preflight-and-start]

1. Select **Save and run preflight**.
2. Read **Preflight findings**. Fix any blockers. For a problem record you don't need, select **Skip source record**.
3. When you see &#x2A;*Preflight passed. The migration is ready.**, select **Start migration**.

If you change the plan after preflight, you'll need to save and run preflight again.

## Step 4: Migrate [#step-4-migrate]

The page shows **Migration in progress** and a table with **Processed**, **Created**, **Updated**, **Linked**, **Skipped**, and **Failed** counts for each phase.

* You can leave the page. The migration keeps running, and you can come back to it later.
* While it runs, notifications and outgoing automations are switched off for imported records, so customers aren't contacted.
* Attachments and call recordings are not copied.
* To stop, select **Cancel safely**. The current batch finishes before it stops.

## Step 5: Check the results and switch over [#step-5-check-the-results-and-switch-over]

Under **Reconciliation and cutover**:

1. Compare the totals (**Created**, **Updated**, **Skipped**, **Needs review**) with your old system.
2. Select **Download CSV report** to keep a record. It can contain record IDs and notes, so share it only with people who need it.
3. Work through **Migration findings**. Filter by **Blockers**, **Warnings**, or **Information**.
4. Open some imported records and check names, owners, deals, and history.
5. Review the automation drafts and turn on only the ones you've checked.
6. Complete each item in the **Cutover checklist**. If an item doesn't apply, select **Waive with reason** and explain why.
7. Connect your Spacebrain email, phone, and messaging channels. Imported conversations are history only; new messages need live channels.
8. Select **Finalize migration**. It's available only when required checklist items are done.

When you finalize, Spacebrain deletes the stored token (unless a newer migration still uses it). Your report stays available. Afterwards, remove the token in your old system too.

## If a migration is interrupted [#if-a-migration-is-interrupted]

* **You closed the browser or lost connection.** The migration keeps running. Reopen **Settings → Migrations** and choose it from the list.
* **Live updates paused.** You may see **Live updates are temporarily unavailable** or &#x2A;*Live updates paused after one hour.** The migration continues. Refresh to see the latest status.
* **It failed or you cancelled it.** Select **Resume from checkpoint**. Every phase saves its place, and records already imported are linked to their source, so resuming doesn't create duplicates.
* **You want to reverse it.** Select **Undo partial migration** (after a failure) or **Undo migration** (after it finishes). You can undo for seven days (**Seven-day safety window**). Records your team changed after the import are protected and left alone.
* **Undo failed.** Select **Retry undo**. If the undo window has expired, no further records are changed automatically; contact support.

For more, see [troubleshoot migrations](/troubleshooting/migrations/).

## FAQ [#faq]

### Will my customers get emails or texts during the migration? [#will-my-customers-get-emails-or-texts-during-the-migration]

No. Imported records don't trigger notifications or outgoing automations, and imported message history is never re-sent.

### Can I run the migration twice? [#can-i-run-the-migration-twice]

Yes. Records are linked to their source IDs, so a second run updates or skips them based on your **Existing-record policy** instead of creating duplicates.

### Does a GoHighLevel snapshot include my contacts? [#does-a-gohighlevel-snapshot-include-my-contacts]

No. A snapshot contains setup only. To move contacts and history, run a live location migration.

## Next step [#next-step]

After you finalize, check your data in [records, imports, and enrichment](/crm/records-and-imports/).
