GoHighLevel

Import contacts into GoHighLevel without the mess

The import itself takes ten minutes. Everything that goes wrong afterwards was decided in the file you uploaded.

By Sowrav Chowdhury22 July 20267 min read

How do I import contacts into GoHighLevel?

Go to Contacts → Import, upload a CSV (Excel and Sheets files must be exported to CSV first), map your columns to GoHighLevel fields, set a unique identifier so existing contacts update rather than duplicate, then confirm. Keep files within your account limit — commonly 30–50 MB — and split larger lists into batches. A prepared file imports in under ten minutes.

Step by step

  1. Export to CSV, not XLSX

    GoHighLevel accepts .csv only. Export from Excel or Google Sheets first, and check the encoding is UTF-8 or accented characters will arrive corrupted.

  2. Clean the file before uploading

    Deduplicate, normalise phone numbers to E.164, and standardise company names now. Importing a messy file just moves the mess into a system where it is harder to fix.

  3. Check the header row

    One header row, no merged cells, no blank columns between populated ones. GHL reads the first row as field names and a stray blank column will silently misalign everything after it.

  4. Check the file size

    Account limits are commonly 30–50 MB. Split larger files into batches rather than letting an upload fail halfway and leave a partial import.

  5. Map every column deliberately

    Do not accept the auto-mapping without reading it. Custom fields in particular get matched to the wrong target when names are similar.

  6. Set the unique identifier

    This is the setting that decides whether you are updating or duplicating. Choose ‘update existing contacts’ and map email as the identifier unless you have a genuine reason not to.

  7. Name the import and set tags

    Give the import a name you will recognise in three months and apply a source tag. When something looks wrong later, you will be able to isolate exactly which batch caused it.

  8. Verify a sample after import

    Pull 50 records at random and compare them against the source file. Check custom fields and phone formatting specifically — those are where mapping errors hide.

Errors that block a GoHighLevel import

Most failed imports come down to five causes:

  • Wrong file type — .xlsx or .numbers instead of .csv
  • File too large — over the account limit, so split into batches
  • Malformed header row — merged cells, blank columns, or two header rows
  • Invalid characters — non-UTF-8 encoding mangling accented names
  • Insufficient permission — only Admin-level users can run imports

Migrating from another CRM

Contacts, custom fields, tags and opportunity records all move by CSV. Automations do not — GoHighLevel workflows are structured differently and have to be rebuilt rather than lifted across.

One thing that catches agencies out mid-migration: snapshots do not carry contacts. A snapshot captures funnels, workflows, pipelines, calendars and templates. Contacts, conversations and call logs stay in the source sub-account and need a separate CSV migration.

Want this done for you?

This is our most-requested work — 237 of our 282 client reviews come from CRM and GoHighLevel data projects. Send a sample export and we will tell you what is in it, free, within one business hour.

Sowrav Chowdhury

Sowrav Chowdhury has worked in data since 2013 and founded The Data Collection in 2020. He and a team of ten have delivered 450 projects and processed over 300,000 records, with 282 client reviews at 4.8 stars.
More about the team →

FAQ

Common questions

What file format does GoHighLevel accept for imports?

CSV only. Excel and Google Sheets files must be exported to CSV first, with UTF-8 encoding to preserve accented characters.

Why did my GoHighLevel import create duplicates?

Almost always because no unique identifier was mapped, or the import type was set to 'add new' rather than 'update existing'. GHL will happily create a second record for the same person if nothing tells it not to.

Do GoHighLevel snapshots include contacts?

No. Snapshots capture system assets only — funnels, workflows, pipelines, calendars and templates. Contacts, conversations, call logs and billing settings must be migrated separately.

How long does a GoHighLevel import take?

A prepared file under the size limit typically processes in under ten minutes. The preparation is where the real time goes, and where the errors are prevented.

Data you can actually trust

Tell us what is broken. We will tell you what it would take to fix — and if the answer is nothing, we will say that too.

Get a free assessment WhatsApp