CRM migration

Migrate from NetHunt CRM to Twenty CRM

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 logo

NetHunt CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

73%

8 of 11

objects map 1:1 between NetHunt CRM and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

NetHunt CRM logo

NetHunt CRM

What's pushing teams away

  • Pricing escalates sharply on higher tiers—Business at $60/user/month and Advanced at $120/user/month make it costly for teams needing advanced automation.
  • Users report that automation Workflows cannot be exported or transferred between CRMs, forcing teams to rebuild complex sequences from scratch when switching platforms.
  • Per-user billing adds up quickly as sales teams grow, with no volume discounts or flat-rate enterprise options published on the website.
  • Limited native reporting depth compared to enterprise CRMs means power users often export to Google Sheets or BI tools rather than relying on built-in dashboards.
  • The mobile app is described as occasionally lagging, which frustrates field sales teams who need CRM access on the go.

Choosing

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How NetHunt CRM objects map to Twenty CRM

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)

maps to

Twenty CRM

Person

1:1
Fully supported

NetHunt 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)

maps to

Twenty CRM

Person (as Lead)

1:1
Fully supported

NetHunt 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)

maps to

Twenty CRM

Company

1:1
Fully supported

NetHunt 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)

maps to

Twenty CRM

Opportunity

1:1
Fully supported

NetHunt 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

maps to

Twenty CRM

Stage (custom field or tag)

lossy
Fully supported

NetHunt 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)

maps to

Twenty CRM

Task or Note

1:1
Fully supported

NetHunt 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)

maps to

Twenty CRM

Task (subtype)

1:1
Fully supported

NetHunt 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

maps to

Twenty CRM

Tag

1:1
Fully supported

NetHunt 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

maps to

Twenty CRM

Workspace or Record Type

lossy
Fully supported

NetHunt 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)

maps to

Twenty CRM

Custom Field

lossy
Fully supported

NetHunt 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)

maps to

Twenty CRM

Attachment (URL link)

1:1
Fully supported

Attachments 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.

Gotchas + challenges

What specifically takes care here

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 logo

NetHunt CRM gotchas

High

Workflow automations do not transfer between CRMs

High

No-refund subscription policy creates billing risk on cancellation

Medium

Automation action limits are tier-gated and billable

Medium

Folder-based data model requires per-folder API queries

Low

Mobile app performance issues reported by users

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • Twenty's standard field coverage requires significant field provisioning before import

    Twenty's Person and Company objects ship with minimal standard fields compared to HubSpot, Salesforce, and even NetHunt. GitHub issue #13953 documents that users spend 30-60 minutes creating basic fields (jobTitle, department, industry, website, phone type, email type) before they can begin using the CRM at all. When migrating from NetHunt, if your NetHunt folders contain custom fields on Contacts, Companies, or Deals, those fields do not exist in Twenty until you create them via Settings → Data Model. We capture every active custom field from every NetHunt folder during discovery, create the equivalent Twenty fields before any data import, and verify field existence as a gate before each import phase begins. Migrations that skip this step result in silent data loss as import tools skip unmapped fields.

  • NetHunt Workflows cannot migrate; both platforms require manual automation rebuild

    NetHunt Workflows are automation rules operating inside Gmail and NetHunt's web UI with no API export mechanism. This is not a Twenty-specific limitation; it applies to any migration away from NetHunt. We document every active NetHunt Workflow during scoping (trigger, conditions, actions) in a structured inventory and deliver it to the customer's admin for manual rebuild in Twenty's workflow builder. Twenty's workflow system uses a different model (record-triggered with conditions) and does not natively support the multi-channel sequencing that NetHunt Business and Advanced tiers offer. We provide a written recommendation for achieving equivalent sequences in Twenty using a combination of workflow triggers and manual task management, but the rebuild is an admin task outside migration scope.

  • NetHunt folder-per-folder API queries increase migration time for large datasets

    NetHunt's API requires querying each Folder separately to retrieve records. There is no single API endpoint to export all CRM data at once. For teams with five or fewer folders, this adds manageable overhead. For teams with fifteen or more folders (common in organizations using folders as team or topic-based divisions), the per-folder pagination adds cumulative API call time and increases the risk of hitting NetHunt's rate limits mid-export. We build a folder enumeration step into every migration, iterate through each accessible folder, and implement exponential backoff if we encounter rate limit responses. We log folder-to-folder progress for full auditability and recommend timing the migration window to NetHunt's billing cycle end to avoid paying for unused subscription periods under NetHunt's no-refund policy.

  • Twenty API rate limits (100-200 calls/min) require chunked writes for large record sets

    Twenty's Pro plan allows 100 API calls per minute; Organization allows 200. NetHunt migrations with large activity histories (tens of thousands of call logs, emails, notes) exceed these limits with naive bulk writes. We chunk activity writes into batches of 50 records, implement rate-limit detection with exponential backoff, and distribute writes across off-peak hours when possible. For migrations exceeding 100,000 total records, we recommend a phased approach: Contacts and Companies first, Opportunities second, Activities third, to manage the rate-limit impact on timeline.

  • User provisioning must precede owner lookups in Twenty

    Twenty requires that users exist in the workspace before their User ID can be referenced on records. NetHunt Owner references on Deals, Activities, and custom records must resolve to a Twenty workspace Member by email match. If a NetHunt Owner has no corresponding Twenty user account, the record insert fails on the OwnerId field. We extract every distinct NetHunt Owner during discovery, match by email against Twenty's Members list, and place any unmatched Owners in a reconciliation queue for the customer's admin to provision before record import resumes. This mirrors Twenty's own documentation requirement that users be invited before import begins.

Migration approach

Six steps for a successful NetHunt CRM to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

NetHunt CRM logo

NetHunt CRM

Source

Strengths

  • Built directly inside Gmail, eliminating tab-switching for users who live in email
  • Multiple pipelines with visual stage management and deal tracking
  • Multi-channel sequencing (email, LinkedIn, WhatsApp, phone) available on higher tiers
  • Contact enrichment and lead data enrichment features on Business tier and above
  • 14-day free trial with no credit card required for evaluation

Weaknesses

  • Per-user pricing model scales poorly for large sales teams
  • No native duplicate detection for contacts during import
  • Workflow automations are trapped in NetHunt and cannot be exported
  • Limited native reporting compared to enterprise CRM alternatives
  • No refund policy—subscriptions are non-refundable at any point
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Standard CRM migration. 3 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across NetHunt CRM and Twenty CRM.

  • Object compatibility

    B

    3 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    NetHunt CRM: Not publicly documented on NetHunt's developer documentation.

  • Data volume sensitivity

    B

    NetHunt CRM doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your NetHunt CRM to Twenty CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about NetHunt CRM to Twenty CRM data migrations

Answers to the questions buyers ask most during NetHunt CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 10,000 total records with no more than three distinct NetHunt folders. Migrations with more than five folders (each requiring separate custom field schemas), large activity histories exceeding 100,000 engagement records, or custom objects that require schema-through-GraphQL setup extend to eight to twelve weeks because of field provisioning overhead, per-folder enumeration time, and activity chunking within Twenty's API rate limits.

Adjacent paths

Related migrations to explore

Ready when you are

Move from NetHunt CRM.
Land in Twenty CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day