CRM migration
Field-level mapping, validation, and rollback between MetroLeads and HighLevel. We move data and schema; workflows are rebuilt natively in HighLevel.
MetroLeads
Source
HighLevel
Destination
Compatibility
6 of 8
objects map 1:1 between MetroLeads and HighLevel.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from MetroLeads to GoHighLevel is a data-model translation from a lead-centric schema to GoHighLevel's contact-account hierarchy. MetroLeads organizes its entire platform around Leads with a state field, source_tags, lead_fields for custom properties, and lead_group associations, while GoHighLevel uses the standard contact-account model where Contacts live inside Locations with tag-based segmentation. We extract the MetroLeads property schema first to build an ID-to-name mapping, catalog every tenant-specific state value, resolve merge-pending lead pairs before migration begins, and map the resulting structure to GoHighLevel Contacts and Custom Objects. Workflows, automations, and sequences do not migrate as code; we deliver a written inventory of every active automation for the customer's admin to rebuild in GoHighLevel's workflow builder.
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 MetroLeads 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.
MetroLeads
Lead
HighLevel
Contact
1:1MetroLeads Leads map directly to GoHighLevel Contacts. The Lead name, embedded phones (with type metadata), embedded emails (with type), source_tags, lead_fields (custom properties), assigned_to user reference, and lead_creation_time all migrate as Contact fields. We resolve the MetroLeads assigned_to user to a GoHighLevel Team Member by email match. Merge-pending Lead pairs are resolved during scoping before migration so only one Contact is created per pair.
MetroLeads
Company
HighLevel
Location
1:1MetroLeads Companies serve as parent containers for Leads via /companies/<company_uuid>/leads/. We export Company records and map them to GoHighLevel Locations, which serve as the organizational grouping structure. Company-level custom fields migrate to Location custom fields. Each Lead's association to its MetroLeads Company is preserved as a GoHighLevel Location assignment on the Contact.
MetroLeads
Event
HighLevel
Task / Note
1:1MetroLeads Events track engagement history tied to Leads. Event type, timestamp, and event details migrate to GoHighLevel Tasks (for call and email events) or Notes (for logged meeting and interaction records). We preserve event_to_lead associations by resolving the MetroLeads lead_uuid to the migrated GoHighLevel Contact ID at migration time.
MetroLeads
Intellisearch
HighLevel
Custom Object / Tag
lossyMetroLeads Intellisearch is a scoring and saved-search layer built on top of Lead data. The scoring logic and saved search definitions do not map 1:1 to standard GoHighLevel objects. We export the raw Intellisearch configuration JSON and either create a GoHighLevel Custom Object to hold the scoring criteria, or map the output to a GoHighLevel Tag set for segmentation. The customer chooses the strategy during scoping.
MetroLeads
Advanced Data Modules
HighLevel
Custom Object
1:1MetroLeads Advanced Data Modules are tenant-specific data structures extending the base schema with field definitions that vary per organization. We export the module schema alongside records and create equivalent GoHighLevel Custom Objects. Each module's fields are pre-created in GoHighLevel with matching field types before any record import so that the data lands in typed fields rather than generic JSON blobs.
MetroLeads
User
HighLevel
Team Member
1:1MetroLeads User records (id, name, role) map to GoHighLevel Team Members. We export all User records and preserve assigned_to and user_assigned_to references on Leads and Events so that the migration resolves to the correct GoHighLevel Team Member by email. Any MetroLeads User without a matching GoHighLevel user goes to a reconciliation queue for the customer to provision before import continues.
MetroLeads
Source Tags
HighLevel
Tag
1:1MetroLeads source_tags are string arrays on Lead records indicating disposition (e.g. disposition_answered). We export the raw tag strings and map them to GoHighLevel Tags, which are applied to the migrated Contact. Tags serve as the primary segmentation mechanism in GoHighLevel and map naturally from MetroLeads source_tags.
MetroLeads
Lead State
HighLevel
Custom Field + Tag
lossyMetroLeads Lead state is a tenant-configured string field (e.g. contacted, new, qualified) with values that vary by MetroLeads instance. We extract all unique state values during the export scan, present them to the customer for GoHighLevel mapping, and create a custom Contact field (e.g. original_state__c) to preserve the MetroLeads value. State is also applied as a Tag so contacts can be segmented by their original MetroLeads lifecycle stage in GoHighLevel reporting.
| MetroLeads | HighLevel | Compatibility | |
|---|---|---|---|
| Lead | Contact1:1 | Fully supported | |
| Company | Location1:1 | Fully supported | |
| Event | Task / Note1:1 | Fully supported | |
| Intellisearch | Custom Object / Taglossy | Mapping required | |
| Advanced Data Modules | Custom Object1:1 | Mapping required | |
| User | Team Member1:1 | Fully supported | |
| Source Tags | Tag1:1 | Fully supported | |
| Lead State | Custom Field + Taglossy | Mapping required |
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.
MetroLeads gotchas
Merge API field priority can silently overwrite data
Custom lead_fields use property IDs not property names
Tenant-specific state values require pre-migration catalog
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
MetroLeads export and property schema resolution
We paginate the MetroLeads API to export all Leads, Companies, Events, Advanced Data Modules, Users, and associated embedded records (phones, emails). In the same phase we fetch the MetroLeads property schema catalog to build the ID-to-name mapping for all lead_fields. We identify merge-pending Lead pairs and extract all unique tenant-specific state values from the state field. The output is a structured export manifest with record counts per object and the resolved property name catalog.
GoHighLevel schema pre-creation
We create all required GoHighLevel custom fields in advance of any data import. This includes the original_state__c custom field for MetroLeads state values, any fields derived from MetroLeads lead_fields (using the resolved names from step 1), and Custom Objects for Advanced Data Modules with all module fields pre-created. Location (Company) and Contact standard fields are validated for completeness. This phase must complete before the import batch begins.
Contact and Location import
We import MetroLeads Companies as GoHighLevel Locations first, establishing the organizational hierarchy. MetroLeads Leads import as GoHighLevel Contacts, with each Contact assigned to its corresponding Location. Source_tags from MetroLeads become GoHighLevel Tags on the Contact. The MetroLeads state value is written to original_state__c and applied as a Tag. Merge-pending Lead pairs are resolved at this phase using the survivor selection confirmed during scoping.
Event, Advanced Data Module, and User import
We import MetroLeads Events as GoHighLevel Tasks and Notes, resolving the MetroLeads lead_uuid to the migrated GoHighLevel Contact ID for each event. Advanced Data Modules import into their corresponding GoHighLevel Custom Objects with field types matched. Users import as GoHighLevel Team Members with assigned_to references resolved by email match. Any unmapped User references are held in a reconciliation queue.
Delta reconciliation and validation
We run a row-count reconciliation across all migrated objects (Contacts in, Locations in, Events in, Custom Objects in) against the MetroLeads export manifest. We spot-check twenty-five to fifty randomly selected Contacts against the MetroLeads source to verify field-level accuracy, particularly for custom property values and tag completeness. Any mapping corrections are applied before the cutover window opens.
Cutover and automation inventory handoff
We freeze MetroLeads writes during cutover, run a final delta migration of any records modified during the migration window, then present the GoHighLevel migration summary to the customer. We deliver a written inventory of every MetroLeads automation, workflow, and sequence with its trigger, conditions, and recommended GoHighLevel Workflow equivalent. We support a five-business-day hypercare window for reconciliation issues. Workflow rebuild in GoHighLevel's visual builder is outside migration scope and is handled by the customer's admin or a GoHighLevel implementation partner.
Platform deep dives
MetroLeads
Source
Strengths
Weaknesses
HighLevel
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 MetroLeads and HighLevel.
Object compatibility
1 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
MetroLeads: Not publicly documented in the available research data.
Data volume sensitivity
MetroLeads 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 MetroLeads to HighLevel migration scoping. Not seeing yours? Book a call.
Walk through your MetroLeads 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 MetroLeads
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.