CRM migration

Migrate from User.com to Twenty CRM

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 logo

User.com

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

70%

7 of 10

objects map 1:1 between User.com and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

User.com logo

User.com

What's pushing teams away

  • Mid-market teams (50–100+ users) report the platform does not scale to their needs, forcing expensive re-platforming after months of integration work.
  • The pricing model is opaque — the official pricing page returns a 404, and contact-based billing surprises teams who did not account for chat visitors and push subscribers counting toward their bill.
  • Analytics and reporting lag behind competitors, with multiple reviewers noting a need for enhanced insights and data visualization capabilities.
  • The platform's strongest market presence is European, which means US-centric teams may find support availability and integrations less robust than alternatives.
  • Custom field and object limitations frustrate teams with complex data models who find themselves working around platform constraints.

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 User.com objects map to Twenty CRM

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)

maps to

Twenty CRM

People

1:1
Fully supported

User.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

maps to

Twenty CRM

Company

1:1
Fully supported

User.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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

User.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

maps to

Twenty CRM

Task or Note

1:many
Fully supported

User.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

maps to

Twenty CRM

Task

1:1
Fully supported

User.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

maps to

Twenty CRM

Custom Field

lossy
Fully supported

User.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

maps to

Twenty CRM

Topic

lossy
Fully supported

User.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

maps to

Twenty CRM

Not migrated (dynamic recreation required)

1:1
Fully supported

User.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)

maps to

Twenty CRM

Not migrated

1:1
Not supported

User.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

maps to

Twenty CRM

Task

1:1
Fully supported

User.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.

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.

User.com logo

User.com gotchas

High

Contact-based billing catches more records than expected

High

Automation workflows are not exportable

Medium

Bool and DateTime export format changes break naive imports

Medium

Email templates and campaign history are inaccessible

Low

Database size shown in-app updates only every 24 hours

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

  • User.com contact-based billing captures more records than expected

    User.com bills on contacts defined as any record with an email, phone, user_id, last_heard (chat visitor), web push subscription, or FCM key. Chat visitors and push subscribers inflate the contact count 2-3x beyond what teams expect when they think of contacts as email-marketing recipients. The in-app contact counter (Settings > App Settings > Additional > Database size) updates every 24 hours, creating a discrepancy window during migration scoping. We scope the full attribute profile of each record before export, flag which records carry billing-triggering attributes, and use the API-sourced count rather than the in-app display count as the billing baseline. Teams should audit their User.com contact count before signing a Twenty contract to understand the true scale of data they are migrating.

  • User.com export format changes require normalization before import

    User.com modified its export format in late 2023: Bool fields changed from False/True string literals to f/t, DateTime switched from RFC 3339 to ISO 8601, Choice fields now use {} instead of [] brackets, and JSON values now use double quotes. Records imported into Twenty with naive parsers will fail silently or produce incorrect boolean and date values. We detect the export version during the initial data pull and apply normalization transforms before loading into Twenty. Teams running manual CSV imports after our initial migration should be aware of these format changes or they will encounter silent failures on boolean and date fields.

  • Twenty requires workspace members invited before owner lookups resolve

    Twenty's import system resolves owner and assignee references by matching to existing User records in the workspace. If a migrating record references a User who has not yet accepted their Twenty invitation, the owner field import fails or leaves the record unassigned. We extract every distinct User.com owner and deal owner referenced across contacts, companies, deals, and activities, provision the corresponding invitations in Twenty before any record import begins, and confirm all users appear in the Members list before proceeding. This sequencing is a hard dependency that adds 3-7 days to the migration timeline for teams with many owners.

  • Twenty CSV import creates records but not fields — schema must exist first

    Twenty's CSV import tool (Settings → Import) requires all target fields to exist in the data model before import runs. Importing into a non-existent field silently skips that column. We audit User.com's full custom property schema during discovery, create matching custom fields in Twenty Settings → Data Model before any CSV import begins, configure field types (text, number, date, select, multiselect), and set required or unique constraints. Fields must be created manually by the customer's Twenty admin or by us with delegated admin access. Skipping this step results in data loss on any custom property that does not have a matching Twenty field.

  • User.com automations, email templates, and campaign history do not migrate

    User.com's automation workflows, email templates, and campaign performance records are not accessible via documented export endpoints. We do not migrate these objects. Customers lose their template libraries and must manually recreate them in Twenty or export screenshots for reference. Campaign performance data (open rates, click rates, send history) is inaccessible and should be exported to a BI tool before migration if historical reporting is required. We deliver a written inventory of all active automations for the customer's admin to rebuild in Twenty's workflow system.

Migration approach

Six steps for a successful User.com to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

User.com logo

User.com

Source

Strengths

  • Unified CRM, marketing automation, live chat, and push notifications in a single interconnected platform.
  • GDPR and CCPA compliance with SSL encryption and regular pen testing — specifically designed for European data requirements.
  • Contact-based pricing model means unlimited internal users regardless of plan tier.
  • Drag-and-drop automation builder accessible to non-technical marketing teams.
  • Integrates with hundreds of third-party tools and offers native support for gaming, SaaS, and B2B analytics data.

Weaknesses

  • Official pricing page is inaccessible (returns 404), making procurement and renewal planning difficult.
  • Analytics and reporting are consistently cited as under-developed compared to HubSpot, ActiveCampaign, and EngageBay.
  • Contact-based billing counts chat visitors, push subscribers, and mobile app users — easily doubling or tripling the perceived contact count.
  • Platform has limited enterprise-grade features; scalability for teams above 50–100 users is a documented pain point.
  • US-based support coverage is weaker than European support, leaving international teams with slower response times.
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. 2 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 User.com and Twenty CRM.

  • Object compatibility

    B

    2 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

    User.com: Not publicly documented.

  • Data volume sensitivity

    A

    User.com exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your User.com 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 User.com to Twenty CRM data migrations

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

Can't find your answer?

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 consultation

Most migrations land between three and five weeks for accounts under 15,000 contacts, 3,000 companies, and 2,000 deals with no complex custom property sets. Migrations with large activity histories (over 200,000 events), multiple custom property sets, web push subscription records requiring contact-count auditing, or many distinct deal owners (requiring extended user invitation and acceptance) move to eight to fourteen weeks because of format normalization, parent-record resolution sequencing, and the requirement to confirm all Twenty user invitations before owner lookups resolve.

Adjacent paths

Related migrations to explore

Ready when you are

Move from User.com.
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