CRM migration
Field-level mapping, validation, and rollback between Unim and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Unim
Source
Twenty CRM
Destination
Compatibility
8 of 10
objects map 1:1 between Unim and Twenty CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Migrating from Unim to Twenty CRM requires treating schema discovery as the first migration step, not a pre-migration checkbox. Because Unim builds every deployment to order, no two tenants share the same set of custom fields, datatypes, or entity relationships. We introspect the live Unim API to enumerate every active custom field, resolve DataType IDs and ModelID references, and map them to Twenty's People, Company, and Opportunity objects plus any custom objects the destination workspace requires. Owner IDs are instance-scoped in Unim and must be resolved via email match to Twenty workspace members before record import. Activities (calls, emails, notes, meetings) migrate as Tasks or Notes attached to the parent People record. Workflows, automations, and bespoke business logic built within Unim's application builder do not translate across to Twenty's workflow system; we deliver a written inventory of every active automation for the customer's admin to rebuild in Twenty's settings. File attachments migrate from Unim's Files dimension with binary extraction and re-association to the target People or Company record 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 Unim 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.
Unim
Contact
Twenty CRM
People
1:1Unim Contact records map to Twenty People. The Unim Contact model carries standard fields (name, email, phone, address) plus a variable set of custom fields discovered at schema-introspection time. We inspect the Contact ModelID and enumerate every active custom field before defining the import map. Email is used as the dedupe key. Standard Unim Contact fields map directly to their Twenty People equivalents; custom fields are created in Twenty Settings → Data Model before import begins.
Unim
Company
Twenty CRM
Company
1:1Unim Company records map to Twenty Company. The same schema-discovery pattern applies: we enumerate the Company model's ModelID, active custom fields, and datatypes before writing migration code. Domain-based dedupe is applied. Company is loaded before People so that the Twenty People record can reference the parent Company via the workspaceId or linked Company record at import time.
Unim
Activity
Twenty CRM
Task or Note
1:1Unim Activity records—calls, emails, meetings, notes—carry timestamps, owner references, and optionally linked custom fields. We map call activities to Twenty Task with a task-type annotation, meeting activities to Task with date/time and location preserved, and note activities to Note records linked to the parent People or Company. Activity-to-contact linkage is preserved by setting the target People ID at migration time. Owner references require email-based resolution against the Twenty workspace members.
Unim
Custom Field
Twenty CRM
Custom Field (on People, Company, Opportunity)
lossyUnim custom fields have a Name, ModelID, DataType, and Nullable flag. DataTypes are resolved via the valuelists endpoint. We query this endpoint to enumerate every active custom field on each entity, map the datatype to the closest Twenty field type (text, number, date, select, multi-select, checkbox, URL, currency), and pre-create the field in Twenty Settings → Data Model before any records are imported. This is the highest-risk step for data loss if skipped.
Unim
Custom Object
Twenty CRM
Custom Object
1:1Bespoke entity types beyond the standard Contacts/Companies/Activities triad are defined at the Unim application level. We discover these via schema introspection, enumerate their field sets and datatypes, and create equivalent custom objects in Twenty's workspace. Custom object-to-standard object lookup relationships (e.g., a bespoke Project entity linked to People) are resolved at migration time using the parent-record ID pattern. Each custom object migration runs after its parent standard object has been imported.
Unim
User / Owner
Twenty CRM
Workspace Member
1:1Unim Owner IDs assigned on records are scoped to that specific deployment and cannot be used as-is in Twenty. We map source owner IDs to Twenty workspace members using email as the join key. Twenty requires that all referenced members exist in the workspace before import; we validate member presence and flag any owner without a matching workspace member for the customer's admin to provision before record import resumes.
Unim
Files / Attachments
Twenty CRM
Attachments (on People or Company)
1:1Attachments in Unim are served via the Files dimension, not inline with the record. Each attachment requires a separate API call to fetch the binary blob. For large migrations, we paginate file extraction and apply retry logic on 429 responses. Files are re-associated with the target People or Company record in Twenty using Twenty's file attachment API, with original filenames and MIME types preserved.
Unim
Tag / Label
Twenty CRM
Custom Field (multi-select) or Note
lossyTag associations in Unim are stored as separate linked records or as array fields depending on the specific deployment. We preserve tag-to-record linkages as a join table and either map to a Twenty multi-select custom field or attach as a Note on the target record, depending on tag cardinality. The customer chooses the strategy during scoping.
Unim
Workflow / Automation
Twenty CRM
Not migrated
1:1Business-logic workflows built within Unim's application builder are tightly coupled to that specific application's custom object model and cannot be meaningfully exported or re-imported into Twenty. We export a written inventory of every active Unim workflow with its trigger, conditions, actions, and a recommended Twenty workflow equivalent, so the customer's admin can rebuild them post-migration.
Unim
Webhook
Twenty CRM
Not migrated
1:1Webhook configurations are environment-level settings tied to Unim's internal routing and event model. They do not translate across to Twenty's webhook or integration system. We document active webhooks for the customer's awareness and recommend rebuilding them using Twenty's API or a middleware platform (n8n, Zapier) post-migration.
| Unim | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Activity | Task or Note1:1 | Fully supported | |
| Custom Field | Custom Field (on People, Company, Opportunity)lossy | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| User / Owner | Workspace Member1:1 | Fully supported | |
| Files / Attachments | Attachments (on People or Company)1:1 | Fully supported | |
| Tag / Label | Custom Field (multi-select) or Notelossy | Fully supported | |
| Workflow / Automation | Not migrated1:1 | Fully supported | |
| Webhook | Not migrated1: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.
Unim gotchas
Every Unim instance has a unique custom field schema
Custom field datatypes require a separate lookup call
No public API documentation for the core business objects
File attachment extraction requires a separate Files API call
Owner/user IDs are instance-scoped and not portable
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
Schema discovery and custom field enumeration
We introspect the live Unim API against the customer's specific deployment. This includes querying the custom-fields endpoint for Contact, Company, and Activity models, resolving DataType IDs via the valuelists endpoint, enumerating any bespoke object types defined at the application level, and cataloguing file attachment counts per entity. The discovery output is a written schema map: every source field, its Unim datatype, and the recommended Twenty field type. This phase runs against the production Unim instance with read-only API access and typically completes within two to three days.
Twenty workspace provisioning and custom field creation
Using the schema map from discovery, we provision the Twenty workspace: creating custom objects, adding custom fields to standard objects (People, Company, Opportunity) via Settings → Data Model, and configuring field settings (required, unique, select options). We configure workspace members and invite all team members who will be referenced as record owners. The workspace is provisioned in a staging context first for validation before production migration begins.
Owner and user reconciliation
We extract every distinct Unim Owner referenced across Contact, Company, Activity, and custom object records. Each owner ID is resolved by email match against the Twenty workspace member list. Owners without a matching Twenty user go to a reconciliation queue for the customer's admin to provision before record import resumes. We also audit the Unim user list for any deactivated accounts that should be mapped to inactive Twenty users to preserve historical assignment data.
Staging migration and record reconciliation
We run a full migration into a staging or shadow Twenty workspace using production-equivalent data volume. The customer's operations lead reconciles record counts (People in, Companies in, Activities in), spot-checks 25-50 random records against the Unim source, and validates that custom field values populated correctly. Any mapping corrections, datatype mismatches, or field creation gaps are resolved here before the production migration begins. This step typically runs over a weekend.
Production migration in dependency order
We run production migration in record-dependency order: workspace members validated, Companies (from Unim Companies), People (with CompanyId resolved), Opportunities (if present in Unim), Activity history (Tasks and Notes via CSV or API, with PeopleId resolved), custom objects (with parent-record lookups resolved), and file attachments (extracted via Unim Files API and re-associated in Twenty). Each phase emits a row-count reconciliation report before the next phase begins. We apply retry logic and exponential backoff on Unim API 429 responses during file extraction.
Cutover, validation, and automation inventory handoff
We freeze Unim writes during the cutover window, run a final delta migration of any records modified during the migration phase, then enable Twenty as the system of record. We deliver the workflow and automation inventory document to the customer's admin team, listing every active Unim workflow with its trigger, conditions, and recommended Twenty equivalent. We support a five-day hypercare window where we resolve any record-level reconciliation issues. We do not rebuild Unim workflows inside the migration scope; that is a separate engagement.
Platform deep dives
Unim
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 Unim 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
Unim: Not publicly documented — confirmed during integration scoping..
Data volume sensitivity
Unim 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 Unim to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Unim 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 Unim
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.