CRM migration

Migrate from Twenty CRM to Nutshell

Field-level mapping, validation, and rollback between Twenty CRM and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.

Twenty CRM logo

Twenty CRM

Source

Nutshell

Destination

Nutshell logo

Compatibility

88%

7 of 8

objects map 1:1 between Twenty CRM and Nutshell.

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Try the reverse

Nutshell
Twenty CRM

Overview

What this migration involves

Moving from Twenty CRM to Nutshell is a schema-normalization migration. Twenty uses a flat companyId foreign key to link People to Companies, while Nutshell supports a flexible Person-to-Organization relationship where Contacts can exist independently or attach to multiple Organizations. We resolve this structural difference during scoping, map each Twenty object to its Nutshell equivalent using the documented object mapping, and apply transformations for field type differences (phone formats, currency precision, date standards) that would otherwise trigger Nutshell's import validation rejections. We preserve relationship context by resolving foreign keys in the correct import order (Companies first, then People, then Opportunities, then Activities, then Custom Objects). Workflows, automations, and custom field definitions do not migrate; we deliver a written field and pipeline inventory for the customer's admin to configure in Nutshell post-migration.

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

Twenty CRM logo

Twenty CRM

What's pushing teams away

  • Recently reached v1.0 — the CTO deliberately held off promotion until now, meaning the platform has a shorter operational track record than established CRMs.
  • No native email sequencing or cadence tools, forcing teams to layer on third-party outreach platforms for any automated follow-up flows.
  • Self-hosting 'free' pricing ignores the reality of DevOps hours, infrastructure costs, and maintenance that make it a real investment.
  • Limited native integrations out of the box — no app marketplace ecosystem, meaning most connections require custom API or Zapier/Make work.
  • Workflow automation is functional but limited in complexity, according to early users who find it insufficient for multi-step sales motions.

Choosing

Nutshell logo

Nutshell

What's pulling them in

  • Lowest cost entry point among mid-market CRMs—Foundation plan starts at $13/user/month, making it accessible for teams validating CRM fit before committing.
  • Integrated sales automation and email sequencing on Pro plans without requiring a separate email marketing platform, per verified Capterra reviews.
  • Consistently praised for intuitive interface and fast onboarding, with case studies reporting 100% team adoption rates within initial deployment periods.
  • Strong customer support responsiveness cited across G2 reviews, with dedicated support tiers available on Enterprise plans.
  • Native integrations with WhatsApp, Facebook Messenger, Instagram, and Slack reduce reliance on third-party middleware for common communication channels.

Object mapping

How Twenty CRM objects map to Nutshell

Each row shows how a Twenty CRM object lands in Nutshell, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Twenty CRM

Company

maps to

Nutshell

Organization

1:1
Fully supported

Twenty Company records map directly to Nutshell Organization. We use the Twenty company domain field as the Organization website for deduplication. Organization is imported first because both People (Contact) and Opportunities (Deal) in Nutshell can link to an Organization. No foreign key constraint exists in Nutshell, so we import Organizations before People and use Organization.name as the lookup target for subsequent record batches.

Twenty CRM

People

maps to

Nutshell

Person

1:1
Fully supported

Twenty People records map to Nutshell Person. The key structural difference is that Twenty enforces a required companyId linking each Person to exactly one Company, while Nutshell supports a flexible Person-Organization relationship where a Person can be unlinked, linked to one Organization, or linked to multiple Organizations. For records that had a companyId in Twenty, we create the Person-Organization link in Nutshell after Organizations are created. For unlinked People, we import directly without an Organization association. Email serves as the deduplication key.

Twenty CRM

Opportunity

maps to

Nutshell

Deal

1:1
Fully supported

Twenty Opportunity maps to Nutshell Deal. Stage names from Twenty (Appointment Scheduled, Proposal Sent, Negotiation, Closed Won, Closed Lost) map to Nutshell pipeline stages that we configure before import. Amount, close date, and probability transfer directly. We resolve the companyId and any personId foreign keys to their Nutshell equivalents (Organization.id, Person.id) at migration time. Nutshell allows Deals without a linked Party (Person) or Organization, so orphaned Opportunities import successfully.

Twenty CRM

Task

maps to

Nutshell

Task

1:1
Fully supported

Twenty Tasks map to Nutshell Tasks. We preserve the title, due date, assignee (resolved via owner email to Nutshell User), completion status, and the relational target (linked to Person, Organization, or Deal). Nutshell's Task model does not require a linked Party or Organization, so Tasks attached to any Twenty record type import without blocking on a missing parent.

Twenty CRM

Note

maps to

Nutshell

Note

1:1
Fully supported

Twenty Notes map to Nutshell Notes. We map the note body content, author (resolved via owner email to Nutshell User), and the relational target. Nutshell Notes attach to the Person record by default when the source Twenty Note was linked to a Person; we resolve the Person lookup via email at migration time.

Twenty CRM

Custom Object

maps to

Nutshell

Custom Fields or Tasks

lossy
Fully supported

Nutshell does not support user-defined custom objects as first-class database entities. Custom Objects from Twenty require a configuration decision during scoping: (a) flat custom fields on Person, Organization, or Deal if the structure is simple (single-level attributes), or (b) a normalized Tasks-based approach if the custom object represents a many-to-one relationship with an event or activity history. We document the schema of each Twenty Custom Object and recommend the target approach before migration. Standard field types from Twenty (text, number, date, select, multi-select) map to equivalent Nutshell field types.

Twenty CRM

Owner

maps to

Nutshell

User

1:1
Fully supported

Twenty Owner records map to Nutshell Users. We resolve each Owner by email match against the Nutshell User table. Any Twenty Owner without a matching Nutshell User is held in a reconciliation queue for the customer's admin to provision before record import resumes. Owner assignment on Opportunities and Tasks migrates after the User lookup is resolved.

Twenty CRM

Engagement: Call, Email, Meeting, Task

maps to

Nutshell

Activity (log)

1:1
Fully supported

Twenty engagement records (call, email, meeting, task type) are not separate objects with their own CRUD operations in the same way as standard objects. However, if engagement history is stored as linked activity records, we migrate these as Nutshell Activity logs attached to the relevant Person or Deal. Call disposition, duration, and meeting location transfer to custom Activity fields where Nutshell supports them.

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.

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

Nutshell logo

Nutshell gotchas

High

Contact tier limits enforced on import

Medium

No bulk API endpoint requires paginated extraction

Medium

Email sequences not exportable via API

Medium

Foundation plan disables key sales features

Pair-specific challenges

  • Nutshell field type validation rejects misformatted data

    Nutshell enforces strict field type validation on import. Dates must conform to ISO 8601 (YYYY-MM-DD or ISO datetime), phone numbers require E.164 formatting (including country code), currency fields require decimal precision, and picklist values must exactly match the defined options. Twenty's PostgreSQL-backed model is more permissive with field formats. We run a pre-import validation pass that flags records with type mismatches, applies normalization transformations, and re-validates before loading. Records that fail validation after transformation are held in an error queue with the specific field and value reported to the customer for manual resolution.

  • Contact-Organization model allows detached records

    Nutshell allows Persons to exist without an Organization link, whereas Twenty enforces a required companyId on People. We detect Twenty People records that had no companyId (orphaned by design, not just unlinked) during scoping. These records import as unlinked Nutshell Persons. For records that did have a companyId, we resolve the Organization lookup after the Organizations batch completes. The customer's admin should review the Person-Organization map post-migration to decide whether any detached Contacts should be linked or merged.

  • Custom Objects require a schema redesign

    Nutshell does not have a native Custom Object equivalent. Each Twenty Custom Object must be mapped to either custom fields on a standard object (Person, Organization, Deal) or to a normalized Tasks-based structure. We document the schema of every Custom Object during scoping and recommend a target approach. If the customer uses complex multi-lookup Custom Objects with relationships to other Custom Objects, we flag this as a gap that requires either a Nutshell Enterprise custom development engagement or acceptance that those relationships will not transfer.

  • Import visibility and record limit on self-hosted Twenty

    Twenty's built-in export function is capped at 20,000 records per operation and includes only columns visible in the active view. If the customer's Twenty instance exceeds 20,000 records on any object, or if custom fields are not visible in the active export view, we pre-configure the view to expose all fields before extraction, and chunk large datasets into multiple exports by date range or record ID window to avoid silent truncation.

  • Workflows and automations do not migrate

    Twenty workflows (property-triggered automations) and any custom field configurations do not transfer to Nutshell because they are system-specific logic. Nutshell's automation model differs structurally. We deliver a written inventory of every active Twenty workflow with its trigger conditions and actions, plus a mapping to the nearest Nutshell Sales Automation equivalent (if available on the target tier) or a flag that the automation requires manual rebuild. The customer's admin configures Nutshell automations post-migration.

Migration approach

Six steps for a successful Twenty CRM to Nutshell data migration

  1. Discovery and scoping

    We audit the source Twenty instance for record counts per object, active custom objects, pipeline count and stage definitions, workflow count, and any integration dependencies. We confirm the export capability (API access tier, record volume, field visibility) and identify soft-deleted records that may affect uniqueness. We pair this with a Nutshell tier review to confirm which features (Sales Automation, email sequences, custom fields) are available on the customer's selected plan.

  2. Custom Object schema design

    We review every Twenty Custom Object schema during scoping and produce a written recommendation for mapping each to Nutshell equivalents (custom fields on Person/Organization/Deal, or a normalized activity structure). The customer approves the mapping before any data moves. This step is the critical path item for migrations with complex custom object relationships.

  3. Pre-export field visibility and soft-delete reconciliation

    We configure the Twenty export view to expose all fields (including custom fields) before extraction. We identify soft-deleted records that share unique values (email for People, domain for Companies) with active records, and coordinate with the customer on whether to purge deleted records or accept restored records in Nutshell. We export each object type in the correct sequence: Companies first, then People, then Opportunities, then Tasks, then Notes, then Custom Objects.

  4. Data transformation and validation

    We transform exported data to match Nutshell field types and formats: ISO 8601 dates, E.164 phone numbers, decimal currency values, and picklist normalization. We run a validation pass against Nutshell's expected field types and flag records that would reject on import. Corrections are applied and re-validated before the import file is finalized. We resolve owner email references to Nutshell User records and foreign key lookups (companyId to Organization, personId to Person) in preparation for the import sequence.

  5. Test import in Nutshell sandbox

    We run a full test import into the customer's Nutshell instance using a staging batch that covers edge cases (unlinked Persons, missing Organization, date edge cases, special characters in name fields). The customer's admin reviews record counts, spot-checks 20-30 records against the source, and confirms pipeline stage mapping before production migration begins. Any mapping corrections happen here.

  6. Production migration in dependency order

    We run production migration in object sequence: Organizations (from Twenty Companies), Persons (from Twenty People, with Organization links resolved), Deals (from Twenty Opportunities, with Party and Organization links resolved), Tasks, Notes, then Custom Object data (mapped per the approved schema). Each phase emits a row-count reconciliation report. We apply a write-freeze on Twenty during the final delta window and import any records modified since the initial export before cutting over.

  7. Cutover, validation, and workflow handoff

    We enable Nutshell as the system of record after the final reconciliation pass. We deliver the workflow inventory document and the custom field configuration guide to the customer's admin. We support a three-day hypercare window to resolve post-migration reconciliation issues. We do not rebuild Twenty workflows as Nutshell automations inside the migration scope; that is a separate configuration task for the customer's admin.

Platform deep dives

Context on both ends of the pair

Twenty CRM logo

Twenty CRM

Source

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.
Nutshell logo

Nutshell

Destination

Strengths

  • Simple, intuitive interface with minimal learning curve for sales teams new to CRM
  • Per-seat pricing is transparent and predictable, with annual billing reducing monthly cost
  • Full data export tool available for all account data including backups
  • Open JSON-RPC API allows programmatic access to all core objects
  • Native multichannel engagement (email, SMS, WhatsApp) without third-party add-ons for communication

Weaknesses

  • Reporting and analytics are considered weak, requiring manual Excel exports for detailed analysis
  • No bulk API endpoint—migration requires paginated API reads that must be rate-limited carefully
  • JSON-RPC API is less common than REST, requiring custom integration code compared to standard REST CRMs
  • Add-on costs (Forms, Nutshell IQ, Email Marketing) are per-company charges that stack on top of per-seat pricing
  • Feature restrictions on entry-level plans mean teams often need mid-tier to get basic automation

Complexity grading

How hard is this migration?

Standard CRM migration. 2 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 Twenty CRM and Nutshell.

  • Object compatibility

    B

    2 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

    Twenty CRM: 100 req/min (Pro), 200 req/min (Organization).

  • Data volume sensitivity

    B

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

Estimator

Estimate your Twenty CRM to Nutshell 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 Twenty CRM to Nutshell data migrations

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

Can't find your answer?

Walk through your Twenty CRM to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and three weeks for accounts under 10,000 records with no custom objects and clean data. Migrations with Custom Objects, multiple pipelines, large activity histories, or extensive data cleanup move to five to eight weeks because of schema design, transformation testing, and validation per object type. Discovery and scoping typically adds one to two weeks before the migration timeline begins.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Twenty CRM.
Land in Nutshell, 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