CRM migration

Migrate from Kursaha to Twenty CRM

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

Kursaha logo

Kursaha

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

60%

6 of 10

objects map 1:1 between Kursaha and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Kursaha and Twenty CRM are built for different jobs. Kursaha organizes customer engagement around Campaigns, Channels (mail, WhatsApp, SMS), and Contact behavioral properties within an AI-powered marketing automation context. Twenty CRM is a relationship-management platform modeled on Salesforce's Contact-Account-Opportunity paradigm, self-hostable under an AGPL-3.0 license. The migration requires decomposing Kampania-level objects into standard CRM primitives, resolving that Kursaha has no publicly documented API so CSV exports from the dashboard are the extraction path, and acknowledging that template content, behavioral analytics, and multi-channel engagement data do not map cleanly to Twenty's current feature set. We map Contacts to People, Companies to Companies, and Campaigns to Opportunities or custom objects with notes explaining the semantic difference. Audience segment logic is reconstructed using Twenty's filter and view capabilities rather than imported as a discrete object. Workflows and integrations do not migrate and are documented for rebuild.

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

Kursaha logo

Kursaha

What's pushing teams away

  • Small bootstrapped company with limited documentation makes it difficult for teams to self-serve technical configuration or troubleshoot issues independently.
  • No publicly documented API means integrations with other business systems require custom development or workarounds that larger platforms handle out-of-the-box.
  • Minimal track record and small team size raise concerns about long-term product stability and support continuity for enterprise customers.

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

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

Kursaha

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Kursaha Contact records map to Twenty Person records. Standard fields (name, email, phone, company) map directly. Behavioral properties (lifecycle stage, lead score, engagement frequency) are preserved as custom fields on the Person object in Twenty. We confirm field type compatibility during scoping because Kursaha behavioral properties may be stored as free-form text that requires normalization to Twenty's typed fields. Company association in Kursaha maps to the Company field on Twenty Person, creating a lookup link.

Kursaha

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Kursaha Company records (if present in the export) map directly to Twenty Company records. Domain from Kursaha becomes the Company website field. We use domain as the dedupe key during import. If the customer's Kursaha data contains only Contact-level company data without discrete Company records, we create Companies from unique domain values during the transform step before importing to satisfy Twenty's Person-Company relationship model.

Kursaha

Campaign (Kampania)

maps to

Twenty CRM

Opportunity or Custom Object

1:many
Fully supported

Kursaha Kampania objects contain campaign metadata (name, status, start/end dates, channel assignments) that does not map to any standard Twenty CRM object. We map Kampania name, status, and dates to a Twenty Opportunity with a custom Kampania Name field, treating each campaign as a business relationship or initiative rather than a marketing send record. If the customer has more than one campaign per opportunity context, we create a custom Kampania object in Twenty before migration. Channel assignments (mail, WhatsApp, SMS) are documented as custom fields for manual reconstruction in any multi-channel tool the customer adopts post-migration.

Kursaha

Audience Segment

maps to

Twenty CRM

Saved View / Filter

lossy
Fully supported

Kursaha audience segments are defined by filter rules against contact properties. We audit every segment's filter conditions and reconstruct them as Twenty Saved Views with equivalent filter logic. Complex multi-condition segments may require simplification because Twenty's filter builder uses a simpler operator set than Kursaha's segment rule engine. We document any segment that cannot be fully reconstructed so the customer's admin can rebuild it manually.

Kursaha

Channel (mail, WhatsApp, SMS)

maps to

Twenty CRM

Custom Field or External Tool

lossy
Fully supported

Kursaha Channels are linked to Kampania rather than stored as independent records. We preserve channel-to-Kampania associations as custom fields on the Kampania-equivalent Opportunity or custom object. The channel templates (email, WhatsApp, SMS content) are extracted as text fields for documentation purposes. Actual template rendering and channel delivery in Twenty requires the customer to configure a separate email sending tool (such as a transactional email service) and potentially a WhatsApp Business API integration.

Kursaha

Template (email, WhatsApp, SMS)

maps to

Twenty CRM

Note / External Document

1:1
Fully supported

Kursaha templates include text content and HTML structure for each channel. We extract template body text and basic HTML markup into Twenty Note records linked to the associated Kampania-equivalent record for reference. Advanced AMP markup and interactive elements cannot be preserved; we flag these as requiring rebuild in the destination channel tool. The template subject line migrates as a Note title for audit purposes.

Kursaha

User Account

maps to

Twenty CRM

Workspace User

1:1
Fully supported

Kursaha user accounts and role assignments (admin, editor, viewer) map to Twenty workspace user accounts. We extract users by email address from the CSV export and create corresponding Twenty users during migration. Role mapping is documented for the customer's admin to reassign in Twenty's role and permissions settings because role hierarchies differ between platforms.

Kursaha

Analytics Events

maps to

Twenty CRM

Not migrated

1:1
Not supported

Kursaha's real-time analytics and campaign engagement metrics (opens, clicks, conversions, cohort data) are computed by the platform's processing layer and are not available as discrete exportable records. We do not migrate analytics history. Customers should capture screenshots of dashboards before cutover. Post-migration analytics are rebuilt in Twenty's native reporting or in a dedicated BI tool connected to Twenty's API.

Kursaha

Integrations

maps to

Twenty CRM

Not migrated

1:1
Not supported

Kursaha integrations with third-party tools (forms, CRM connections, analytics platforms) are configuration-level settings stored in Kursaha's platform. These do not export as data records. We document every active integration the customer has configured in Kursaha so that the same integrations can be reconfigured in Twenty or a new tool post-migration.

Kursaha

Custom Properties (Contact)

maps to

Twenty CRM

Custom Field (Person)

lossy
Fully supported

Kursaha custom contact properties not present in the standard field set are preserved as custom fields on the Twenty Person object. We create each custom field in Twenty before migration, mapping the source field name to a descriptive Twenty API name. Text, number, date, and boolean property types map directly; multi-select or behavioral scoring properties require a review of the source data to determine the appropriate Twenty field type.

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.

Kursaha logo

Kursaha gotchas

High

No public API documentation complicates automated migration

High

Analytics and behavioral event data are not exportable

Medium

On-premise deployment complicates data retrieval

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 means CSV exports are the only extraction path

    Kursaha does not publish REST API documentation publicly, and no authenticated API access is available for migrations without private credentials arranged directly with the vendor. We request CSV exports from the Kursaha dashboard for each data object (Contacts, Companies, Campaigns, Segments, Templates). If dashboard exports are unavailable for the customer's subscription tier or have export size limits that truncate records, migration scope requires re-negotiation. We confirm export capabilities during the scoping call before committing to a timeline. For customers on Kursaha's Enterprise On-Premise tier, data retrieval may require customer-managed database exports or file extraction, adding complexity and timeline risk.

  • Twenty CRM is early-stage software with an evolving data model

    Twenty CRM reached version 1.18.0 in February 2026 and is actively developing. Field types, object schemas, and API endpoints may change between the scoping date and the migration execution date. We pin to a specific Twenty release version during migration planning and validate field type compatibility by querying the target instance's schema API before writing the transform scripts. Migrations scoped against a previous Twenty release may encounter schema drift if the customer updates their Twenty instance independently before migration runs.

  • Kampania-to-Opportunity mapping loses marketing send semantics

    Kursaha's Kampania object is a campaign container that includes channel assignments, audience targeting, and schedule metadata. Twenty has no native Kampania object, so we model campaigns as Opportunities or a custom object. The mapping preserves campaign name, status, and dates, but channel assignments and audience targeting logic do not carry over as functional records. Customers who rely on Kampania data for marketing reporting need to establish a separate tracking method post-migration, either in Twenty's reporting or in a dedicated marketing analytics tool.

  • Self-hosted Twenty instances require infrastructure coordination

    If the customer deploys Twenty as a self-hosted instance, the migration targets an environment the customer controls, not a FlitStack AI-managed endpoint. We require VPN access or a dedicated migration endpoint before migration begins, and we coordinate with the customer's DevOps or IT team for database access, Docker container health, and API availability during the migration window. Self-hosted migrations typically add one to two weeks to the timeline for infrastructure setup and connectivity testing.

Migration approach

Six steps for a successful Kursaha to Twenty CRM data migration

  1. Scoping and export capability audit

    We audit the customer's Kursaha account tier, available dashboard export features, and data object inventory. We confirm which objects (Contacts, Companies, Campaigns, Segments, Templates, User Accounts) have exportable records and which are incomplete or absent. We also determine whether the destination Twenty instance is the cloud SaaS or a self-hosted deployment, and we obtain the Twenty API endpoint and authentication credentials. The scoping output is a written migration scope that lists every object, estimated row counts, and any export limitations requiring customer intervention.

  2. CSV extraction and data quality assessment

    The customer downloads CSV exports from the Kursaha dashboard for each migratable object. We perform a data quality assessment on the exported files, identifying duplicate records, missing required fields (particularly Contacts without email addresses, which cannot map to Twenty Person records), inconsistent date formats, and any behavioral property fields that require normalization. We deliver a data quality report to the customer with a cleanup checklist before the transform phase begins. We do not proceed to transform until the source data is at a minimum viable quality level.

  3. Twenty schema setup and custom field creation

    We provision the Twenty destination schema. This includes creating any custom fields on the Person object for behavioral properties, creating a custom Kampania object if the customer has multiple campaigns that require a dedicated container, and confirming that the Twenty API is reachable from our migration infrastructure. For self-hosted Twenty instances, we coordinate with the customer's IT team to open the API endpoint and authenticate our migration service. Schema setup happens in the customer's Twenty staging environment before production migration begins.

  4. Transform and sandbox import

    We build the transform scripts that map each CSV export to the Twenty object schema, applying the data quality corrections identified in step two. We run a sandbox import into the customer's Twenty staging instance using a representative data sample to validate field mappings, verify that required fields are populated, confirm that Person-Company relationships resolve correctly, and identify any record rejections caused by Twenty's validation rules. The customer reconciles the sandbox results and approves the mapping before production migration proceeds.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Companies first (if discrete Company records exist), then Persons (with Company links resolved), then User accounts (with role mapping documented for manual reassignment), then Kampania-equivalent records (Opportunity or custom object), then Saved Views (reconstructed segment filters). We emit a row-count reconciliation report after each phase. During the migration window, the customer freezes writes in Kursaha to prevent data divergence. We run a final delta migration to capture any records modified during the window before cutover.

  6. Cutover, validation, and integration rebuild handoff

    We perform a final record count match between the last Kursaha export and the Twenty destination, spot-checking twenty to thirty records against the source. We deliver the integration inventory document listing every third-party tool connected to Kursaha that requires reconfiguration in Twenty or an alternative. We deliver the Kampania summary documenting which campaign metadata moved and which requires manual rebuild. We do not rebuild integrations, reconfigure channel delivery tools, or set up multi-channel outreach in Twenty; those are separate configuration engagements. We provide a five-business-day post-cutover window to address data reconciliation issues raised during user acceptance testing.

Platform deep dives

Context on both ends of the pair

Kursaha logo

Kursaha

Source

Strengths

  • Generative AI content creation for multi-channel campaigns reduces copywriting overhead for small marketing teams.
  • Affordable pricing tiers ($149–$499/month) with quarterly discount offer relative to larger enterprise CRMs.
  • Multi-channel template builder supporting mail, WhatsApp, and SMS in a single interface.
  • Drag-and-drop interface with AMP mail support enables interactive email without developer involvement.
  • Real-time analytics and cohort analysis for campaign performance monitoring.

Weaknesses

  • No publicly documented REST API—migrations rely on dashboard CSV exports which may not cover all data objects.
  • Bootstrapped company (founded 2022, ~3 employees per Crunchbase) with limited documentation and support infrastructure.
  • On-premise deployment option exists but documentation on data export procedures is sparse, complicating migration scoping.
  • Small company raises concerns about long-term product roadmap stability and customer support continuity.
  • Lacks native integrations with popular CRMs and marketing stacks, requiring custom development for most connections.
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 Kursaha 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

    Kursaha: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Kursaha 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 three and five weeks for straightforward accounts with under 15,000 Contacts, 2,000 Companies, and 500 Campaigns where CSV exports are complete and data quality is high. Migrations requiring custom object creation in Twenty, behavioral property normalization across multiple property types, audience segment reconstruction, or coordination with a self-hosted Twenty instance move to eight to twelve weeks. On-premise Kursaha deployments that require customer-managed database exports add an additional one to two weeks for data retrieval.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Kursaha.
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