CRM migration
Field-level mapping, validation, and rollback between Tubular CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Tubular CRM
Source
Twenty CRM
Destination
Compatibility
8 of 11
objects map 1:1 between Tubular CRM and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Tubular CRM to Twenty CRM is a structural migration for a small team, not a record copy. Tubular uses a flat Contact model that combines person and company attributes; Twenty separates People and Companies as distinct standard objects, which means every Tubular Contact with a linked company must split into two records at migration time. We handle that split by resolving the company association first, creating the Twenty Company record, then linking the Person record to it. Tubular's Pro tier has no REST API, so export relies on CSV downloads from the UI and Zapier integration data, which constrains how many objects we can retrieve and may omit the full activity timeline. We sequence the export in dependency order starting with Companies and People, then Deals and Pipeline Stages, then Tasks and Activity Logs. Tubular's Deal Stage Triggers, Email Templates, and DNA Credit-enriched fields do not migrate as logic or data; we document every active trigger and credit-fed field so the customer's admin can rebuild equivalents in Twenty's Workflow engine post-migration.
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 Tubular 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.
Tubular CRM
Contact
Twenty CRM
Person + Company (split required)
1:manyTubular's Contact object combines person attributes (name, email, phone, job title) and company association into a single record. Twenty separates these into Person and Company standard objects. We resolve every Tubular Contact by first checking the linked company field, creating a Company record in Twenty if one does not exist, then creating a Person record linked to that Company via the companyLink.definiteV1 field. Person.email, Person.phone, Person.jobTitle, and Person.city map directly from Tubular Contact fields.
Tubular CRM
Company (from Contact linked-company field)
Twenty CRM
Company
1:1Tubular does not have a standalone Company object; company information lives as a field on Contact. We extract distinct company names from Tubular Contact.company, deduplicate them, and create Twenty Company records. The Tubular Contact.company domain becomes the Company.website field where available. All unique company values extracted from Contacts are created as Twenty Company records before Person records are linked.
Tubular CRM
Deal
Twenty CRM
Opportunity
1:1Tubular Deals map directly to Twenty Opportunities. Deal.name becomes Opportunity.name, Deal.value becomes Opportunity.amount, and Deal.stage becomes Opportunity.stageName. Deal.expectedClose and payment terms map to Opportunity.closeDate and a custom Opportunity field. Deal owner maps to Opportunity.accountOwner with owner resolution by email against the Twenty User table.
Tubular CRM
Pipeline Stage
Twenty CRM
Opportunity Stage
lossyTubular allows custom pipeline stages per deal. We map stage names and order to Twenty Opportunity.stageName values, and configure the stage order in Twenty's pipeline settings before migration. Stage probability percentages stored in Tubular migrate as a custom Opportunity.probability field if the customer requires them; Twenty's default probability auto-calculation is used otherwise.
Tubular CRM
Lead
Twenty CRM
Person (with lead context flag)
1:1Tubular's Lead object (distinct from Contact) contains source, status, owner, and custom Lead Builder fields. We migrate Lead records to Twenty Person records with a custom Person.isLead__c boolean set to true to preserve lead context post-migration. Lead status and source are stored in custom Person fields leadStatus__c and leadSource__c. Lead conversion in Twenty requires the admin to create a Company record and link the Person, which we document as a post-migration step.
Tubular CRM
Tag
Twenty CRM
Tag (on Person and Opportunity)
1:1Tubular supports tagging on Deals and Contacts. Twenty includes a Tag standard object that can be applied to Person, Company, and Opportunity records. We preserve all Tag labels as Twenty Tag records and apply them via Tag.targetObjectId and Tag.name during migration. Tag label deduplication ensures no duplicate tags are created in Twenty.
Tubular CRM
Task
Twenty CRM
Task
1:1Tubular Tasks are associated with Leads and Deals. We transfer Task.title, due dates (Task.dueDate), owners (resolved by email to Twenty User), and completion status (Task.status). Recurring task patterns in Tubular are not supported in export and cannot be migrated; we document recurring patterns in the handoff notes so the admin can rebuild them in Twenty's Workflow engine.
Tubular CRM
Activity Log (calls, emails, meetings, notes)
Twenty CRM
Task, Event, Note
1:1Tubular activity logs attached to Deals and Contacts export as activity records via CSV or API depending on tier. Call logs map to Twenty Task with a custom taskType__c field set to Call. Email logs map to Twenty Note or Task with body content preserved. Meeting records map to Twenty Event with date, duration, and location. Where the Pro-tier export lacks API access, we coordinate manual CSV downloads of activities in dependency order after Deals are exported so that activity-to-deal links can be resolved.
Tubular CRM
User / Owner
Twenty CRM
User
1:1Tubular User accounts and deal owners map directly to Twenty User by email match. We resolve every distinct owner referenced on Deal, Contact, Lead, and Task records before migration begins. Any Tubular owner without a matching Twenty User is placed in a reconciliation queue for the customer's admin to provision. Inactive Tubular users are migrated as inactive Twenty Users with records reassigned per the customer's preference.
Tubular CRM
Documents / Attachments (within deal flows)
Twenty CRM
Attachment (via URL reference)
1:1Tubular PDFs and documents attached within deal flows can be extracted via UI scraping on Pro or API on Enterprise. We preserve file names, original upload timestamps, and the linked Deal name. Files are hosted as URL references in a custom Opportunity attachmentUrl__c field or as Note records with file links. We do not host or re-upload files; the original document URLs or the customer's exported file package are linked at the record level.
Tubular CRM
Custom fields on Contact and Deal
Twenty CRM
Custom fields on Person and Opportunity
lossyTubular custom fields on Contacts and Deals migrate as custom fields on Twenty Person and Opportunity objects. We create all custom fields in Twenty's Settings → Data Model before migration, using field type mapping (text to text, number to number, date to date, checkbox to boolean, select to select). A pre-migration field creation checklist is delivered to the admin during the scoping phase so that the schema is ready before any CSV import begins.
| Tubular CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person + Company (split required)1:many | Fully supported | |
| Company (from Contact linked-company field) | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Lead | Person (with lead context flag)1:1 | Fully supported | |
| Tag | Tag (on Person and Opportunity)1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Activity Log (calls, emails, meetings, notes) | Task, Event, Note1:1 | Fully supported | |
| User / Owner | User1:1 | Fully supported | |
| Documents / Attachments (within deal flows) | Attachment (via URL reference)1:1 | Fully supported | |
| Custom fields on Contact and Deal | Custom fields on Person and Opportunitylossy | 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.
Tubular CRM gotchas
Enterprise REST API is undocumented and gated
Reports cannot be programmatically exported
DNA Credits limit AI-enriched enrichment features
Deal Stage Triggers are platform-specific automation
UI-based extraction required for Pro-tier exports
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
Discovery and export readiness assessment
We audit the Tubular CRM account across tier (Pro or Enterprise), active users, record counts per object, custom field inventory, active Deal Stage Triggers, Email Templates, and DNA Credit usage. We assess whether API credentials are available on Enterprise or whether the customer must perform manual CSV exports on Pro. The discovery output is a written migration scope that lists every object to migrate, the export method per object, any pre-migration data cleanup required, and a custom field mapping matrix for the customer's review.
Twenty workspace preparation and field creation
We create the target schema in the customer's Twenty workspace before any data is exported from Tubular. This includes creating all custom fields on Person and Opportunity (matching Tubular's custom Contact and Deal fields), configuring Opportunity stage names and order to match Tubular pipeline stages, inviting all active users to Twenty so that owner resolution can proceed, and setting up the Tag object structure. The admin reviews and approves the schema setup in Twenty before we request export files from Tubular.
Export coordination and data extraction
For Enterprise customers with API access, we test the API endpoint connectivity directly using provided credentials, extract records in dependency order, and validate record counts against what Tubular's UI reports. For Pro customers, we coordinate with the customer to download CSV exports from Tubular's UI in the correct sequence: Company names from Contacts first, then Contacts, then Deals, then Tasks, then Activity Logs. We provide a step-by-step export guide with screenshots so that non-technical team members can complete the export without guidance from us.
Data transformation and Contact-to-Person split
We transform the exported Tubular data before importing into Twenty. The primary transformation is the Contact split: we extract distinct company names from Tubular Contact records, deduplicate them, and generate a Company CSV for Twenty import. We then generate a Person CSV where each row corresponds to a Tubular Contact, with the companyLink.definiteV1 field resolved to the Twenty Company ID generated in the prior step. We flag any Tubular Contact without a company association for admin review and decide whether to create placeholder Company records or import as unlinked Persons.
Staging migration and reconciliation
We run the full migration into a Twenty staging environment using production data volume so that the customer can validate record counts, spot-check field mapping, and confirm that the Person-Company relationship resolves correctly. The customer's lead reviews 25-50 randomly sampled records against the Tubular source, verifies that deal values and stage assignments are accurate, and confirms that Tags appear on the correct Person and Opportunity records. We correct any mapping errors identified in staging before proceeding to production migration.
Production migration, delta sync, and handoff
We run the production migration in dependency order: Company records first, then Person records with company links, then Opportunities with stage and owner resolved, then Tasks and Activity Logs, then Tags. We freeze writes to Tubular during the production migration window and run a final delta sync of any records created or modified during the cutover period. We deliver the Deal Stage Trigger inventory and Workflow rebuild guide to the customer's admin. We do not rebuild Tubular automations or DNA Credit features in Twenty; that is a separate rebuild engagement.
Platform deep dives
Tubular CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Tubular CRM and Twenty CRM.
Object compatibility
2 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
Tubular CRM: Not publicly documented.
Data volume sensitivity
Tubular 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 Tubular CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Tubular 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 Tubular 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.