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
- Click Connect via GoHighLevel Marketplace in Myra → Migrations (section 2).
- Sign in to GoHighLevel and approve the exact sub-accounts you want (section 3).
- Tick the locations to import and check the pre-import scan counts (section 4).
- Start the import and walk away (section 5).
- Approve the pipeline mapping when it pauses for you (section 7).
- 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
- In Myra, open Migrations in the business sidebar.
- Click New migration.
- Choose GoHighLevel as the source platform.
- 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.
- Sign in with your GoHighLevel credentials.
- If asked to choose an account type, pick Agency if you want several locations, or the single location if you only need one.
- 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.
- Click Allow / Install / Authorize (the wording varies by GoHighLevel version).
- 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:
- 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.
- 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.
- 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.
