CRM migration

Migrate from Rubi CRM to Twenty CRM

Field-level mapping, validation, and rollback between Rubi CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

Rubi CRM logo

Rubi CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

60%

6 of 10

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

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Rubi CRM to Twenty CRM is a structural migration that moves membership-vertical data into an open-source, self-hosted CRM with a modern TypeScript stack and a REST and GraphQL API at $9 per user per month. Rubi CRM's distinct Member and Membership record types, its Event and Training booking module, and its Kanban sales pipeline require explicit mapping to Twenty's standard Company, People, Opportunity, and custom object model. The primary constraint is Rubi CRM's gated API documentation and the absence of a public export endpoint — migrations depend on the customer providing usable CSV exports from Rubi CRM's reporting module, which produces flat snapshots rather than relational data. We map membership status and tier to Twenty custom fields, link Events and Training bookings to the originating Contact, and deliver a written pipeline and automation inventory for re-creation in Twenty's workflow builder. Views, permissions, and automations do not migrate as code.

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

Rubi CRM logo

Rubi CRM

What's pushing teams away

  • Concentrated UK membership/training focus limits fit for non-UK organizations or businesses outside membership/event verticals.
  • Public technical/API documentation is limited — the Developer Hub is gated and endpoint references are not indexed publicly, complicating custom integrations.
  • Reports module exports flat snapshots rather than relational data, making it less useful as a long-term BI source or migration extract.
  • Outlook plugin handles inbound email logging only — outbound automation, sequencing, and marketing workflows are not bundled and require separate tools.
  • Smaller global community and review footprint compared to HubSpot, Salesforce, or membership-specific competitors like Wild Apricot or MemberClicks.

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

Each row shows how a Rubi 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.

Rubi CRM

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Rubi CRM Contacts map directly to Twenty People. Standard fields (name, email, phone, address) migrate 1:1. We preserve any Rubi CRM custom contact properties as custom fields in Twenty's Data Model (Settings → Data Model). The People record is created before any related Membership or Event booking import so that lookup relationships resolve at the moment of insert.

Rubi CRM

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Rubi CRM Company records map directly to Twenty Company. The Company-Contact relationship migrates as a name-matched lookup: we use Rubi CRM's company name as the dedupe key during Twenty Company import and link it to the related People record by email domain match where no explicit foreign key exists in the export.

Rubi CRM

Member

maps to

Twenty CRM

Member (custom object)

lossy
Fully supported

Rubi CRM's Member record type has no direct Twenty equivalent — it is a distinct entity tied to the membership module. We create a custom object named Member in Twenty (API name Member__c) with custom fields for member_id (text), membership_status (select), membership_tier (select), and renewal_date (date). The custom object must be created in Settings → Data Model before the CSV import runs, per Twenty's import requirement.

Rubi CRM

Membership

maps to

Twenty CRM

Member Subscription (custom object)

1:1
Fully supported

Rubi CRM Membership records track individual subscriptions against Member profiles. We map start_date, end_date, and tier_name to custom fields on a Member_Subscription__c custom object in Twenty with a lookup to Member__c. Rubi CRM does not export full subscription history in a single pass — we request separate export runs from the Membership module for each renewal period and combine them during the transform phase.

Rubi CRM

Events and Training

maps to

Twenty CRM

Event (custom object)

1:many
Mapping required

Rubi CRM Events and Training bookings are objects with seat-level attendance data. We create an Event__c custom object in Twenty with fields for event_name, event_date, booking_status, and a lookup to the originating Rubi CRM Contact or Member. Rubi CRM requires a separate export run from the Events module for seat-level attendance data — we request this explicitly during scoping. Events are imported after People so that the Contact lookup resolves correctly.

Rubi CRM

Sales Pipeline (Kanban stages)

maps to

Twenty CRM

Opportunity + custom stage field

lossy
Fully supported

Rubi CRM uses a Kanban-style pipeline view with user-defined stage names stored as custom fields against deal records, not as a native pipeline object. We extract the distinct stage values from Rubi CRM during the scoping call, create a custom Opportunity stage field in Twenty (e.g., opportunity_stage__c as a select), and populate it from the Rubi CRM deal export. The pipeline Kanban view itself must be re-created manually in Twenty's view builder post-migration.

Rubi CRM

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Rubi CRM deal records (the underlying records under the Kanban view) map to Twenty Opportunity. Deal name, amount, expected close date, and owner migrate 1:1. The stage value migrates to the custom opportunity_stage__c field described above. Owner resolution is by email match against Twenty Members.

Rubi CRM

Activities (email interactions)

maps to

Twenty CRM

Task

1:1
Fully supported

Email interactions logged via the Rubi CRM Outlook plugin are stored as Activities linked to Contacts. We export activity timestamps, subject, and body text as a flat export. These map to Twenty Task records linked to the related People record. Thread-level email threading from the original message is not preserved in the flat export. We flag this limitation in the migration report.

Rubi CRM

Tasks

maps to

Twenty CRM

Task

1:1
Fully supported

Rubi CRM Tasks (owner, due date, status) migrate directly to Twenty Task. Owner assignment migrates by resolving Rubi CRM username to Twenty Member by email match. Completed status maps directly; open tasks retain their original due date and priority.

Rubi CRM

Custom Fields

maps to

Twenty CRM

Custom Fields

lossy
Mapping required

Rubi CRM allows custom fields per record type but does not expose a schema endpoint. We discover custom field names during the export scoping phase by requesting the full field list from the Rubi CRM export interface. We then pre-create matching custom fields in Twenty's Data Model (Settings → Data Model) before any CSV import begins. Type mapping is done by inspecting the Rubi CRM export data: date fields become date fields, select options become select fields, and text fields become text fields.

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.

Rubi CRM logo

Rubi CRM gotchas

Medium

Pipeline stages are stored as user-defined custom field values, not a native pipeline object

Medium

Outlook plugin does not preserve email thread continuity

Medium

Memberships and Events require separate export passes

Low

Acquisition by Sapling Multi Ventures introduces roadmap uncertainty

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

  • Rubi CRM API documentation is behind a Developer Hub gate

    Rubi CRM does not publish API documentation publicly — the Developer Hub requires an account request. This means we cannot audit the endpoint surface, field types, rate limits, or export capabilities programmatically before migration scoping. We rely on customer-provided CSV exports from Rubi CRM's reporting module. Any API-based migration approach requires the customer to request Developer Hub access and share endpoint documentation under NDA. This constraint extends the discovery phase compared to migrations from platforms with open APIs.

  • Rubi CRM Reports module exports flat snapshots only

    Rubi CRM's Report Builder exports point-in-time data snapshots rather than relational exports. Membership history, event attendance, and multi-object relationships may not export in a single pass. We request separate export runs from the Events module, Membership module, and Activities module for each object type. Audit and engagement data cannot be reconstructed from report snapshots. We flag any data that cannot be produced in relational form during the scoping phase and exclude it from the migration scope with an explicit data-loss disclosure.

  • Twenty requires custom fields pre-created before CSV import

    Twenty's CSV import creates records, not fields. All custom fields — including the membership_status__c, membership_tier__c, and opportunity_stage__c fields required for this migration — must exist in Settings → Data Model before any CSV import runs. If fields are missing, the import silently fails or drops values. We create the full custom field schema in Twenty before beginning the record import, but this requires a workspace-admin session and must complete before the migration run begins.

  • Membership tier names require manual mapping against Twenty select options

    Rubi CRM membership tiers are user-defined string values stored against Member records. These are not a standardized picklist in Rubi CRM — any tier name the admin created appears in the export. Twenty custom select fields require a whitelist of options. We extract all distinct tier values from the Rubi CRM export during scoping, present them to the customer for review, and create matching Twenty select options before the import runs. Any tier names with special characters or spaces require normalization to Twenty's API-safe format.

  • Kanban pipeline view and Workflow automations do not export and must be rebuilt

    Rubi CRM's Kanban board is a view configuration, not a data object — the pipeline stage names are stored as custom field values against deal records, not as a structured pipeline object. We extract the stage values for mapping, but the Kanban column layout, card ordering, and any filtering rules must be re-created in Twenty's view builder manually. Rubi CRM automations and workflow rules similarly do not export and have no direct Twenty equivalent. We deliver a written inventory of active automations for the customer to rebuild in Twenty's workflow builder.

Migration approach

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

  1. Discovery and export scoping

    We audit the customer's Rubi CRM instance across record types in scope: Contacts, Companies, Members, Memberships, Events/Training, Deals, Activities, and Tasks. We identify the export mechanisms available for each module and request the full field list from Rubi CRM's export interface. For the Kanban pipeline, we ask the customer to document their stage names and deal record fields during the scoping call. We extract distinct membership tier values from any available export for review against Twenty's select field options. The discovery output is a written migration scope, an export requirements checklist for the customer to fulfil, and a Twenty workspace preparation plan.

  2. Twenty workspace preparation

    Before any CSV import, we create the custom objects (Member__c, Member_Subscription__c, Event__c) and all required custom fields in the customer's Twenty workspace via Settings → Data Model. This includes membership_status__c, membership_tier__c, opportunity_stage__c, and any fields discovered during the Rubi CRM export scoping. We also invite all team members who will be referenced as record owners, per Twenty's requirement that users must exist before owner lookups can resolve. The workspace is prepared in the customer's production Twenty org or a designated sandbox environment.

  3. Data export and cleaning

    The customer exports data from Rubi CRM across all in-scope modules. We clean the export: removing duplicate records, standardizing date formats, normalizing phone numbers (watching for leading-zero stripping in spreadsheet exports), resolving Company name inconsistencies, and mapping membership tier strings to the agreed select options. We run a test import of a 10% sample into Twenty to validate field mapping before the full migration run.

  4. Record import in dependency order

    We import records into Twenty in dependency order: People first (standalone), then Companies (with name-based deduplication), then Members and Memberships (with Member__c lookups resolved), then Deals (mapped to Opportunity with custom stage field), then Events (linked to People), then Activities and Tasks (linked to People by email). Each phase emits a row-count reconciliation report. Owner resolution runs throughout: Hubspot Owner email matches against Twenty Member email to set the record owner. Any owner without a matching Twenty Member goes to a reconciliation queue for the customer to provision.

  5. Cutover and automation inventory delivery

    We freeze writes in Rubi CRM, run a final delta import for any records modified during the migration window, then mark Twenty as the system of record. We deliver a written automation and pipeline inventory: every Kanban stage, filter, and view configuration observed in Rubi CRM, documented for manual re-creation in Twenty's view builder; every automation or workflow rule observed, documented with its trigger, conditions, and actions for the customer's admin to rebuild in Twenty's workflow builder. We support a one-week hypercare window for reconciliation issues raised by the customer's team.

Platform deep dives

Context on both ends of the pair

Rubi CRM logo

Rubi CRM

Source

Strengths

  • Specialises in membership, training, event, and recurring-booking workflows that general-purpose CRMs handle poorly
  • Native bolt-on integrations with Sage, QuickBooks, and Xero for UK-accountancy parity
  • Microsoft Outlook plugin logs email interactions directly against CRM records without leaving the inbox
  • UK-based Leeds team since 2010 with direct support access
  • Small-team focused pricing and onboarding for organisations under 50 users

Weaknesses

  • Platform acquired by Sapling Multi Ventures — product roadmap and support continuity are uncertain
  • No public pricing page found in research — tier structure and per-user costs require direct inquiry
  • API documentation is behind a Developer Hub gate; public rate-limit and endpoint documentation not indexed
  • Reports module exports flat snapshots rather than relational data — not suitable as a migration source
  • Microsoft Outlook plugin only works for inbound email logging; outbound sequences and automation are not supported
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. 3 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 Rubi CRM and Twenty CRM.

  • Object compatibility

    B

    3 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

    Rubi CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Rubi CRM 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 four and six weeks for accounts under 10,000 Contacts, 2,000 Members, and a moderate Events history with no complex custom field structures. Migrations with active Events and Training booking histories (multiple events with seat-level attendance), complex multi-tier membership structures, or large deal pipelines with many Kanban stages move to eight to twelve weeks because of export scoping from Rubi CRM's flat-reporting modules, membership status mapping, and custom object schema work.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Rubi 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