CRM migration

Migrate from Spin CRM to Twenty CRM

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

Spin CRM logo

Spin CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

64%

9 of 14

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

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Spin CRM has no documented REST API, which means every migration must run through its CSV export function accessed per object from the settings menu. We coordinate sequential CSV exports across Companies, People, Opportunities, and Activities, validate column headers for custom field coverage, and execute a freeze window to minimize data drift between exports. Twenty CRM requires schema to exist before import, so we pre-create any missing standard fields on People and Companies (jobTitle, department, website are not native as of 2026 per open GitHub issues), configure the pipeline stages to match Spin CRM's customizable stage sequence, and provision custom objects before any data load. We migrate Activities as Tasks and Notes, preserve deal values and stage assignments, and deliver a written inventory of Spin CRM automations and workflow rules for your admin to rebuild in Twenty. Documents do not migrate without confirmed export access.

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

Spin CRM logo

Spin CRM

What's pushing teams away

  • Reporting and analytics capabilities are described as insufficient by power users who need deeper pipeline insight and custom dashboards.
  • Small market footprint means fewer integrations, third-party plugins, and community resources compared to established CRM platforms.
  • Lack of a publicly documented REST API limits automation potential and makes migration more dependent on CSV exports rather than programmatic extraction.
  • Scaling limitations become apparent as teams grow beyond basic contact and deal management into more complex workflows.
  • When teams outgrow the core feature set, the platform lacks clear upgrade paths within its own product tier hierarchy.

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 Spin CRM objects map to Twenty CRM

Each row shows how a Spin 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.

Spin CRM

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Spin CRM Companies map directly to Twenty Companies. We export via the settings-based CSV, capture company name, address, industry, and any custom properties, then import into Twenty as Company records. Spin CRM's Companies serve as the primary relationship anchor for People records, so we export and import Companies first to establish the lookup keys before any People import. Domain-based dedupe is used where company website is populated.

Spin CRM

People (Contact/Lead)

maps to

Twenty CRM

People

1:1
Fully supported

Spin CRM People records (the platform's unified contact and lead entry object) map to Twenty's People object. We resolve the company association by matching Spin CRM's company link against the imported Company record names. Email address is the primary dedupe key. Any Spin CRM Person records without an email are flagged for manual review before import.

Spin CRM

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Spin CRM Deals map to Twenty Opportunities. The Spin CRM deal stage maps to a Twenty pipeline stage value that we configure before migration. Deal value, expected close date, owner, and associated company and person links transfer directly. Closed-Lost and Closed-Won statuses from Spin CRM map to matching Twenty stage values.

Spin CRM

Pipeline Stages

maps to

Twenty CRM

Pipeline Stages

lossy
Fully supported

Spin CRM's customizable pipeline stages are captured during scoping and replicated in Twenty's pipeline configuration. Each Spin CRM stage becomes a named stage in a Twenty pipeline with the same order and any available probability or description values. Stages are configured before Opportunities are imported so that the stage field is validated during data load.

Spin CRM

Lead

maps to

Twenty CRM

People

1:1
Fully supported

Spin CRM's separate Lead object (accessible via the Lead window settings export) maps to Twenty People. Spin CRM uses Leads and People/Contacts as distinct entry points; Twenty consolidates both into the People object. We import both Spin CRM object types as Twenty People records and flag any duplicate email addresses to prevent record collision during load.

Spin CRM

Activity: Task

maps to

Twenty CRM

Task

1:1
Fully supported

Spin CRM task and reminder records map to Twenty Tasks. Task title, due date, status, assigned owner, and linked company or person transfer as-is. We resolve Spin CRM owner email references against the Twenty User records provisioned before import. Tasks without a resolvable owner are imported with no assignment and flagged for the admin to assign post-import.

Spin CRM

Activity: Note

maps to

Twenty CRM

Note

1:1
Fully supported

Spin CRM notes and internal comments map to Twenty Notes attached to the relevant People, Company, or Opportunity record. Note body text, author, and timestamp transfer directly. Notes without a clear parent record are attached to the most recently accessed related People or Company record based on Spin CRM's activity ordering.

Spin CRM

Activity: Calendar Event

maps to

Twenty CRM

Task

lossy
Fully supported

Spin CRM calendar events and meeting records map to Twenty Tasks with a type indicator distinguishing them from standard to-do tasks. Meeting title, date, and attendees transfer. If the Spin CRM export exposes attendee information, we store it in a custom field on the Twenty Task record; otherwise, the calendar nature of the activity is indicated in the task title for the admin to reconcile in Twenty's calendar view post-migration.

Spin CRM

Owner

maps to

Twenty CRM

User

1:1
Fully supported

Spin CRM owner references on Companies, People, Deals, and Activities map to Twenty User records. We resolve by email match where a Twenty User exists with the same email address. Owners without a matching Twenty User enter a reconciliation queue, and the customer's admin provisions the User before the relevant records are imported. Owner resolution is validated before each object import phase begins.

Spin CRM

Custom Field (People)

maps to

Twenty CRM

Custom Field (People)

lossy
Fully supported

Spin CRM custom fields on People (Contacts and Leads) require pre-creation in Twenty's Settings Data Model before any People import. We audit the Spin CRM CSV column headers against the customer's reported custom field list during scoping, request a re-export if columns are missing, create each custom field in Twenty with the appropriate type (text, number, date, select), and then import the values during the standard People load phase.

Spin CRM

Custom Field (Company)

maps to

Twenty CRM

Custom Field (Company)

lossy
Fully supported

Spin CRM custom fields on Companies require pre-creation in Twenty before the Company import. Custom field values stored as picklist options in Spin CRM map to Twenty select field options. Boolean fields map to Twenty checkbox fields. Any custom field not visible in the Spin CRM CSV export is flagged and the customer is consulted before the import proceeds.

Spin CRM

Custom Field (Deal)

maps to

Twenty CRM

Custom Field (Opportunity)

lossy
Fully supported

Spin CRM custom fields on Deals are captured from the Deal CSV export and pre-created in Twenty as custom fields on the Opportunity object. Deal-specific custom properties such as deal source, contract type, or renewal date map to equivalently named or typed Twenty custom fields. We validate that all Spin CRM custom Deal fields appear in the exported CSV before schema creation begins.

Spin CRM

Custom Object

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Spin CRM supports custom field creation but custom object availability is limited and not prominently documented. If the customer has custom object data in Spin CRM (tracked via separate linked records or export tabs), we create matching Custom Objects in Twenty via the Settings Data Model, define the custom fields and any lookup relationships to standard objects, and import the records via the Twenty REST or GraphQL API. This phase runs last in the migration sequence to allow all standard object dependencies to resolve first.

Spin CRM

Document

maps to

Twenty CRM

Document

1:1
Fully supported

Spin CRM document storage is not migratable via the documented CSV export mechanism. File blobs and attachments stored within Spin CRM cannot be extracted without a confirmed export path from the Spin CRM interface. We flag document storage access with the customer during scoping. If a supported export method is identified, we include document migration as an optional add-on scope. By default, document migration is excluded from the standard migration package.

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.

Spin CRM logo

Spin CRM gotchas

High

No documented public REST API

Medium

CSV export is object-by-object, not bulk

Medium

Custom field visibility at export time

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

  • Spin CRM has no documented REST API

    Spin CRM does not publish REST API endpoints, authentication schemes, or rate limit documentation. Every migration interaction requires CSV export from the per-object settings menu. We cannot perform live API reads or incremental syncs, which means we work from exported snapshots rather than real-time data. We mitigate this by requesting exports as close to migration day as feasible, running a pre-validation pass on exported files before import, and recommending a data freeze window of 24-48 hours before the final exports to minimize data drift.

  • CSV export is per-object, not bulk

    Spin CRM's export mechanism is a per-object, settings-menu CSV download. There is no single bulk export covering Companies, People, Deals, and Activities simultaneously. Exports taken at different times may reflect changes made between export runs, creating inconsistent snapshots. We recommend a 24-48 hour data freeze before the final export sequence and export in dependency order: Companies first, then People, then Deals, then Activities. We cross-reference records by email and company name across exports to detect any records modified between exports.

  • Twenty lacks some standard People and Company fields

    Twenty CRM's People and Companies objects do not include common standard fields like jobTitle, department, website, socialProfiles, or dateOfBirth out of the box (documented in Twenty GitHub issue #13953). Spin CRM may hold these values in standard fields or custom fields. We pre-create any missing standard fields in Twenty's Settings Data Model before importing People and Companies so that all Spin CRM contact data has a valid landing field. This adds a schema pre-creation step not required in migrations to platforms with fuller standard field coverage.

  • Twenty has no built-in import UI

    Twenty CRM does not ship a guided CSV import wizard. Migrations require custom scripts that parse Spin CRM's CSV exports and make batch API calls to Twenty's REST or GraphQL endpoints. This increases migration complexity compared to platforms with native import tooling. We write and maintain these scripts as part of the standard migration package, with batch sizing, error handling, and retry logic built in. Customers should plan additional UAT time compared to migrations targeting platforms with import wizards.

  • Custom fields may be absent from CSV exports

    Spin CRM's CSV export format may not expose all custom fields unless the user explicitly adds them to the export view before downloading. We review exported column headers against the customer's reported custom field list during scoping. Any missing columns trigger a re-export request before the migration begins. Custom field values that do not appear in the CSV are flagged and discussed with the customer; we do not infer or fabricate missing values.

Migration approach

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

  1. Spin CRM audit and scoping

    We audit Spin CRM across all active object types (Companies, People/Contacts, Leads, Deals, Activities), count total records per object, document all custom field names and their Spin CRM types, capture the full pipeline stage sequence including stage order and any probability values, identify any custom object data, and review recent export logs to estimate data freshness. This output is a written scoping document used to design the Twenty schema before any data moves.

  2. Twenty workspace schema pre-creation

    We configure Twenty's Data Model before any import. This includes pre-creating any missing standard fields on People and Companies (jobTitle, department, website), configuring the Opportunity pipeline with stages matching Spin CRM's pipeline sequence, creating custom objects and their fields for any identified custom object data, and inviting all team members as Users so that owner email lookups resolve during import. Schema is validated in Twenty before any Spin CRM data is exported.

  3. Spin CRM CSV export coordination

    We coordinate the Spin CRM CSV export sequence in dependency order: Companies first (establishes relationship anchor), then People and Leads, then Deals and Opportunities, then Activities (Tasks, Notes, Calendar events). We recommend a 24-48 hour data freeze before exports to minimize changes between export runs. We validate each exported file against the expected column headers and flag any missing custom fields before proceeding to the import phase.

  4. Data transformation and import scripting

    We write custom scripts that read Spin CRM CSV exports, apply field-level transformations (date format normalization, currency handling, email dedupe checks), resolve parent-record lookups (company link for People, owner email for User resolution), and write records to Twenty via the REST or GraphQL API. Custom objects import last after all standard object dependencies are satisfied. Each import phase emits a row-count reconciliation report for the customer's review.

  5. Record validation and relationship verification

    After each import phase, we validate record counts match the Spin CRM export totals within an agreed tolerance, spot-check 20-30 records across each object type against the Spin CRM source, verify that People records are correctly linked to their Company records, confirm that Deal records reference the correct stage values, and ensure owner assignments resolved correctly for all imported records.

  6. Automation inventory and cutover

    We deliver a written inventory of every Spin CRM automation, workflow, and custom view that requires rebuild in Twenty. This document is scoped to the customer's admin team for post-migration reconstruction. We enable Twenty as the system of record after final validation, freeze Spin CRM write access, and enter a one-week hypercare window to resolve any reconciliation issues raised by the user's team. We do not rebuild Spin CRM workflows as Twenty workflows inside the migration scope; that is a separate engagement.

Platform deep dives

Context on both ends of the pair

Spin CRM logo

Spin CRM

Source

Strengths

  • Simple pipeline builder with drag-and-drop stage customization matching most SMB sales workflows.
  • Low monthly cost with no visible seat floor, giving small teams a predictable expense line.
  • Mobile app availability for on-the-go record updates by field sales representatives.
  • Built-in task management, reminders, and calendar integration reduce the need for separate productivity tools.
  • Customer support receives high marks from verified reviewers for responsiveness and helpfulness.

Weaknesses

  • Reporting and analytics are described as limited by users requiring deeper business intelligence and custom metric views.
  • Absence of a published API restricts automation, third-party integrations, and programmatic migration options.
  • Small review sample size on major platforms (G2: 2 reviews) makes independent evaluation difficult for prospective buyers.
  • Feature set is narrower than mid-market alternatives, potentially requiring workarounds for advanced use cases.
  • Lacks the ecosystem breadth of larger CRMs—no app marketplace, limited partner integrations, minimal community resources.
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 Spin 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

    Spin CRM: Not publicly documented — confirmed during scoping..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Straightforward migrations under 5,000 total records with one pipeline and fewer than 20 custom fields complete in two to four weeks. Migrations with multiple deal pipelines, custom objects, large activity histories (thousands of tasks and notes), or extensive custom field sets move to six to ten weeks because of schema pre-creation, multi-phase CSV validation, and parent-record resolution across exports taken at different times.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Spin 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