CRM migration

Migrate from Onsite CRM to Twenty CRM

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 logo

Onsite CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

70%

7 of 10

objects map 1:1 between Onsite CRM and Twenty CRM.

Complexity

CModerate

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Onsite CRM logo

Onsite CRM

What's pushing teams away

  • Extremely limited market presence with minimal third-party reviews and community discussion, making it difficult to assess long-term viability.
  • No publicly documented API, SDK, or webhook infrastructure limits integration options and blocks automated data extraction.
  • Appears to have weaker reporting and analytics depth compared to established CRM competitors like HubSpot or Pipedrive.
  • Very small user base on review platforms like G2 and Capterra suggests limited adoption and support ecosystem.
  • Lacks enterprise-grade features needed as teams scale, driving migration to platforms with better customization and API access.

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 Onsite CRM objects map to Twenty CRM

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

maps to

Twenty CRM

People

1:1
Fully supported

Onsite 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

maps to

Twenty CRM

Company

1:1
Fully supported

Onsite 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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Onsite 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

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Onsite 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

maps to

Twenty CRM

Task or Note

1:1
Fully supported

Onsite 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

maps to

Twenty CRM

Task

1:1
Fully supported

Onsite 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

maps to

Twenty CRM

Custom Field

lossy
Fully supported

Custom 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

maps to

Twenty CRM

Topics or Custom Field

lossy
Fully supported

Tags 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

maps to

Twenty CRM

Member

1:1
Fully supported

Onsite 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

maps to

Twenty CRM

Not migrated

1:1
Fully supported

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

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.

Onsite CRM logo

Onsite CRM gotchas

High

No public API documentation found

Medium

Weebly-hosted infrastructure limits data access

Medium

Limited historical activity export

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

  • No public API forces manual CSV-only extraction

    Onsite CRM has no documented REST API, SDK, or webhook infrastructure according to apitracker.io, eliminating automated data extraction entirely. We must extract via in-app CSV exports from the Onsite UI, with export size and format constrained by what the Weebly-hosted interface exposes. If the customer has more than 10,000 records or complex custom field configurations, export size limits in the UI become a bottleneck we flag during scoping. The customer must be prepared to run multiple batched exports and provide screenshots confirming the export structure before we design the import sequence.

  • Activity history export completeness must be confirmed upfront

    CRM migration reviews consistently surface that teams want five years of call notes, email logs, and activity history. Onsite CRM's in-app export options may not include rich activity history in a single downloadable file, and the completeness of activity records in CSV export depends on what the UI exposes. We advise customers to request a pre-migration export of activity records separately and review the file before committing to an activity migration scope. If the export is incomplete, we migrate what is available and flag the gap in the migration summary.

  • Twenty custom fields must exist before import

    Twenty CRM requires custom fields to be created in Settings → Data Model before CSV import; the import process creates records, not fields. Onsite CRM customers with multiple custom fields need those fields pre-created in Twenty by the customer's admin or by our team during the migration preparation phase. We include a custom field creation checklist in the migration schema document, but field creation itself must be completed before the production import begins.

  • Workflows and automations have no Twenty equivalent to migrate

    Twenty CRM does not yet have a native workflow builder or automation engine. Any automations, sequences, or workflow rules in Onsite CRM cannot migrate as code. We deliver a written inventory of Onsite CRM automations with descriptions of what each automation does, the trigger conditions, and the affected records. The customer rebuilds critical automations manually in Twenty's interface or via a third-party workflow tool such as Zapier, Make, or a custom API integration. This is a separate rebuild scope outside standard migration.

Migration approach

Six steps for a successful Onsite CRM to Twenty CRM data migration

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

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

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

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

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

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

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

Context on both ends of the pair

Onsite CRM logo

Onsite CRM

Source

Strengths

  • Combines CRM, calling, SMS, and email marketing in a single subscription for small teams.
  • Weebly-hosted platform offers straightforward initial setup for businesses already using Weebly.
  • Provides basic pipeline visualization and deal tracking for straightforward sales processes.
  • Lead conversion tools and real-time outreach automation for teams prioritizing outbound activity.
  • Established in 2010, indicating over a decade of operational history.

Weaknesses

  • No publicly documented REST API, SDK, or webhook system according to apitracker.io, severely limiting programmatic integrations and data extraction options.
  • Extremely limited market visibility with minimal reviews, community discussion, or third-party integrations.
  • Appears to lack enterprise-grade features like advanced reporting, custom objects, or sophisticated workflow automation.
  • Data export is limited to in-app CSV/PDF options with no bulk API access, complicating large-scale migrations.
  • Small user base and limited review presence make it difficult to assess platform reliability and long-term vendor viability.
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?

Moderate CRM migration. 4 of 8 objects need a mapping; the rest are 1:1.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Onsite CRM and Twenty CRM.

  • Object compatibility

    C

    4 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

    Onsite CRM: Not publicly documented.

  • Data volume sensitivity

    B

    Onsite CRM doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Onsite CRM 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 Onsite CRM to Twenty CRM data migrations

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

Can't find your answer?

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 consultation

Most Onsite CRM to Twenty CRM migrations complete in two to three weeks for straightforward scopes covering active Contacts, Companies, and Deals without extensive activity history. Migrations with custom fields, multi-batch exports due to UI limits, or deal and activity history extend to three to four weeks. The bulk of the timeline is discovery, scoping, and Twenty workspace preparation; the actual data export and import typically runs within a few days.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Onsite CRM.
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