CRM migration
Field-level mapping, validation, and rollback between Close and HighLevel. We move data and schema; workflows are rebuilt natively in HighLevel.
Close
Source
HighLevel
Destination
Compatibility
8 of 14
objects map 1:1 between Close and HighLevel.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Close to GoHighLevel is a data-model reshaping, not a direct record copy. Close nests every object under a parent Lead; GoHighLevel separates Contacts, Companies, and Opportunities into independent record types. The structural mismatch is the primary source of duplicated contacts, lost pipeline context, and broken activity timelines in DIY migrations. We resolve it by mapping Close Leads to GoHighLevel Contacts (with the original company data stored on the Contact or as a linked Company record), splitting multi-contact Leads into a primary Contact plus additional Contact records on the same Opportunity, and preserving the full activity stream via JSON export. GoHighLevel Custom Fields must be designated as Contact or Opportunity fields at creation and cannot be switched afterward — we capture this decision during scoping. Workflows, Sequences, Smart Views, and calling campaign logic do not migrate; we deliver a written inventory for the customer's admin to rebuild in GoHighLevel's Automation and Workflow builders.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Close object lands in HighLevel, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Close
Lead
HighLevel
Contact + Company (lookup)
1:manyClose's Lead is the primary record container for B2B — it holds the company name, status, and owner. We map Close Lead to GoHighLevel Contact as the primary record, with the company name stored on the Contact record or linked to a GoHighLevel Company where the customer uses both objects. The Close Lead status label migrates as a GoHighLevel Tag or Contact Custom Field. Any Close Lead with multiple associated Contacts is handled as a primary Contact plus additional Contact records, all linked to the same GoHighLevel Opportunity.
Close
Contact (nested under Lead)
HighLevel
Contact
1:1Close Contacts are person-level records nested inside a parent Lead. We flatten them into standalone GoHighLevel Contact records linked back to the parent Company. The Contact's name, email, phone, and title migrate directly. If a Close Contact is the primary contact on an Opportunity, that relationship is preserved by linking the Contact to the corresponding GoHighLevel Opportunity record.
Close
Opportunity
HighLevel
Opportunity
1:1Close Opportunities sit on Pipelines and carry value, stage, expected close date, and owner. We map Opportunity fields to GoHighLevel Opportunity, preserving the monetary value, probability (as a GoHighLevel custom field since GHL Opportunity does not have a native probability field), and expected close date. The Opportunity's parent Lead becomes the GoHighLevel Contact and Company link. Owner assignment resolves via email match against GoHighLevel Users.
Close
Pipeline
HighLevel
Pipeline
lossyClose Pipelines are containers for Opportunity stages and are recreated as GoHighLevel Pipelines before any Opportunity records are imported. Pipeline name, display order, and stage structure are preserved. GoHighLevel Pipelines are created under Settings > Pipeline before migration begins, and the pipeline ID is captured in the source-to-target crosswalk for stage resolution.
Close
Pipeline Stage
HighLevel
Pipeline Stage
lossyEach Close Pipeline stage maps to a GoHighLevel Pipeline stage with its display order and stage name preserved. Stage probability from Close (if used) migrates as a GoHighLevel Opportunity custom field since GHL Pipelines do not have a native probability-per-stage model. Stage status options (won, lost, open) are mapped to GoHighLevel's stage status labels.
Close
Activity: Calls
HighLevel
Task (Call subtype) or Conversation
1:1Close call activities include call disposition, duration, recording URL, and transcript (if available). We export via JSON to capture the full call log. Calls migrate to GoHighLevel as Tasks with call type, or as Conversations linked to the Contact record. Call recordings are downloaded from Close and uploaded as GoHighLevel attachments on the matching activity record. The original timestamp is preserved to maintain the activity timeline order.
Close
Activity: Emails
HighLevel
Conversation or Note
1:1Close email activities store body content, direction (sent/received), and participant addresses. Rich text and HTML emails are preserved as GoHighLevel Conversation entries or as Note records with full body content. The linked Contact reference is resolved via the source-to-target ID crosswalk. Attachments on emails migrate as separate file attachments in GoHighLevel.
Close
Activity: SMS
HighLevel
Conversation
1:1Close SMS activities include message body and any attachments. We map SMS to GoHighLevel Conversations on the Contact record. If the SMS has media attachments, they are uploaded to GoHighLevel's Media Library and linked to the Conversation. SMS direction and timestamp are preserved in the Conversation metadata.
Close
Activity: Tasks
HighLevel
Task
1:1Close Tasks (standalone task records not tied to a call or email) migrate to GoHighLevel Tasks. Task title, body, due date, status, and assignee migrate directly. Assignee resolution uses email-to-User mapping. Completed tasks retain their completion timestamp; open tasks retain their due date.
Close
Custom Fields (Lead)
HighLevel
Contact Custom Field
lossyClose Lead Custom Fields map to GoHighLevel Contact Custom Fields. We read the Close field type (text, number, date, dropdown, checkbox) and create the matching GoHighLevel field type under Settings > Custom Fields > Contact before migration. Choice-option labels from Close dropdowns are preserved as GoHighLevel field options. Note: GoHighLevel Custom Fields must be designated as Contact or Opportunity at creation and cannot be changed after. We confirm this designation with the customer during scoping.
Close
Custom Fields (Opportunity)
HighLevel
Opportunity Custom Field
lossyClose Opportunity Custom Fields map to GoHighLevel Opportunity Custom Fields. Field type and choice options are preserved. GoHighLevel Opportunity custom fields appear only within the Opportunity record and do not surface on Contact records, so field placement is confirmed against the customer's reporting requirements during scoping.
Close
Custom Activities
HighLevel
Custom Objects or Notes
lossyClose Custom Activities are user-defined event types with their own schema and type-scoped Custom Fields. GoHighLevel does not have a direct Custom Activities equivalent, but Custom Objects can be used to represent custom event types. We assess whether the customer's Custom Activity data is reportable (requiring a Custom Object) or archival (better represented as Note records with structured field values). The decision is made during scoping based on how the customer uses the data.
Close
Attachments
HighLevel
Attachments / Media Library
1:1File attachments on Close Leads and Contacts are downloaded via the Close API and re-uploaded to GoHighLevel as Contact attachments or Media Library files. Large files (>10MB) are handled via the GoHighLevel Media Library API. If a file was linked to a specific activity, it is re-linked to the corresponding migrated activity record.
Close
User / Team Member
HighLevel
User
1:1Close Users carry name, email, role, and team membership. We map Users to GoHighLevel Users by email match. Any Close User without a matching GoHighLevel User is held in a reconciliation queue for the customer to provision before record import resumes. Role and permission settings do not migrate; we document the original role assignments for the customer to reconfigure in GoHighLevel.
| Close | HighLevel | Compatibility | |
|---|---|---|---|
| Lead | Contact + Company (lookup)1:many | Fully supported | |
| Contact (nested under Lead) | Contact1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Pipeline | Pipelinelossy | Fully supported | |
| Pipeline Stage | Pipeline Stagelossy | Fully supported | |
| Activity: Calls | Task (Call subtype) or Conversation1:1 | Fully supported | |
| Activity: Emails | Conversation or Note1:1 | Fully supported | |
| Activity: SMS | Conversation1:1 | Fully supported | |
| Activity: Tasks | Task1:1 | Fully supported | |
| Custom Fields (Lead) | Contact Custom Fieldlossy | Fully supported | |
| Custom Fields (Opportunity) | Opportunity Custom Fieldlossy | Fully supported | |
| Custom Activities | Custom Objects or Noteslossy | Mapping required | |
| Attachments | Attachments / Media Library1:1 | Mapping required | |
| User / Team Member | User1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Close gotchas
CSV exports drop all activity history silently
Smart Views can only export from the Leads tab
Workflows gatekept behind Growth and Scale plans
Custom Activities require strict dependency ordering
Rate limits enforced per endpoint group
HighLevel gotchas
Sub-account architecture creates isolated data silos per client
Usage-based telecom and AI costs are not in the subscription price
Workflows have no native equivalent in most destination CRMs
API rate limits cap bulk migration throughput at 100 requests per 10 seconds per sub-account
White-label configuration and branding assets do not export via API
Pair-specific challenges
Migration approach
Discovery and scoping workshop
We audit the Close account across all objects: Lead count, Contact count, Opportunity count, Pipeline and stage definitions, Custom Field definitions (field name, type, choices, object scope), Custom Activities and Custom Objects, engagement volume by type (calls, emails, SMS, tasks), attachment count and total size, active Workflows, and Smart View configurations. We pair this with a GoHighLevel account audit: plan tier (Starter/Unlimited/SaaS Pro), existing Pipeline structure, existing Custom Fields, and sub-account architecture. The discovery output is a written migration scope, a GoHighLevel schema design document, and the source-to-target field mapping spreadsheet.
Schema design and GoHighLevel preparation
We design the destination schema in GoHighLevel before any data is migrated. This includes creating all required Pipelines and Stages (matching Close stage names and order), creating all Contact Custom Fields (matching Close Lead and Contact field names and types), creating all Opportunity Custom Fields (matching Close Opportunity field types), configuring Tags to represent Close Lead Statuses where applicable, and setting duplicate-contact handling rules. We confirm Custom Field scoping decisions (Contact vs Opportunity designation) with the customer in writing before creating any fields. GoHighLevel sub-accounts are identified and routed during this step if the customer uses multiple sub-accounts for different business units.
Test migration into GoHighLevel sandbox
We run a full migration into a representative sample of the customer's GoHighLevel environment using production-like data volume. The customer reconciles record counts, spot-checks 25-50 records for field-level accuracy, validates that pipeline assignments are correct, confirms that activity timelines are populated, and checks that multi-contact Lead relationships are resolved as expected. Any mapping corrections are made in the test environment before production migration begins. This step typically runs over one to two weeks and produces a signed-off test report.
Owner reconciliation and User provisioning
We extract every distinct Close Owner referenced on Lead, Contact, Opportunity, and activity records and match by email against the GoHighLevel destination's User table. Owners without a matching GoHighLevel User go to a reconciliation queue. The customer provisions any missing Users in GoHighLevel before record import resumes. This step is a prerequisite for migration because OwnerId references are required on most records and GoHighLevel enforces user existence at insert time.
Production migration in dependency order
We run production migration in record-dependency order: GoHighLevel Pipelines and Stages (pre-created, validated), Companies (if using Company objects), Contacts (from Close Leads and nested Contacts), Opportunities (with Contact and Pipeline stage lookups resolved via the ID crosswalk), Activity history (calls, emails, SMS, tasks via API with JSON-sourced data), Custom Objects (with file URL workaround applied where needed), and Attachments. Each phase emits a row-count reconciliation report before the next phase begins. We implement exponential backoff on 429 responses from GoHighLevel's API and batch records in chunks of 100 to stay within rate limits.
Cutover, delta sync, and Workflow handoff
We freeze Close writes during the cutover window, run a final delta migration of any records modified during the migration window, then set GoHighLevel as the system of record. We deliver the Workflow and Automation inventory document listing every Close Workflow, Sequence, and Smart View with its trigger, conditions, actions, and a recommended GoHighLevel Automation builder equivalent. We support a one-week hypercare window where we resolve reconciliation issues. We do not rebuild Close Workflows or Sequences as GoHighLevel Automations inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Close
Source
Strengths
Weaknesses
HighLevel
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Close and HighLevel.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Close: Per endpoint group with a lower limit on write operations; 429 response includes rate_reset value; limits enforced at the organisation level across all API keys.
Data volume sensitivity
Close doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Close to HighLevel migration scoping. Not seeing yours? Book a call.
Walk through your Close to HighLevel migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Close
Other ways to arrive at HighLevel
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.