CRM migration
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
Source
Twenty CRM
Destination
Compatibility
9 of 14
objects map 1:1 between Spin CRM and Twenty CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
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.
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 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
Twenty CRM
Company
1:1Spin 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)
Twenty CRM
People
1:1Spin 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
Twenty CRM
Opportunity
1:1Spin 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
Twenty CRM
Pipeline Stages
lossySpin 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
Twenty CRM
People
1:1Spin 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
Twenty CRM
Task
1:1Spin 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
Twenty CRM
Note
1:1Spin 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
Twenty CRM
Task
lossySpin 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
Twenty CRM
User
1:1Spin 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)
Twenty CRM
Custom Field (People)
lossySpin 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)
Twenty CRM
Custom Field (Company)
lossySpin 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)
Twenty CRM
Custom Field (Opportunity)
lossySpin 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
Twenty CRM
Custom Object
1:1Spin 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
Twenty CRM
Document
1:1Spin 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.
| Spin CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Company | Company1:1 | Fully supported | |
| People (Contact/Lead) | People1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stages | Pipeline Stageslossy | Fully supported | |
| Lead | People1:1 | Fully supported | |
| Activity: Task | Task1:1 | Fully supported | |
| Activity: Note | Note1:1 | Fully supported | |
| Activity: Calendar Event | Tasklossy | Fully supported | |
| Owner | User1:1 | Fully supported | |
| Custom Field (People) | Custom Field (People)lossy | Fully supported | |
| Custom Field (Company) | Custom Field (Company)lossy | Fully supported | |
| Custom Field (Deal) | Custom Field (Opportunity)lossy | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| Document | Document1: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.
Spin CRM gotchas
No documented public REST API
CSV export is object-by-object, not bulk
Custom field visibility at export time
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
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.
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.
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.
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.
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.
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
Spin 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 Spin 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
Spin CRM: Not publicly documented — confirmed during scoping..
Data volume sensitivity
Spin 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 Spin CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Spin 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.