Migration guide

Switching from GoHighLevel, in the right order

What a contact CSV brings across, what you rebuild, what stays in GoHighLevel — and the order that gets you moved without your old tags quietly enrolling thousands of people in a live sequence.

What comes across, and what does not

FrazzleCRM does funnels, email and SMS automation, contacts and calling. It imports contacts. Everything else is either rebuilt or not something FrazzleCRM does.

Comes across in the CSV

  • • Contacts: name, email, phone (normalised to E.164), organization, notes
  • • Tags, split on commas or semicolons
  • • Custom fields, under their column name
  • • Timezone, in GoHighLevel's export format
  • • Date created, kept as the contact's date added
  • • DND, as Do Not Disturb on every channel

You rebuild

  • • Workflows → flows on the funnel map, started from a template, the generator or an AI draft
  • • Smart lists → contact filters on tags, fields, appointments and flow history
  • • Form and booking events → inbound webhooks, or the appointment sync API on Pro
  • • Email sending → your own SMTP provider and domain
  • • SMS and calls → your own Twilio account and number

Stays in GoHighLevel

  • • SMS and email conversation history
  • • Opportunities and pipeline boards
  • • Hosted funnels, websites and booking calendars
  • • Courses and memberships, reviews, invoicing
  • • SaaS-mode reselling and the mobile app

Seven steps, in this order

The order is the point. Contacts arrive before any flow is live, and unsubscribes arrive before anything can send.

  1. 1

    Set up sending first

    In FrazzleCRM, add your email provider and, if you text or call, your Twilio number under Settings → Credentials. If you text US numbers, start A2P 10DLC registration now — carriers review it and it is not instant.

  2. 2

    Export your contacts from GoHighLevel

    Export the contact list to CSV. Keep the tags, timezone, date created, DND and custom field columns — each one maps to something in FrazzleCRM.

  3. 3

    Import with automations off

    Go to Contacts → Import CSV. Leave “Fire automations for imported contacts” unticked, which is the default, so no historical tag can enroll anyone in a live flow.

  4. 4

    Check the column mapping

    Each column is guessed from its header. Confirm Email, Phone, Tags, Timezone, Created date and DND. Any other column imports as a custom field under its own name.

  5. 5

    Carry unsubscribes over

    If DND was not a column in your export, export the unsubscribed contacts separately. On the contact list, use Select by CSV with that file and mute the right channels in bulk.

  6. 6

    Rebuild workflows as draft flows

    Start from a template, describe the funnel to the generator, or have Claude draft flows over MCP on Pro. Leave them as drafts until the last step.

  7. 7

    Run both, then cut over

    Point a GoHighLevel workflow's Webhook action at a FrazzleCRM inbound webhook so new leads land in both systems. Flip flows live one at a time, and enroll existing contacts on purpose with Add to flow.

Setup guides for step 1: email providers, Twilio and A2P 10DLC. For step 6: templates, the funnel generator and AI over MCP. For step 7: inbound webhooks.

How the importer reads GoHighLevel columns

These results come from the importer's own parsing code, run when this page was built. A value it cannot read is left blank rather than guessed.

Timezone
GMT-4 America/New_York (EDT)
→ America/New_York
GMT+5.75 Asia/Kathmandu (+0545)
→ Asia/Kathmandu
America/Chicago
→ America/Chicago
Eastern Time
→ left blank
Date created
2021-03-14Kept as date added
1970-01-01Ignored — before 1990
2099-01-01Ignored — in the future
last springIgnored — not a date
DND
trueMuted on all channels
1Muted on all channels
yesMuted on all channels
falseNo change
noNo change
(empty)No change

Contacts are matched by email, ignoring case. A row with neither a first name nor an email is skipped. Inbound email already received from an address joins that contact's timeline. Read more about Do Not Disturb and tags.

Importing a second file

When a row's email already exists, the importer either skips it (the default — the existing contact is not touched at all, DND included) or merges it. Use Merge for any correction file:

Last name, phone, organization, notes, timezoneExisting values are kept; blanks are filled from the file. First name is never changed.
TagsAdded. Nothing is removed, and a tag that differs only in case is not duplicated.
Custom fieldsThe file wins — the one place a merge overwrites.
Date addedMoves earlier if the file's date is older, never later.
Do Not DisturbTurned on for every channel if the file says so. An import never turns it off.

Honest notes

Your conversation history stays behind. The importer takes one row per contact. SMS and email threads and call logs do not come across, so save anything you need from GoHighLevel before you cancel.

There is no pipeline board. FrazzleCRM has no opportunities object. A tag or custom field per stage plus contact filters covers simple stage tracking; if your team works deals from a board all day, that is a real gap.

Pages and calendars live elsewhere. Page cards on the funnel map describe pages hosted somewhere else. Bookings reach FrazzleCRM from your scheduler through an inbound webhook or the appointment sync API, and appointment triggers take it from there.

Rows without an email are created every time. Matching is by email only, so importing a phone-only file twice makes two copies of each contact. Import those once.

Tag dates start on import day. Tag history records the import as the moment each tag was applied. For the first week, a filter like “tag added in the last 7 days” matches every imported tag.

Old tags will not start new flows. A tag trigger fires when a tag is added, and imported contacts already have theirs. To put existing contacts into a flow, select them and use Add to flow.

Your plan caps the contact count. New contacts past the cap are skipped and counted in the import result, not silently dropped.

Contacts per workspace
Free500
Starter5,000
Pro25,000
Scale100,000
Founder (Founding Member)Unlimited

Prices for each plan are on the pricing page; the cost calculator compares them with GoHighLevel.

Common questions

Will importing my GoHighLevel contacts send them emails?

Not by default. The importer fires no automations unless you tick “Fire automations for imported contacts”. Leave it off for a migration: historical tags that match live tag triggers would enroll everyone who carries them at once. Tag history is still recorded either way.

Can I import my GoHighLevel workflows?

No. FrazzleCRM imports contacts from a CSV; workflows are rebuilt as flows on the funnel map. You can start from one of the free templates, describe a funnel to the funnel generator, or connect Claude over MCP on the Pro plan and have it draft flows for you to review. AI-created flows land as drafts.

How large a contact list can I import?

The importer has no file-size ceiling: rows are uploaded in chunks and processed by a server-side job that resumes after a restart, so you can close the tab. What limits an import is your plan's contact cap: new contacts past it are skipped and show up in the import's skipped count.

What happens to contacts who unsubscribed in GoHighLevel?

Map the DND column if your export has one — any of true, 1 or yes turns on Do Not Disturb for email, SMS and calls. If it does not, export those contacts separately, use Select by CSV on the contact list and mute the channels they opted out of. Do this before any flow goes live.

Can I run GoHighLevel and FrazzleCRM at the same time?

Yes. Add an Inbound Webhook node to your FrazzleCRM map and point a GoHighLevel workflow's Webhook action at its URL. Each post creates or updates the contact under your workspace's dedupe setting and, if the node is wired to a flow, enrolls them — so new leads reach both systems while you rebuild.

Can I get my contacts back out of FrazzleCRM?

Yes. Export CSV on the contact list downloads every contact in the workspace, and Export selection downloads just the contacts you have selected.

Founding Member offer

Never pay monthly for a CRM again.

$397 once — one payment, no recurring FrazzleCRM subscription. Limited to 100 Founding Members, then the offer closes. Leaving a monthly GoHighLevel bill? This is one payment, not another subscription — you still bring your own SMTP and Twilio, billed at their cost.

100 spots total

See the Founding Member offer

Try the import before you commit

The free plan holds 500 contacts — enough to import a sample of your GoHighLevel export and check every column lands where it should. No credit card.

Start free

Still deciding? Read the honest FrazzleCRM vs GoHighLevel comparison, see how agencies use it on FrazzleCRM for agencies, or call contacts from the browser with the built-in dialer.