CRM migration

Migrate from Kylas Sales CRM to Twenty CRM

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

Kylas Sales CRM logo

Kylas Sales CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between Kylas Sales CRM and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Kylas Sales CRM to Twenty CRM is a structural migration from a commercial Indian-origin SaaS platform to an open-source, self-hostable CRM with a documented GraphQL API. Kylas uses a distinct Lead pre-conversion object alongside Contacts and Companies; Twenty consolidates these into Person (for individuals) and Company (for organizations) as its two core standard objects, with no built-in Lead-to-Contact conversion workflow. We map Kylas Leads with a lead_score or unconverted status to a Twenty Person record with a custom lead_source property, preserving the original Kylas lifecycle stage in a custom field for audit and reporting. Kylas Deals map to Twenty Opportunities with pipeline stage names remapped to Twenty stage values. Kylas workflow automations, Smart Lists, and custom integrations do not migrate; we deliver a written inventory of every active automation and Smart List filter so the customer's team can rebuild them in Twenty or document them for an automation partner. The self-hosted deployment model of Twenty introduces infrastructure decisions that Kylas customers on a flat-rate SaaS plan do not face; we address storage, hosting, and API rate-limit considerations in the scoping phase.

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

Kylas Sales CRM logo

Kylas Sales CRM

What's pushing teams away

  • Record storage caps on the free tier (1,000 records) force an early upgrade, and some reviewers on Capterra and Reddit report the $200/month flat rate feels expensive relative to bare-bones alternatives priced at $15/user.
  • The native integration marketplace covers 80+ apps but some advanced ERP and accounting connectors require third-party middleware, leading teams on complex tech stacks to feel limited.
  • Custom workflow automations built inside Kylas do not export as reusable templates, meaning teams migrating away must manually rebuild every automation from scratch—a cost that catches some churners off guard.
  • Exporting Smart Lists and filtered views requires navigating the Data Management section in the UI; there is no single bulk-API call to dump all filtered record sets, making programmatic large-scale exports more involved than expected.

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

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

Kylas Sales CRM

Lead

maps to

Twenty CRM

Person (custom field)

1:1
Fully supported

Kylas Lead records map to Twenty Person records with a custom field kylas_lead_source__text storing the original lead_source value and a custom field kylas_lead_score__number preserving any numeric score. Kylas lead status (New, Contacted, Qualified, Unqualified) maps to a custom picklist kylas_lead_status__picklist on the Person object. Since Twenty has no built-in Lead conversion workflow, converted Kylas Leads retain their Person record; the customer's team configures any follow-up conversion logic post-migration.

Kylas Sales CRM

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Kylas Contact records map directly to Twenty Person records. Email, phone, address, job title, and lifecycle-stage metadata transfer to the corresponding Twenty Person fields. Custom fields on Kylas Contacts (beyond the standard set) are created in Twenty via the /metadata API before import and mapped by field type. Kylas Contact-to-Company linkage transfers as a Twenty Person-to-Company relation.

Kylas Sales CRM

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Kylas Company records map to Twenty Company records with industry classification, company size, and domain data preserved. The Kylas industry picklist values are remapped to Twenty industry picklist equivalents. Multi-currency settings from Kylas (relevant for companies with international operations) are stored as a custom field in Twenty since Twenty's self-hosted model handles currency display at the deployment level.

Kylas Sales CRM

Deal

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Kylas Deals map to Twenty Opportunities. The deal value transfers to the Opportunity amount field, the expected close date maps to closeDate, and the pipeline stage name maps to a Twenty Opportunity stage. Kylas pipeline names (if multiple exist) map to a custom Opportunity field pipeline_name__text for segmentation. Closed-won and closed-lost reasons from Kylas custom fields become Twenty custom fields for deal retrospective analysis.

Kylas Sales CRM

Pipeline

maps to

Twenty CRM

Opportunity Stage (configuration)

lossy
Fully supported

Kylas named Pipelines with custom stage sets map to Twenty Opportunity stage configurations. We extract every unique stage name from every Kylas pipeline and create matching stage values in Twenty's Opportunity settings. If a Kylas pipeline exceeds Twenty's practical stage count, we consolidate low-volume stages into a catch-all stage and document the mapping for the customer's review.

Kylas Sales CRM

Activity (Task, Call, Note)

maps to

Twenty CRM

Task, Comment

1:1
Fully supported

Kylas Activity records (Tasks, Calls, Notes attached to Leads, Contacts, Deals, and Companies) map to Twenty Task records and Comment records. The activity type determines the mapping: Kylas task engagements become Twenty Tasks with status and due date preserved; Kylas call logs become Twenty Tasks with a custom call_duration__number field; Kylas notes become Twenty Comment records linked to the parent Person or Company. Activity timestamps are preserved as the Task createdAt date.

Kylas Sales CRM

Custom Fields (all objects)

maps to

Twenty CRM

Custom Fields

lossy
Fully supported

Kylas custom fields on any object are exported with their field type, picklist value IDs, and current values. We create matching custom fields in Twenty via the /metadata API before data import. Picklist value IDs from Kylas are remapped to Twenty picklist labels, and a custom field kylas_original_field_name__text is added to preserve traceability. Custom field migration is a pre-requisite step executed before any record import.

Kylas Sales CRM

Documents

maps to

Twenty CRM

Attachment (via API)

1:1
Mapping required

Documents stored in Kylas are exported as binary blobs with parent record associations. Twenty supports file attachments via its API; we map Kylas documents to Twenty attachments linked to the corresponding Person or Company record. Very large document stores (over 5 GB of attachments) require a separate storage provisioning step and may extend the migration timeline by one to two weeks.

Kylas Sales CRM

Tag

maps to

Twenty CRM

Label (Label2)

lossy
Fully supported

Kylas tags apply across objects as a cross-object labeling system. Twenty uses Label2 for tagging entities. We export the full Kylas tag vocabulary and map each tagged record to a Twenty Label2 with the same name. Tags that apply to both Persons and Companies create multiple Label2 relations on the respective records.

Kylas Sales CRM

User (Owner)

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Kylas user records (name, email, role, profile) are exported and mapped to Twenty WorkspaceMember records. We match by email as the primary key. Inactive Kylas users become inactive WorkspaceMembers in Twenty pending the customer's decision to re-activate. Owner assignment on Deals, Activities, and Contacts resolves by matching the Kylas owner email to the Twenty WorkspaceMember after user provisioning.

Kylas Sales CRM

Smart Lists

maps to

Twenty CRM

SavedFilter (documentation only)

1:1
Not supported

Kylas Smart Lists are dynamic saved searches with filter criteria evaluated at display time; they have no persistent record set to export. We document every Smart List's filter criteria (field names, operators, values) in a written inventory so the customer's team can recreate the logic using Twenty's filter and view system. This is not a data migration; it is a configuration inventory delivery.

Kylas Sales CRM

Workflow Automation

maps to

Twenty CRM

Workflow (documentation only)

1:1
Fully supported

Kylas workflow automation rules (triggers, conditions, action sequences) are not exposed via the export API. We perform a UI-assisted audit of every active Kylas automation and document it in a written inventory specifying the trigger object, conditions, and action sequence. The customer's team uses this document to rebuild automations in Twenty or via an external automation tool. This is not a code migration; it is a rebuild blueprint.

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.

Kylas Sales CRM logo

Kylas Sales CRM gotchas

High

Record storage caps gate migration scope

Medium

Smart List filter criteria are non-exportable

High

Workflow automation rules cannot be transferred

Low

API lacks publicly documented rate limits

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 Lead-to-Contact conversion workflow exists in Twenty

    Kylas maintains a separate Lead object with an explicit conversion action that creates a Contact and optionally links it to a Company. Twenty uses a Person object for all individuals without a built-in conversion workflow. During migration, every Kylas Lead arrives as a Twenty Person with a preserved lead_source custom field. The customer's team must decide whether to treat all Persons as flat records or to implement a manual or programmatic conversion step if they want to distinguish between unevaluated prospects and qualified contacts. We document the lead_score distribution so the customer can set a qualification threshold post-migration.

  • Kylas workflow automations cannot be transferred

    Kylas workflow automation configuration is not exposed through any export API. Any assignment rules, stage-change triggers, email autoresponders, or task-creation rules built in Kylas must be documented by us as a configuration inventory and rebuilt manually in Twenty or via an external automation platform. This is a platform-level restriction, not a limitation of our migration tooling. We surface it in the discovery phase so customers budget time for the rebuild work and do not assume their automation logic travels with the data.

  • Twenty's metadata API requires pre-provisioned schema before record import

    Custom fields, custom picklist values, and custom objects in Twenty must be created via the /metadata API before any record import can succeed. This is a two-phase approach: schema deployment first, then data import. If a customer has a large custom field schema (over 30 custom fields across objects), schema provisioning alone can take three to five business days. We run all schema creation against a staging workspace before touching production, but customers with time-sensitive cutover deadlines should account for this sequencing in their project plan.

  • Kylas Smart List filter criteria have no persistent record set to migrate

    Kylas Smart Lists are query-based views with no saved member list. Only the filter criteria can be documented, not the records themselves. Teams that rely heavily on Smart Lists for segmenting prospects or managing follow-up queues will find that the Smart List logic must be rebuilt in Twenty's filter and saved-view system. We export the filter criteria for every Smart List and include them in the configuration inventory, but the customer must manually recreate each view in Twenty. This is not a data-loss risk; it is a rebuild time cost.

Migration approach

Six steps for a successful Kylas Sales CRM to Twenty CRM data migration

  1. Discovery and data audit

    We audit the source Kylas account across all active objects: Leads, Contacts, Companies, Deals, Activities (Tasks, Calls, Notes), Documents, Tags, Custom Fields, and Pipelines. We extract record counts per object, identify custom field definitions and picklist value sets, flag any Kylas objects approaching the plan record cap, and inventory active workflow automations and Smart Lists via a UI-assisted walkthrough. The discovery output is a written migration scope document covering object counts, schema complexity, and which items require a configuration inventory versus an actual data migration.

  2. Twenty workspace provisioning and schema design

    We provision a Twenty workspace (self-hosted instance or the twenty.com hosted option depending on the customer's deployment choice) and design the destination schema. This includes creating all custom fields via the /metadata API, configuring Opportunity stages to match the Kylas pipeline stages, setting up industry and status picklist values, and designing the Person and Company field layout. Schema is validated in the staging workspace before any production migration step.

  3. Owner reconciliation and workspace member provisioning

    We extract every distinct Kylas user referenced as an Owner on Deals, Contacts, Companies, and Activities and match them by email against the Twenty workspace member list. The customer provisions any missing Twenty WorkspaceMembers before record import begins. Inactive Kylas users are flagged for the customer's decision on whether to include them as historical assignees in Twenty.

  4. Staging migration and reconciliation

    We run a full migration into the staging Twenty workspace using production-like data volume. The customer reconciles record counts (Persons, Companies, Opportunities, Tasks) against the Kylas source, spot-checks 25-50 records for field-level accuracy, and reviews the opportunity pipeline stage mapping. Any schema corrections, picklist value gaps, or field mapping errors are resolved in staging before production migration begins.

  5. Production migration in dependency order

    We run production migration in record-dependency order: WorkspaceMembers (validated), Companies (from Kylas Companies), Persons (with Lead fields and Contact fields merged by email deduplication), Opportunities (with stage, amount, close date, and owner resolved), Tasks and Comments (activity history via Twenty API), Labels (tag migration), and Documents (file attachments). Each phase emits a row-count reconciliation report. We use conservative throttling against the Twenty GraphQL API and monitor for error responses.

  6. Cutover, validation, and automation inventory handoff

    We freeze Kylas writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty as the system of record. We deliver the Workflow Automation Inventory and Smart List Filter Criteria document to the customer's team. We support a one-week hypercare window for reconciliation issues. We do not rebuild Kylas automations or Smart Lists inside the migration scope; those are documented for the customer's team to rebuild in Twenty using their own resources or an automation partner.

Platform deep dives

Context on both ends of the pair

Kylas Sales CRM logo

Kylas Sales CRM

Source

Strengths

  • Unlimited-user flat-rate pricing simplifies budgeting for growing sales teams without per-seat inflation.
  • Mobile-first design with native iOS and Android apps keeps field reps productive without desktop access.
  • Built-in WhatsApp, SMS, and calling integration reduces reliance on third-party telephony tools.
  • Drag-and-drop pipeline configuration lets sales managers adjust deal stages without developer involvement.
  • Lead scoring and automated routing provide tiered prioritisation without requiring a data analyst on staff.

Weaknesses

  • Free tier caps at 1,000 records, pushing teams to upgrade sooner than comparable CRMs with higher free limits.
  • Workflow automation cannot be exported, requiring manual rebuild when switching platforms—a significant change-management cost.
  • Smart Lists are query-based and not exportable as static record sets, limiting migration completeness for teams relying heavily on filtered views.
  • The API is not publicly documented with rate limits or bulk endpoints, making programmatic migration planning less predictable.
  • The platform is primarily marketed to Indian and Southeast Asian SMBs; enterprise teams with global compliance requirements may find regional data-residency options limited.
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 Kylas Sales CRM 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

    Kylas Sales CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Kylas Sales CRM to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations under 15,000 total records (Contacts, Companies, Deals) with a single pipeline and straightforward custom fields land in three to five weeks. Migrations with multiple Kylas pipelines, high activity volumes (over 200,000 task and note records), complex custom field schemas, or large document attachment stores extend to eight to twelve weeks. The Twenty metadata schema provisioning step (creating custom fields and picklists before record import) adds three to five business days regardless of record volume.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Kylas Sales 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