CRM migration
Field-level mapping, validation, and rollback between X2CRM and HighLevel. We move data and schema; workflows are rebuilt natively in HighLevel.
X2CRM
Source
HighLevel
Destination
Compatibility
7 of 9
objects map 1:1 between X2CRM and HighLevel.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from X2CRM to GoHighLevel is a migration from an open-source, per-admin CRM to a multi-tenant SaaS platform designed for agencies and marketing teams. X2CRM organizes data across eight unified modules including Marketing, Sales, and Service; GoHighLevel replaces this with Contacts, Companies, Opportunities, and Custom Objects alongside a built-in funnel builder and SMS/voice automation. We export from the X2CRM REST API using application/json payloads, handle Platinum-tier rate limit negotiation for bulk exports, and import into GoHighLevel via the v2 REST API respecting 100 requests per 10 seconds burst and 200,000 daily limits. X2Flow workflow automation does not export as portable data and must be rebuilt in GoHighLevel's workflow builder; we deliver a written Workflow Reconstruction Document during discovery so the customer's admin can plan the rebuild alongside migration. Custom Objects are available on all GoHighLevel plans (October 2025 update) but capped at 10 per sub-account, which constrains migrations from X2CRM deployments with extensive custom module schemas. Tag associations, custom field mappings, and product catalog records transfer with full lookup resolution to parent Contacts and Accounts.
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 X2CRM 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.
X2CRM
Contacts
HighLevel
Contact
1:1X2CRM Contacts map directly to GoHighLevel Contact records. Standard fields (name, email, phone, address) transfer via REST API with application/json payloads. Custom contact fields migrate to GoHighLevel custom fields scoped to the Contact object. Tag associations from X2CRM are preserved as tags on the GoHighLevel Contact using the tag API endpoint. We resolve any duplicate email addresses via upsert rather than insert to avoid orphaned duplicates.
X2CRM
Accounts
HighLevel
Company
1:1X2CRM Accounts (companies and organizations) map to GoHighLevel Company records. Associated contacts link via GoHighLevel's contact-company association API after both records exist. Account lifetime value, industry, and website fields transfer to GoHighLevel Company properties. If X2CRM Accounts reference custom fields, those fields are pre-created in GoHighLevel as Company-scoped custom fields before migration.
X2CRM
Deals
HighLevel
Opportunity
1:1X2CRM Deals map to GoHighLevel Opportunities with stage, value, probability, and expected close date preserved. The X2CRM pipeline assignment maps to a GoHighLevel pipeline that we configure before migration. Deal owners resolve by email match against GoHighLevel users. Activity history attached to the Deal (calls, emails, meetings) migrates separately via the Activity mapping and links back to the Opportunity via WhatId on the GoHighLevel activity record.
X2CRM
Products
HighLevel
Product
1:1X2CRM Products (catalog items with pricing, SKU, and description) map to GoHighLevel Products. Product pricing and SKU transfer to GoHighLevel product fields. If X2CRM Products are linked to Deals via line items, we create the Opportunity Product association during the Opportunity import phase.
X2CRM
Services
HighLevel
Custom Object (Service)
1:1X2CRM Services track recurring service contracts or subscriptions linked to Accounts. GoHighLevel does not have a native Services object, so we create a Custom Object named 'Service' in GoHighLevel with fields for status, renewal date, and linked Company. The 10 Custom Object limit per sub-account applies; we confirm the customer's object count during scoping and flag if additional objects from X2CRM custom modules push against the cap.
X2CRM
Marketing Campaigns
HighLevel
Campaign
1:1X2CRM Campaign records (campaign name, type, status, and associated mailing lists) map to GoHighLevel Campaign records. Campaign history and linked contacts transfer as Campaign membership records in GoHighLevel. Email campaign templates from X2CRM migrate as static HTML that we deliver as a reconstruction reference for the customer to rebuild in GoHighLevel's email builder.
X2CRM
Activities (Calls, Meetings, Tasks)
HighLevel
Activity
1:1X2CRM Activities (calls, meetings, and tasks with timestamps, owners, and related Contacts or Deals) map to GoHighLevel Activities. We sequence Activities in chronological order and map related record IDs to their new GoHighLevel Contact or Opportunity references. Task status, priority, and due date transfer directly. Call duration and disposition from X2CRM map to GoHighLevel custom activity fields if configured.
X2CRM
X2Flow Workflows
HighLevel
Workflow (GoHighLevel)
lossyX2Flow stores automation logic as trigger-action pairs with UI configuration that is not accessible via the X2CRM REST API in a portable format. We do not migrate X2Flow as code. During discovery, we extract every X2Flow rule's trigger type, condition criteria, and action sequence and produce a Workflow Reconstruction Document that maps each X2Flow rule to equivalent GoHighLevel Workflow logic. The customer's admin rebuilds the workflows in GoHighLevel's workflow builder post-migration using this document as a guide.
X2CRM
Tags
HighLevel
Tag
lossyX2CRM Tags are standalone label records that can be applied to multiple object types. We migrate all Tags and reapply them to their target GoHighLevel records post-import, maintaining the many-to-many associations. GoHighLevel's tag model supports tagging Contacts, Companies, and Opportunities; we map X2CRM tag assignments to the equivalent GoHighLevel tag on the corresponding object.
| X2CRM | HighLevel | Compatibility | |
|---|---|---|---|
| Contacts | Contact1:1 | Fully supported | |
| Accounts | Company1:1 | Fully supported | |
| Deals | Opportunity1:1 | Fully supported | |
| Products | Product1:1 | Fully supported | |
| Services | Custom Object (Service)1:1 | Fully supported | |
| Marketing Campaigns | Campaign1:1 | Fully supported | |
| Activities (Calls, Meetings, Tasks) | Activity1:1 | Fully supported | |
| X2Flow Workflows | Workflow (GoHighLevel)lossy | Mapping required | |
| Tags | Taglossy | 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.
X2CRM gotchas
Rate limiting is gated behind Platinum Edition
Workflow automation (X2Flow) does not export as portable data
API requires Content-Type: application/json on all write requests
Data validation errors return HTTP 422 and may halt batch imports
Self-hosted attachment storage may require manual file extraction
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 X2CRM API scoping
We audit the source X2CRM instance across all eight modules, custom fields, custom module count, X2Flow workflow count, attachment volume, and API tier (Starter, Business, or Platinum for rate limit assessment). We extract a sample of 50-100 records per object type to validate field mapping hypotheses and confirm data quality. The discovery output is a written migration scope document that includes the object count, custom field inventory, workflow inventory, and a GoHighLevel plan recommendation based on the customer's sub-account and Custom Object requirements.
GoHighLevel schema pre-creation and field mapping design
We design the destination schema in GoHighLevel before any data moves. This includes creating Custom Objects (up to 10, prioritized by business criticality), custom fields scoped to Contact, Company, or Opportunity, and pipeline configuration with stage values mapped from X2CRM deal stages. The X2CRM API rate limit tier determines the export pacing strategy. GoHighLevel field types (Short Text, Dropdown, Date Picker, etc.) are assigned based on X2CRM field data types during discovery sampling.
Sandbox migration and reconciliation
We run a full migration into a GoHighLevel test sub-account using production-like data volume. The customer reviews record counts, spot-checks 25-50 records per object against the X2CRM source, and validates pipeline stage assignments and tag associations. Any field mapping corrections, custom field additions, or pipeline stage adjustments are documented and applied to the production migration plan. GoHighLevel Custom Object limits are re-confirmed at this stage before the production sub-account is touched.
Owner and user reconciliation
We extract every distinct X2CRM user referenced on Contacts, Accounts, Deals, and Activity records and match by email against the GoHighLevel destination account's user table. X2CRM users without a matching GoHighLevel user are logged in a reconciliation queue. The customer provisions any missing users (or decides to reassign records to existing users) before production migration begins, because OwnerId references are required on most object inserts.
Production migration in dependency order
We run production migration in record-dependency order: Companies (from X2CRM Accounts), Contacts (with tag associations and Company lookup resolved), Custom Objects (prioritized to stay within the 10-object cap), Opportunities (with pipeline stage and Owner resolved), Products (with SKU), Activities (calls, meetings, tasks via GoHighLevel REST API with 100 req/10 sec pacing), and Attachments (extracted from self-hosted file store where applicable and re-uploaded). Each phase emits a row-count reconciliation report before the next phase begins. X2CRM's 422 validation error handling captures per-record failures for correction and retry.
Cutover, validation, and Workflow Reconstruction handoff
We freeze X2CRM writes during cutover, run a final delta migration of any records modified during the migration window, then enable GoHighLevel as the system of record. We deliver the Workflow Reconstruction Document to the customer's admin team with a mapping of each X2Flow rule to a GoHighLevel Workflow equivalent. We support a 72-hour hypercare window where we resolve any reconciliation issues. We do not rebuild X2Flow automations or configure GoHighLevel Workflows as part of the migration scope; that is a separate engagement or internal admin task.
Platform deep dives
X2CRM
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 X2CRM 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
X2CRM: Not publicly documented. X2CRM is an open-source / self-hosted CRM, so practical throughput is bounded by the customer's PHP/MySQL deployment rather than a vendor-imposed limit. We benchmark export queries against the customer's hosted instance before the cutover sync..
Data volume sensitivity
X2CRM 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 X2CRM to HighLevel migration scoping. Not seeing yours? Book a call.
Walk through your X2CRM 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 X2CRM
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.