CRM migration
Field-level mapping, validation, and rollback between Onsite CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Onsite CRM
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between Onsite CRM and Twenty CRM.
Complexity
CModerate
Timeline
2-3 weeks
Overview
Migrating from Onsite CRM to Twenty CRM is a CSV-based extraction exercise rather than an API migration. Onsite CRM has no publicly documented REST API, SDK, or webhook infrastructure according to apitracker.io, which means we extract via in-app CSV exports and request customer-supplied screenshots of the data structure to confirm what objects and fields the UI exposes before designing the import sequence. We map People from Onsite Contacts, Companies from Onsite Company records, Opportunities from Deals, and Tasks from Activity records, with custom fields pre-created in Twenty's Settings before import. Twenty CRM is an open-source, GPL-licensed CRM (github.com/twentyhq/twenty) with self-hosted and cloud deployment options, REST and GraphQL API access, and a custom objects model built on metadata tables. We do not migrate automations, sequences, or forms. We deliver a written inventory of any automations requiring rebuild in a third-party workflow tool or directly in Twenty's interface.
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 Onsite 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.
Onsite CRM
Contact
Twenty CRM
People
1:1Onsite Contact records (name, email, phone, company association) map to Twenty People records. The Onsite contact-company relationship preserves as a People-Company link in Twenty. We deduplicate on email address during import. Phone number format normalization (stripping non-numeric characters) is applied before insert. Owner assignment is resolved by email lookup against Twenty Members provisioned before migration.
Onsite CRM
Company
Twenty CRM
Company
1:1Onsite Company records map directly to Twenty Company records. The company name becomes displayName, and the company domain becomes the website field. We use name plus domain as the dedupe key. Company records are imported first to satisfy the Company-People lookup relationship at the moment of People insert.
Onsite CRM
Deal
Twenty CRM
Opportunity
1:1Onsite Deal records map to Twenty Opportunity records. Deal name becomes opportunityTitle, deal value maps to amount, and the close date maps to closeDate. Pipeline stage names from Onsite map to Twenty Opportunity stage values that we configure in Settings before migration. We extract stage probabilities from Onsite if they are exposed in the export and apply them to Twenty stage configuration.
Onsite CRM
Pipeline Stage
Twenty CRM
Opportunity Stage
lossyOnsite custom pipeline stages (varying by customer configuration) map to Twenty Opportunity stage values that the customer's admin configures in Settings → Data Model before import. We extract the customer's pipeline stage definitions from the Onsite UI during scoping and include them in the migration schema document. Stage order and probability percentages transfer as configuration notes for the admin to apply.
Onsite CRM
Activity
Twenty CRM
Task or Note
1:1Onsite CRM call logs, SMS threads, and email records mapped as Activities migrate to Twenty Task or Note records depending on content type. Call records with disposition and duration migrate as Task records with the activity date and body preserved. Notes and meeting records migrate as Note records. Activity ordering is preserved by setting the activity timestamp. We flag any activity records that cannot be fully represented in the export as a post-migration reconciliation item.
Onsite CRM
Task
Twenty CRM
Task
1:1Onsite Task records (follow-ups and reminders) migrate to Twenty Task records with Status, Priority, due date, and assignee preserved. Task assignment is resolved via email lookup against Twenty Members. Tasks with an Onsite owner who does not have a corresponding Twenty Member are placed in a reconciliation queue for the customer to resolve before final import.
Onsite CRM
Custom Field
Twenty CRM
Custom Field
lossyCustom fields on any Onsite CRM object require pre-creation in Twenty before import. Customers typically have 3-15 custom fields covering business-specific attributes on Contact, Company, or Deal records. We document each Onsite custom field with its type, options, and object association, then create the corresponding Twenty custom field in Settings → Data Model before migration. Any Onsite fields with no direct Twenty equivalent are flagged for the customer's admin to either create the field or accept data loss.
Onsite CRM
Tag
Twenty CRM
Topics or Custom Field
lossyTags applied to Onsite Contacts or Deals migrate as Topics in Twenty (with TopicAssignment records linked to the parent People or Company) or as a multi-select custom field, depending on the customer's tagging taxonomy and usage. The customer chooses the strategy during scoping. We include tag normalization (removing duplicates and standardizing casing) in the import transform.
Onsite CRM
User
Twenty CRM
Member
1:1Onsite User records map to Twenty Member records referenced as owners on People, Company, and Opportunity objects. Users must be provisioned in Twenty Settings → Members before data import begins, as Twenty resolves owner references at the moment of record insert. We request customer-supplied screenshots of Onsite user list during scoping and match by email to the provisioned Twenty Members.
Onsite CRM
Attachments
Twenty CRM
Not migrated
1:1Onsite CRM does not appear to expose a structured file attachment or document management object in its UI-exported data. File attachments referenced in activity records may not appear in CSV exports. We flag this during scoping and recommend that the customer extracts files separately via the Onsite UI before cutover. No automated attachment migration is included in standard scope.
| Onsite CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Activity | Task or Note1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Tag | Topics or Custom Fieldlossy | Fully supported | |
| User | Member1:1 | Fully supported | |
| Attachments | 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.
Onsite CRM gotchas
No public API documentation found
Weebly-hosted infrastructure limits data access
Limited historical activity export
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 capability review
We audit the Onsite CRM data structure by reviewing customer-supplied screenshots and requesting sample exports of each object (Contacts, Companies, Deals, Activities, Tasks, Custom Fields). We assess the total record volume per object, confirm which fields appear in exports versus only in the UI, and identify any export size constraints imposed by the Weebly-hosted UI. The discovery output is a scoping document that lists the objects and fields confirmed available for export, the objects that will require manual extraction or are not exportable, and a recommended migration scope.
Schema design and mapping document
We create a migration schema document that maps every Onsite CRM object and field to its Twenty CRM equivalent. Core mappings include Contact to People, Company to Company, Deal to Opportunity, Activity to Task or Note, and Pipeline Stage to Opportunity Stage. Custom fields are listed individually with the Twenty field name, type, and object to create. The mapping document is a spreadsheet the customer reviews and approves before any data moves.
Twenty workspace preparation
Before any import, we create or guide the customer through creating custom fields in Twenty Settings → Data Model for every Onsite custom field that lacks a direct standard equivalent. We also confirm that pipeline stages are configured in Twenty's Opportunity stages section, that team Members are invited and active, and that the workspace is ready to receive data. Fields that do not yet exist in Twenty will cause import failures, so this step must be completed and validated before production import.
Test export and data quality assessment
The customer runs exports from the Onsite CRM UI for each object: Contacts, Companies, Deals, and Activity records. We review the exported files for field headers, data completeness, row counts, and any encoding or formatting issues. We identify duplicate records, stale contacts with no activity in two or more years that should be archived rather than migrated, and any records missing required fields. A data cleansing recommendation is delivered to the customer before the production export.
Test import into Twenty
We run a test import of the exported data into the customer's Twenty workspace using a subset of records (typically 50-200 per object). We validate field mappings against the schema document, confirm that custom field creation was completed correctly, verify that deduplication is working on email and company name, and confirm that People-Company and Opportunity-Account relationships resolve. The customer reviews a sample of imported records and approves before we proceed to the full production import.
Production import and reconciliation
We run the final CSV exports from Onsite CRM immediately before cutover to capture any records modified during the migration window. The customer freezes new data entry in Onsite CRM during the import. We import records into Twenty in dependency order: Companies first, then People with Company links resolved, then Opportunities with stage and owner resolved, then Tasks and Notes. We reconcile imported row counts against exported row counts and deliver a migration summary showing record counts, any unmapped fields, and any records that could not be imported with reason codes.
Cutover and automation handoff
We disable further data entry in Onsite CRM during cutover and run a final delta import for any records modified during the migration window. We deliver the automation inventory document listing every Onsite CRM workflow and automation with trigger, conditions, actions, and recommended rebuild approach. We do not rebuild automations as code inside migration scope. We provide a one-week post-migration check-in window to resolve any immediate data quality issues raised by the customer's team.
Platform deep dives
Onsite CRM
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 Onsite CRM 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
Onsite CRM: Not publicly documented.
Data volume sensitivity
Onsite 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 Onsite CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Onsite 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 Onsite 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.