CRM migration
Field-level mapping, validation, and rollback between Spiro and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Spiro
Source
Twenty CRM
Destination
Compatibility
9 of 11
objects map 1:1 between Spiro and Twenty CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Spiro to Twenty CRM is a migration from an AI-first SMB CRM with limited export tooling to an open-source platform with a GraphQL/REST API. Spiro has no publicly documented public API for programmatic data extraction; all export work routes through the Data Collector feature that requires CSM enablement and a Dropbox destination. We coordinate with Spiro's team to provision Data Collector access, extract the full object schema including custom field definitions, and transform the export into Twenty's API-compatible import format. We preserve the Spiro pipeline stages as custom stage values in Twenty's Opportunity pipeline, map activity history (calls, emails, meetings) to Twenty's timeline, and handle the Spiro attachment URLs by verifying reachability and re-linking in Twenty. Automations, Data Collector schedules, and AI relationship signals from Spiro do not migrate; we deliver a written inventory of any configured alerts or rules requiring rebuild in Twenty.
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 Spiro 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.
Spiro
Company
Twenty CRM
Organization
1:1Spiro Companies map to Twenty's Organization object. The Spiro company name, address fields (street, city, state, postal code, country), phone, website domain, and industry values migrate directly. We normalize address components if the source Spiro export combines fields. Any Spiro Company records sharing the same legal entity name are flagged as potential duplicates for customer review before final import. Spiro's custom Company fields migrate as Organization custom fields after the customer provisions them in Twenty's workspace settings.
Spiro
Contact
Twenty CRM
Person
1:1Spiro Contacts map to Twenty's Person object. Name, email, phone, job title, and LinkedIn URL fields migrate directly. The Spiro Contact's linked Company (via Company lookup) migrates as the Person's organization relationship pointing to the target Organization record. Spiro's custom Contact fields migrate as Person custom fields. The email address serves as the primary dedupe key during import.
Spiro
Opportunity
Twenty CRM
Opportunity
1:1Spiro Opportunities map to Twenty's Opportunity object with the pipeline and stage reconstructed in Twenty before import. The Opportunity name, amount (value), expected close date, and notes migrate directly. Stage mapping is explicit: each Spiro stage value becomes a custom stage value in Twenty's Opportunity pipeline that we configure during the schema preparation phase. Closed-Lost and Closed-Won statuses from Spiro map to the corresponding stage values in Twenty.
Spiro
Pipeline
Twenty CRM
Pipeline + Stage
lossySpiro's single pipeline with stage values migrates to Twenty's customizable pipeline configuration. We create a Pipeline in Twenty's workspace settings and define stage values that correspond to Spiro's stage labels. Stage order and probability percentages (if present in Spiro) are preserved. If Spiro has multiple pipeline views (for different product lines or team structures), we replicate these as separate Pipelines in Twenty.
Spiro
Custom Fields (Companies, Contacts, Opportunities)
Twenty CRM
Custom Fields
lossySpiro does not expose custom field definitions via a self-serve API. We coordinate with Spiro's Customer Success Manager to extract the full custom field inventory, including field name, type (text, number, date, picklist, checkbox), and object assignment. We then pre-create each custom field in Twenty's workspace (Organizations, People, Opportunities) before importing any data. Field type mapping from Spiro to Twenty is straightforward for text, number, date, and checkbox types; picklist values migrate as-is and require manual recreation in Twenty's picklist settings.
Spiro
Activity: Call
Twenty CRM
TimelineEvent (custom)
1:1Spiro call records migrate as TimelineEvent entries in Twenty. The call title, date, duration (minutes), outcome, and notes migrate as event fields. The linked Contact and Company are resolved to the target Person and Organization records respectively. If Twenty's standard timeline does not support call duration fields natively, we create a custom TimelineEvent type with duration and outcome fields. Owner assignment migrates by matching the Spiro user's email to the target Twenty workspace member.
Spiro
Activity: Email
Twenty CRM
TimelineEvent (custom)
1:1Spiro email engagement records migrate as TimelineEvent entries in Twenty. The email subject, body (plain text), sent or received direction, and timestamp migrate. Note: if Spiro's email integration was disconnected during the source period, some emails may not have been logged in Spiro at all; we cannot backfill data that was never recorded. We verify email activity records exist in the Spiro export before importing and flag gaps to the customer.
Spiro
Activity: Meeting
Twenty CRM
TimelineEvent (custom)
1:1Spiro meeting records migrate as TimelineEvent entries in Twenty with meeting title, date and time, duration, location, and attendees. Attendee emails are resolved to Person records where matches exist in the migrated data; unresolved attendee emails are noted as external participants. The meeting organizer maps to the Twenty workspace member who owns the record.
Spiro
Activity: Task
Twenty CRM
Task
1:1Spiro tasks migrate as Twenty Tasks. Task title, description, due date, completion status, priority, and assignee (owner) migrate directly. The linked Contact or Company resolves to the target Person or Organization in Twenty. Task status (completed, in progress, not started) maps to Twenty's task status values.
Spiro
User / Owner
Twenty CRM
WorkspaceMember
1:1Spiro user records map to Twenty workspace members. We resolve by email address. Any Spiro user without a matching Twenty workspace member is held in a reconciliation queue; the customer provisions the user in Twenty before the import resumes. Owner assignment on Opportunities, Contacts, and Activities resolves at migration time using the email match lookup.
Spiro
Attachment (file reference)
Twenty CRM
Attachment (re-linked)
1:1Spiro stores file attachments as URL references rather than embedded blobs. During migration, we verify each attachment URL is reachable at the time of export, download the file content, and re-upload it to Twenty's attachment storage if available. If the source Spiro workspace access is revoked post-migration, the original URL references become orphaned. We recommend downloading critical attachments before the migration window closes and flag any URLs that fail reachability checks during the export phase.
| Spiro | Twenty CRM | Compatibility | |
|---|---|---|---|
| Company | Organization1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Pipeline | Pipeline + Stagelossy | Fully supported | |
| Custom Fields (Companies, Contacts, Opportunities) | Custom Fieldslossy | Fully supported | |
| Activity: Call | TimelineEvent (custom)1:1 | Fully supported | |
| Activity: Email | TimelineEvent (custom)1:1 | Fully supported | |
| Activity: Meeting | TimelineEvent (custom)1:1 | Fully supported | |
| Activity: Task | Task1:1 | Fully supported | |
| User / Owner | WorkspaceMember1:1 | Fully supported | |
| Attachment (file reference) | Attachment (re-linked)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.
Spiro gotchas
Email disconnection silently breaks activity logging
Data Collector requires CSM enablement and Dropbox access
Attachment URLs are references, not embedded files
Custom field definitions not exposed via self-service API
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
Data Collector coordination and export
We initiate contact with Spiro's Customer Success Manager to enable Data Collector for the customer's workspace and provision the Dropbox export folder. We define the export scope: Organizations (Companies), People (Contacts), Opportunities, Activities (calls, emails, meetings, tasks), Users (owners), and any available custom field data. We confirm the Dropbox folder is accessible and that the CSM has completed the export before proceeding. This step typically adds 3-5 business days to the timeline and is the gating factor for all subsequent work.
Schema extraction and custom field inventory
We work with Spiro's support team to extract the full custom field schema: field name, data type, and object assignment for Companies, Contacts, and Opportunities. We cross-reference this against the Spiro export files to confirm all fields are present in the data export. We then provision the equivalent custom fields in Twenty's workspace settings before any data import begins. Any fields we cannot confirm in the schema are flagged as potential data loss risk and presented to the customer for resolution.
Twenty pipeline and stage configuration
We create the target pipeline in Twenty's workspace settings and define stage values that correspond to Spiro's pipeline stages. Stage order and any probability percentages migrate as stage metadata. We configure the Opportunity object in Twenty to use this pipeline as the default. Pipeline configuration is validated in Twenty's sandbox or test environment before production import begins.
Owner and user reconciliation
We extract every distinct user (owner) referenced in Spiro's export files across Opportunities, Contacts, Activities, and any custom object records. We match each user by email address against Twenty's workspace member list. Any Spiro user without a matching Twenty workspace member goes to a reconciliation queue for the customer's admin to provision. Migration cannot proceed past user provisioning because OwnerId references are required on standard objects.
Sandbox migration and validation
We run a full migration into Twenty's environment using production-like data volume. The customer reconciles record counts (Organizations, People, Opportunities, Activities), spot-checks 25-50 random records against the Spiro source, and validates that the pipeline stages and custom fields rendered correctly. Any mapping corrections, missing fields, or relationship gaps surface here and are resolved before production migration begins.
Production migration in dependency order
We run production migration in dependency order: Organizations (from Spiro Companies) first, then People (with Organization relationship resolved), then Opportunities (with Organization and Owner resolved), then Activities (calls, emails, meetings, tasks), and finally any attachment file downloads and re-uploads. Each phase emits a row-count reconciliation report before the next phase begins. The Data Collector export is the source of record; any modifications made in Spiro after the export date are documented separately for a delta pass.
Cutover, validation, and handoff
We freeze Spiro writes during the cutover window and run a final delta migration of any records modified during the migration window. We verify record counts, spot-check relationship integrity (Contacts linked to Organizations, Opportunities linked to Organizations and Contacts), and confirm pipeline stage distribution matches the Spiro source. We deliver a written inventory of any Spiro automations, alerts, or Data Collector schedules that require rebuild in Twenty's workflow tools. We provide a one-week post-migration support window for reconciliation issues raised by the customer's team.
Platform deep dives
Spiro
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Spiro and Twenty CRM.
Object compatibility
4 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
Spiro: Not publicly documented.
Data volume sensitivity
Spiro 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 Spiro to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Spiro 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 Spiro
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.