CRM migration
Field-level mapping, validation, and rollback between User.com and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
User.com
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between User.com and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from User.com to Twenty CRM is a migration from an all-in-one European CRM with marketing automation, live chat, and contact-based billing to an open-source, self-hosted Salesforce alternative backed by Y Combinator. The structural shift is from User.com's contact-centric data model (where any record with an email, phone, or chat interaction counts toward billing) to Twenty's Company-People-Opportunity schema. We extract contacts, companies, deals, events, activities, custom properties, and tags from User.com via CSV and API, normalize Bool values (now f/t), DateTime formats (ISO 8601), and Choice field brackets (now {}), then load into Twenty in dependency order: workspace members first, then companies, people linked to companies, opportunities referencing both, and activity history last. Automations, email templates, campaign history, and web push subscriptions are explicitly excluded from migration scope; we deliver written inventories of workflows and templates requiring manual 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 User.com 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.
User.com
User (Contact)
Twenty CRM
People
1:1User.com's Contact records map directly to Twenty's People object. Every User.com contact with an email, phone, user_id, last_heard (chat visitor), web push subscription, or FCM key is a billable contact and must be audited before migration to disclose the true record count. We export the full attribute profile including tags, segments, and custom properties, then map to Twenty People fields. Bool attributes export as f/t and require normalization to boolean values during loading. The Twenty People object must exist before any Opportunity import that references a person as a decision-maker or contact.
User.com
Company
Twenty CRM
Company
1:1User.com Companies map directly to Twenty Companies. The company-contact association is preserved by resolving the Company foreign key on the migrated People record. Company domain, industry, size, and address attributes map to the corresponding Twenty Company fields. We validate that all referenced companies exist in Twenty before importing people records that carry a company association.
User.com
Deal
Twenty CRM
Opportunity
1:1User.com Deals map to Twenty Opportunities. The deal stage maps to Twenty Opportunity stageName, deal value maps to amount, and the deal owner maps to the Twenty user by email resolution. Custom deal fields migrate to custom fields on the Opportunity object; we pre-create the Opportunity fields in Twenty Settings → Data Model before migration begins. Closed-won and closed-lost deal outcomes preserve as stage values.
User.com
Event
Twenty CRM
Task or Note
1:manyUser.com Events (calendar/activity events) split by event type: meeting-type events map to Twenty Task records with taskType=meeting, and informational events map to Note records linked to the parent People or Company record. We preserve the original event timestamp as the ActivityDate on Task and the createdAt timestamp on Note. Attendee lists migrate as comma-separated text fields or are omitted if the attendee count exceeds the reasonable field length for a CSV-mapped field.
User.com
Activity
Twenty CRM
Task
1:1User.com Activities (calls, emails, meetings, tasks, notes) map to Twenty Task records with the activity type stored in a custom taskType field. Call duration, disposition, and recording URL preserve as custom fields on the Task. Email body content migrates as Task description or as a linked Note attachment. We preserve the original activity timestamp as ActivityDate for timeline ordering.
User.com
Custom Property
Twenty CRM
Custom Field
lossyUser.com custom properties on contacts, companies, and deals require pre-creation in Twenty Settings → Data Model before CSV import. Choice and fixed-choice fields in User.com (now using {} bracket syntax) map to Twenty select or multiselect fields. Multi-checkbox properties map to Twenty multiselect fields. Date fields migrate in ISO 8601 format which Twenty accepts natively. We document every custom property and its recommended Twenty field type during scoping.
User.com
Tag
Twenty CRM
Topic
lossyUser.com tags associated with contacts and deals migrate to Twenty Topics with TopicAssignment records linking to the People or Opportunity. If the customer prefers a simpler model, tags map to a multi-select picklist custom field on the relevant object. We confirm the preferred tag strategy during scoping because User.com tags are flat while Twenty supports hierarchical topics.
User.com
Segment
Twenty CRM
Not migrated (dynamic recreation required)
1:1User.com Segments are dynamic groups based on contact attributes and behavioral rules. We export the segment membership (the list of contacts currently in each segment) but not the segment definition, because dynamic re-evaluation must be recreated in Twenty using Twenty's filter and view system. We deliver a segment membership export as a CSV of People IDs per segment for manual recreation.
User.com
Automations (Workflows)
Twenty CRM
Not migrated
1:1User.com automation sequences are not accessible via documented CSV or public API export. We explicitly exclude automation migration from scope. We recommend capturing screen recordings of all active automations before migration begins and deliver a written inventory of each automation's trigger, conditions, delays, and actions for the customer's admin to rebuild in Twenty's workflow system.
User.com
Live Chat / Conversation
Twenty CRM
Task
1:1User.com chat transcripts and conversation history can be exported, but the exported format bundles conversation threads with contact records. We flatten conversation threads and re-associate them as Task records with taskType=chat on the related People record. Chat messages migrate as Task description with a timestamp prefix. If the customer uses User.com live chat as a support channel, the migrated tasks represent conversation history for customer relationship continuity.
| User.com | Twenty CRM | Compatibility | |
|---|---|---|---|
| User (Contact) | People1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Event | Task or Note1:many | Fully supported | |
| Activity | Task1:1 | Fully supported | |
| Custom Property | Custom Fieldlossy | Fully supported | |
| Tag | Topiclossy | Fully supported | |
| Segment | Not migrated (dynamic recreation required)1:1 | Fully supported | |
| Automations (Workflows) | Not migrated1:1 | Not supported | |
| Live Chat / Conversation | Task1: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.
User.com gotchas
Contact-based billing catches more records than expected
Automation workflows are not exportable
Bool and DateTime export format changes break naive imports
Email templates and campaign history are inaccessible
Database size shown in-app updates only every 24 hours
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 contact-count billing audit
We audit User.com across record types, custom properties, active automations, contact-count billing profile, and data quality. This includes extracting the full contact list via API with attribute profiles to identify which records carry chat visitor, push subscription, or FCM attributes that inflate the billable count. We also extract owner and deal owner lists for Twenty user reconciliation, and identify any web push subscription records that may not belong in the migrated People set. The discovery output is a written migration scope with record counts, a data quality assessment, and a list of User.com features (automations, email templates, segments) that will not carry over and require written inventory instead.
Twenty workspace preparation and schema design
We configure the Twenty workspace before any data import. This includes creating custom fields in Settings → Data Model to match every User.com custom property, setting field types (text, number, date, select, multiselect), and configuring required and unique constraints. We invite all team members and confirm every invitation is accepted before proceeding to record import, because Twenty resolves owner references only against accepted users. We create any custom objects required for the migration. The Twenty admin performs this step with our guidance, or we complete it with delegated admin credentials.
Export normalization and data cleaning
We export Users, Companies, Deals, Events, Activities, Custom Properties, Tags, and Chat Transcripts from User.com via CSV and API. During export we detect the format version and apply normalization transforms: Bool f/t values convert to boolean, Choice {} brackets convert to standard CSV delimiters, DateTime values standardize to ISO 8601, and JSON values flatten to text. We remove test records, duplicates, and contacts with no activity in 2+ years (the recommended cleanup threshold per Twenty's own migration documentation). We flag web push subscribers and chat visitors that should not become billable contacts in Twenty and present the cleaned dataset for customer sign-off before import begins.
Sandbox migration and reconciliation
We run a full migration into a Twenty workspace using a staging copy before production. The customer reconciles record counts (People in, Companies in, Opportunities in, Tasks in), spot-checks 25-50 random records against the User.com source, and validates that custom field values populated correctly. Owner assignments are verified by checking that the assigned Twenty user matches the original User.com owner by email. Any mapping corrections, missing fields, or data quality issues surface here. Production migration begins only after written sign-off from the customer's migration lead.
Production migration in dependency order
We run production migration in dependency order: invited workspace members first (manual, validated), Companies (no dependencies), People linked to Companies (CompanyId resolved), Opportunities referencing People, Companies, and Owners (PeopleId and CompanyId resolved), Tasks and Notes from Events and Activities (PeopleId or OpportunityId resolved), and Tags migrated as TopicAssignment records. Chat transcripts load as Tasks with taskType=chat last. Each phase emits a row-count reconciliation report before the next phase begins. We run a final delta migration for any records modified during the migration window before cutover.
Cutover, validation, and automation rebuild handoff
We freeze User.com writes during cutover, run a final delta migration, then designate Twenty as the system of record. We deliver the automation inventory document listing every active User.com workflow with its trigger, conditions, actions, and recommended Twenty equivalent. We deliver the email template inventory with screenshots for manual recreation reference. We deliver the segment membership CSV for manual recreation in Twenty's filter and view system. We support a one-week hypercare window for reconciliation issues raised by the customer's team. We do not rebuild automations, workflows, or email templates inside migration scope; those are separate engagements or internal admin tasks.
Platform deep dives
User.com
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 User.com 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
User.com: Not publicly documented.
Data volume sensitivity
User.com exposes a bulk API — large-volume migrations stream efficiently.
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 User.com to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your User.com 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 User.com
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.