GoHighLevel migration pack

The complete, step-by-step guide to moving a GoHighLevel account into Myra - connecting the app, approving locations, what comes across, and how to rebuild workflows.

Moving from GoHighLevel to Myra. This guide assumes no technical knowledge. Follow it top to bottom.

Good news: there are no API keys to create. You sign in to GoHighLevel, tick the sub-accounts you want, and approve. That's the whole connection.

Total hands-on time: about 15 minutes. The import then runs by itself - typically 1-6 hours depending on how many locations and how much conversation history.


0. The whole thing in six lines

  1. Click Connect via GoHighLevel Marketplace in Myra → Migrations (section 2).
  2. Sign in to GoHighLevel and approve the exact sub-accounts you want (section 3).
  3. Tick the locations to import and check the pre-import scan counts (section 4).
  4. Start the import and walk away (section 5).
  5. Approve the pipeline mapping when it pauses for you (section 7).
  6. Spot-check, rebuild workflows, go live (sections 9-10).

Nothing is written back to GoHighLevel. The connection is read-only. Your GoHighLevel account keeps running the whole time.


1. Before you start

Thing Notes
Owner or admin on the Myra business If you can't see Migrations in the sidebar, ask whoever set the account up
Ability to sign in to GoHighLevel Agency login is best - it lets you approve several sub-accounts in one go. A single location login works too, it just imports that one
A decision: which sub-accounts move Each approved GoHighLevel location becomes a client in Myra, automatically. You do not create them by hand first

Vocabulary check. GoHighLevel calls each business a location or sub-account. Myra calls it a client. Same thing. GoHighLevel's agency level is Myra's business level.

One location, one Myra business. The same GoHighLevel location can only be imported into one Myra business at a time. If you need to move it, the first import has to be disconnected first.


2. Connect

  1. In Myra, open Migrations in the business sidebar.
  2. Click New migration.
  3. Choose GoHighLevel as the source platform.
  4. Click Connect via GoHighLevel Marketplace.

A GoHighLevel window opens. This is GoHighLevel's own screen, not ours - your password is never typed into Myra.

 ┌── Myra ───────────────────────────────┐
 │  New migration                        │
 │  Source platform                      │
 │   ( ) Close                           │
 │   (•) GoHighLevel                     │
 │                                       │
 │   [ Connect via GoHighLevel Market… ] │  ← click
 └───────────────────────────────────────┘
                 ↓ opens
 ┌── GoHighLevel ────────────────────────┐
 │  Sign in                              │
 │  Choose account to install into:      │
 │   (•) Agency: Acme Media              │
 │   ( ) Sub-account: Acme Dental        │
 │                                       │
 │  Select sub-accounts:                 │
 │   [x] Acme Dental                     │
 │   [x] Northside Roofing               │
 │   [ ] Test Account – Do Not Use       │
 │            [ Allow / Install ]        │
 └───────────────────────────────────────┘

3. Approve the right sub-accounts

This is the step people get wrong, so read it twice.

  1. Sign in with your GoHighLevel credentials.
  2. If asked to choose an account type, pick Agency if you want several locations, or the single location if you only need one.
  3. You'll see a list of sub-accounts with checkboxes. Tick only the ones you actually want in Myra. Leave test accounts, dead clients and demo locations unticked.
  4. Click Allow / Install / Authorize (the wording varies by GoHighLevel version).
  5. You are returned to Myra automatically. The approved locations now appear in a list.

Approved the wrong ones? Click Reset connection in Myra, then reconnect and approve again. Nothing is lost.

Approved more later? Click Refresh approved clients in Myra - it re-reads what GoHighLevel has authorised without a full reconnect.

The list loads automatically once you are connected. Nothing is ever ticked for you - you choose every sub-account you want to import, and Start migration stays disabled until you do.

Locations are offered whenever your workspace holds a GoHighLevel install covering them. GoHighLevel shows every sub-account under the company the app is installed on, even ones another workspace approved, so Myra records which workspace claimed each sub-account first. Sub-accounts already claimed by another workspace are not shown to you at all. Locations you have no install for are not added at all.

Installed Myra from GoHighLevel's marketplace page instead? GoHighLevel has no way to tell us which of your businesses you meant, so the connection is held safely to one side and you are taken to a short page asking which business it belongs to. Pick one you own or administer and it is attached straight away. A connection can only ever be attached once. Starting from Connect via GoHighLevel Marketplace inside Myra skips that extra step.

"Needs re-authorisation" banner? Your connection predates our public marketplace app. Just click reconnect and approve; it takes ten seconds.

Reference: GoHighLevel's own docs on marketplace app distribution and installs.


4. Choose locations and check the scan

Back in Myra you'll see each approved location with a checkbox and a scan of what's inside it:

 [x] Acme Dental          contacts 3,204 · opportunities 512 · conversations 18,330
 [x] Northside Roofing    contacts 1,118 · opportunities 209 · conversations  6,004
 [ ] Test Account         contacts     4 · opportunities   0 · conversations      2

Read the numbers against what you see in GoHighLevel. Wildly wrong figures mean the wrong location was approved.

There is no dry run for GoHighLevel migrations. Dry runs exist only for Close. For GoHighLevel, the pre-import scan counts above are your check: compare them with what you see in GoHighLevel before starting, because the next step writes data.

(A GoHighLevel migration does have a Dry run button on the review page after the import - that is the rollback preview, which shows what a rollback would remove. It is a different thing and it never runs before an import.)

If a count shows "couldn't count" instead of a number, that's a failed request, not zero. Retry before importing.


5. Run the import

Click Start import. Close the tab if you like - a worker processes the run every minute on our servers, comfortably inside GoHighLevel's rate limits.

Order of work, handled for you:

 custom fields → pipelines → contacts
   → conversations → opportunities → calendars → appointments → users

Contacts land early so the account is usable while heavier history is still streaming in.

Safe to interrupt. Resumable and idempotent: a pause picks up where it stopped, and re-running never duplicates rows.

Nothing fires. Everything imported is stamped as imported, so live automations, live transfers, notifications and conversion events do not trigger on historical data.


6. What comes across

Data Comes across
Contacts, including phone, email, address and custom field values Yes
Tags Yes - they arrive attached to each contact, not as a separate step
Custom fields Yes
Custom values No - importing them needs a GoHighLevel permission (locations/customValues.readonly) that installs do not hold, so this is skipped on every run. Recreate them by hand
Pipelines and stages Yes
Opportunities, placed in the right pipeline and stage Yes
Conversations - SMS and email history Yes
Calendars - name, length, buffers, colour, timezone, capacity Yes (imported inactive, with a safe booking link that cannot clash with an existing one)
Appointments, past and future Yes - attached to the matching imported calendar. History goes back five years and forward two, with original dates kept. Past appointments are imported as history only, so no reminders or follow-ups fire for them. Large histories import over several passes and a re-run never duplicates.
Users / team members Yes
Notes on the contact timeline Yes

Original dates are preserved throughout.

What does not come across

Not imported What to do
Invoices, payments, subscriptions, billing history Stays in GoHighLevel and Stripe. Set billing up fresh in Myra
Workflows / automations Not machine-portable. Rebuild - section 8
Funnels, websites, blogs, memberships, courses Rebuild in Myra or keep them hosted where they are
Media library files, call recordings, voicemail audio Links in the old system aren't transferable. Download anything you must keep
Phone numbers, A2P brand/campaign registration, messaging profiles Numbers are ported or bought fresh in Myra; A2P is registered here
Reputation / review requests, snapshots, agency-level settings Rebuild

If it isn't in the first table, assume it needs rebuilding.


7. The pipeline mapping checkpoint

Before opportunities import, the run pauses and waits for you. This is deliberate - it's the one decision a machine shouldn't make alone.

You'll see, per location:

 Source pipeline / stage        →  In Myra                Opportunities
 Sales Pipeline / New Lead      →  Sales Pipeline / Lead        412  ✓ matched
 Sales Pipeline / Quoted        →  (will create)                 78  + new
 Old 2022 Pipeline / Dead       →  skip                          22  ⤫ skipped
 Referrals / Warm               →  Sales Pipeline / Lead   ⚠ guess  31
  • matched - lands in a pipeline/stage you already have.
  • will create - Myra makes it for you.
  • skip - those opportunities are not imported. Only choose this deliberately.
  • ⚠ amber - a name-similarity guess. Check every amber row and correct it.

Fix anything wrong, then click Approve and continue. The run resumes on its own.

Running unattended overnight? Tick Auto-approve pipeline mapping when you start the run and it will accept its own best guesses. Only do this if your pipeline names already match.


8. Rebuilding your workflows

GoHighLevel workflows can't be exported in a usable form, so we rebuild them. Three routes, fastest first:

  1. Check the automation library first. Myra ships templates for the workflows most businesses run - speed to lead, no-show follow-up, appointment reminders, review requests, long-term nurture. Most GoHighLevel workflows have a near-exact match already built. Start from the template and edit copy and timings.
  2. Prompt the AI builder. Describe it plainly: "when a lead comes in from the form, text them immediately, wait 5 minutes, call, then email if no reply". Myra builds the steps.
  3. Screenshot and paste. Open each workflow in GoHighLevel, screenshot the whole canvas including the trigger and each action's settings, then paste the screenshots into Myra's AI automation builder. It reconstructs the structure for you to check.

Every rebuilt automation gets tested with a dummy contact before it goes live. Check the trigger, every delay, and the from-number / from-address on each send step.


9. After the import - the ten-contact check

Open ten contacts side by side in GoHighLevel and Myra and confirm:

  • Name, phone, email, address match
  • Tags are all present
  • Custom field values carried over
  • Opportunity value and stage match
  • SMS and email history appears at the right dates
  • Past and upcoming appointments are on the calendar

Then the structure:

  • Every intended location became a client
  • Contact counts per location look right
  • Pipelines and stage order match
  • Calendars exist with the right names

10. Cutover checklist

  • Locations imported and contact counts look right
  • Pipelines, stages and opportunity columns correct
  • Conversations and appointments visible on sample contacts
  • Numbers bought or ported, A2P registration submitted
  • Calendars connected and availability set
  • Automations rebuilt, tested, switched on
  • Forms and booking links rebuilt and re-embedded on your site
  • Team invited and permissions set
  • Old GoHighLevel workflows turned off so nothing double-sends
  • GoHighLevel kept live for 30 days as a fallback

11. Troubleshooting

A location I approved is missing. Click Refresh approved clients on the migration.

Stuck on an old install / nothing happens when I connect. Click Reset connection, then reconnect and re-approve.

"Needs re-authorisation". The connection predates our marketplace app. Reconnect - no keys needed.

"This location is already attached to another Myra business." A GoHighLevel location can only live in one Myra business at a time. Disconnect it from the other business first.

The import stalled. Open the run and click Resume. It restarts from the last completed page.

Duplicate contacts appeared. Check Client settings → Contacts → duplicate matching. If it requires all fields to match, records missing an email won't merge. Loosen the rule and re-run - merging is idempotent.

Conversations imported but the contact looks empty. Contacts import before conversations; give the run time to reach that stage. The progress screen tells you which stage is running.

Still stuck? Contact support with your migration ID (top of the migration page).

After connecting GoHighLevel

Once you approve Myra in GoHighLevel you're returned to the Migrations page with a confirmation. If the sub-account list is empty, the connection worked but no sub-accounts have approved the app yet — install/approve Myra on each sub-account in GoHighLevel, then press refresh on step 1.