CRM migration
Field-level mapping, validation, and rollback between NetHunt CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
NetHunt CRM
Source
Twenty CRM
Destination
Compatibility
8 of 11
objects map 1:1 between NetHunt CRM and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
NetHunt CRM's folder-based data model organizes all Records (Contacts, Leads, Companies, Deals) inside Folders, requiring per-folder API queries for export. Twenty CRM uses standard objects (Person, Company, Opportunity) plus a GraphQL-based custom object system where fields must be provisioned before data import. We enumerate every NetHunt folder during discovery, map folder-specific record types to Twenty objects, create the equivalent custom field schema in Twenty before migration, then write records through Twenty's REST and GraphQL API endpoints. NetHunt Workflows and automation rules cannot be exported and are documented for manual rebuild. The per-user cost reduction from $30 per month (NetHunt Basic) to $9 per month (Twenty Pro) typically offsets migration fees within three to four months of operation.
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 NetHunt CRM object lands in Twenty CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
NetHunt CRM
Contact (Record in Folder)
Twenty CRM
Person
1:1NetHunt Contacts map to Twenty Person records. Standard fields (name, email, phone, company link) transfer directly. NetHunt custom fields on Contact records must be pre-created in Twenty as Person custom fields before import. We enumerate every NetHunt folder containing Contacts and capture its distinct custom field schema during discovery, then create equivalent Twenty field definitions via the /metadata GraphQL API. NetHunt contact-to-company linkage preserves as a Person → Company lookup relationship in Twenty.
NetHunt CRM
Lead (Record in Folder)
Twenty CRM
Person (as Lead)
1:1NetHunt Leads are a distinct record type separate from Contacts, with lead-specific lifecycle stage fields. We migrate NetHunt Leads to Twenty Person records, flagging the original record type in a custom field nethunt_record_type__c so that the customer's admin can segment leads from contacts post-migration. The lead-specific fields (lead status, source, score) map to custom Person fields created in Twenty before import.
NetHunt CRM
Company (Record in Folder)
Twenty CRM
Company
1:1NetHunt Company records map directly to Twenty Company records. The Company name becomes displayName, domain or website maps to the URL field. Company-specific custom fields migrate to Twenty Company custom fields provisioned via the /metadata API. The folder-based Company schema is captured per-folder during discovery to handle any folder-specific custom field variations.
NetHunt CRM
Deal (Record in Folder)
Twenty CRM
Opportunity
1:1NetHunt Deals map to Twenty Opportunity records. The deal name becomes the Opportunity name, deal value transfers to the amount field, and stage maps to the Opportunity stage dropdown. NetHunt's multiple pipelines are not a native Twenty feature; we map each NetHunt pipeline to a custom Opportunity field (e.g., pipeline_name__c) or a tag-based segmentation strategy, depending on the customer's preference documented during scoping. Deal owner maps to the Twenty workspace Member by email resolution.
NetHunt CRM
Pipeline
Twenty CRM
Stage (custom field or tag)
lossyNetHunt supports multiple named pipelines with configurable stages per pipeline. Twenty's Opportunity model uses a single stage dropdown with customizable values. We capture the full pipeline definition (name, stages, probabilities) during discovery and configure Twenty's Opportunity stage picklist to reflect the customer's primary pipeline. For teams using multiple NetHunt pipelines, we create a custom Opportunity field (e.g., source_pipeline__c) to preserve which NetHunt pipeline each deal originated from.
NetHunt CRM
Activity (Email, Note, Meeting)
Twenty CRM
Task or Note
1:1NetHunt Activities attached to Contacts and Deals map to Twenty Task records linked to the corresponding Person or Company. Email content migrates as a Task with a body field; meeting records preserve title, date, and attendees. We use Twenty's REST API for task creation with rate-limit handling (100 or 200 calls per minute depending on tier). Activity ordering is preserved by setting the task due date to the original NetHunt timestamp.
NetHunt CRM
Call Log (Record type in Folder)
Twenty CRM
Task (subtype)
1:1NetHunt Call Logs are stored as a record type and can be created via POST /records/{recordId}/calls. We migrate call logs with duration, direction (inbound/outbound), and notes as custom Task fields in Twenty. The call disposition value from NetHunt maps to a custom picklist field on the Task. Legacy call data with missing duration fields migrates with a null value flagged for manual review.
NetHunt CRM
Tag
Twenty CRM
Tag
1:1NetHunt Record tags migrate as-is to Twenty's Tag system. Tags are simple string values and transfer directly without transformation. We flag any tags that may conflict with existing Twenty tags during the reconciliation step and document conflicts for the customer's admin to resolve before final import.
NetHunt CRM
Folder
Twenty CRM
Workspace or Record Type
lossyNetHunt Folders are the top-level organizational unit containing Records, Views, and Filters. Twenty does not have a Folder equivalent; all records live in the workspace at the object level. We use the folder enumeration step to segment records during migration, and optionally add a custom field (e.g., original_folder__c) to each record to preserve the source folder context for the customer's admin.
NetHunt CRM
Custom Field (per-folder schema)
Twenty CRM
Custom Field
lossyNetHunt supports custom fields within Records and Folders, with schema varying by folder. We capture the field definition for each folder before migration (field name, type, required flag, picklist options) and recreate equivalent custom fields in Twenty via Settings → Data Model before any data import. This is a prerequisite step because Twenty's CSV import creates records but not fields. We prioritize fields actually in use over fields that were created but never populated.
NetHunt CRM
Attachment (URL reference)
Twenty CRM
Attachment (URL link)
1:1Attachments linked to NetHunt Records may be stored in NetHunt's UI or integrated services like DocHub. We migrate attachment URLs and metadata as-is. We verify that linked files remain accessible post-migration and flag any attachments stored exclusively in DocHub or other integrated services that may require re-linking in Twenty. Inline images in note bodies are extracted and migrated as separate URL references.
| NetHunt CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact (Record in Folder) | Person1:1 | Fully supported | |
| Lead (Record in Folder) | Person (as Lead)1:1 | Fully supported | |
| Company (Record in Folder) | Company1:1 | Fully supported | |
| Deal (Record in Folder) | Opportunity1:1 | Fully supported | |
| Pipeline | Stage (custom field or tag)lossy | Fully supported | |
| Activity (Email, Note, Meeting) | Task or Note1:1 | Fully supported | |
| Call Log (Record type in Folder) | Task (subtype)1:1 | Fully supported | |
| Tag | Tag1:1 | Fully supported | |
| Folder | Workspace or Record Typelossy | Fully supported | |
| Custom Field (per-folder schema) | Custom Fieldlossy | Fully supported | |
| Attachment (URL reference) | Attachment (URL link)1: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.
NetHunt CRM gotchas
Workflow automations do not transfer between CRMs
No-refund subscription policy creates billing risk on cancellation
Automation action limits are tier-gated and billable
Folder-based data model requires per-folder API queries
Mobile app performance issues reported by users
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Discovery and folder enumeration
We enumerate every accessible NetHunt folder via the REST API, query the record count per folder, and capture the custom field schema for each folder. We identify all unique Owner emails, record types (Contact, Lead, Company, Deal), and activity types (email, call, meeting, note) in scope. We also document every active NetHunt Workflow with its trigger, conditions, and actions for the rebuild inventory. The discovery output is a written scope document with record counts per folder, custom field inventory, owner list, and a migration phasing plan.
Twenty workspace provisioning and field creation
We provision the Twenty workspace by inviting all team members who appear as NetHunt Owners, ensuring their accounts are active before any record import begins. Using Twenty's Settings → Data Model, we create all custom fields required by the NetHunt migration: fields for each NetHunt custom field type, picklist values matched to NetHunt options, and any custom objects needed. We use the /metadata GraphQL API for custom object creation and verify field existence as a gate before each import phase. This step is the most time-intensive for migrations with many NetHunt folders and must complete before data import begins.
Owner reconciliation and user provisioning
We extract every distinct NetHunt Owner email referenced on Contacts, Companies, Deals, and Activities and match against the Twenty workspace Members list. Any Owner without a matching Twenty account goes to a reconciliation queue. The customer's admin provisions the missing Twenty accounts and confirms acceptance. Migration cannot proceed past this step because OwnerId references are required on most standard objects and will cause record rejection if left unresolved.
Staging migration and mapping validation
We run a full migration into a Twenty staging environment (or the production workspace with a test subset) to validate the folder-to-object mapping, custom field population, owner resolution, and activity link integrity. The customer's admin spot-checks 25-50 records against the NetHunt source and validates that custom fields populated correctly and that Person-to-Company links resolved. Any mapping corrections happen in staging before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: Companies first (to satisfy lookup requirements), Persons second (with CompanyId resolved), Opportunities third (with PersonId and OwnerId resolved), Activities last (with PersonId or CompanyId resolved as WhatId). We use Twenty's REST API for record creation with chunked writes and exponential backoff on rate-limit responses. Each phase emits a row-count reconciliation report before the next phase begins. We freeze NetHunt writes during the cutover window to capture any final modifications.
Cutover, validation, and Workflow handoff
We capture a final delta of any records modified during the migration window, then enable Twenty as the system of record. We deliver the Workflow inventory document to the customer's admin with a written mapping of each NetHunt Workflow trigger and condition to its recommended Twenty workflow equivalent. We support a five-business-day hypercare window for reconciliation issues. We do not rebuild NetHunt Workflows in Twenty as part of the migration scope; that is an admin task documented separately.
Platform deep dives
NetHunt CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 NetHunt CRM and Twenty CRM.
Object compatibility
3 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
NetHunt CRM: Not publicly documented on NetHunt's developer documentation.
Data volume sensitivity
NetHunt CRM 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 NetHunt CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your NetHunt CRM to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave NetHunt CRM
Other ways to arrive at Twenty CRM
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.