CRM migration
Field-level mapping, validation, and rollback between Kursaha and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Kursaha
Source
Twenty CRM
Destination
Compatibility
6 of 10
objects map 1:1 between Kursaha and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
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.
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 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
Twenty CRM
Person
1:1Kursaha 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
Twenty CRM
Company
1:1Kursaha 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)
Twenty CRM
Opportunity or Custom Object
1:manyKursaha 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
Twenty CRM
Saved View / Filter
lossyKursaha 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)
Twenty CRM
Custom Field or External Tool
lossyKursaha 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)
Twenty CRM
Note / External Document
1:1Kursaha 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
Twenty CRM
Workspace User
1:1Kursaha 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
Twenty CRM
Not migrated
1:1Kursaha'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
Twenty CRM
Not migrated
1:1Kursaha 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)
Twenty CRM
Custom Field (Person)
lossyKursaha 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.
| Kursaha | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Campaign (Kampania) | Opportunity or Custom Object1:many | Fully supported | |
| Audience Segment | Saved View / Filterlossy | Fully supported | |
| Channel (mail, WhatsApp, SMS) | Custom Field or External Toollossy | Fully supported | |
| Template (email, WhatsApp, SMS) | Note / External Document1:1 | Fully supported | |
| User Account | Workspace User1:1 | Fully supported | |
| Analytics Events | Not migrated1:1 | Not supported | |
| Integrations | Not migrated1:1 | Not supported | |
| Custom Properties (Contact) | Custom Field (Person)lossy | 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.
Kursaha gotchas
No public API documentation complicates automated migration
Analytics and behavioral event data are not exportable
On-premise deployment complicates data retrieval
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
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.
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.
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.
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.
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.
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
Kursaha
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Kursaha and Twenty CRM.
Object compatibility
2 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
Kursaha: Not publicly documented.
Data volume sensitivity
Kursaha 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 Kursaha to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Kursaha
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.