CRM migration
Field-level mapping, validation, and rollback between Bluwave CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Bluwave CRM
Source
Twenty CRM
Destination
Compatibility
6 of 10
objects map 1:1 between Bluwave CRM and Twenty CRM.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from Bluwave CRM to Twenty CRM is a significant platform shift: Bluwave is a ZAR-priced South African SMB CRM without a public API, while Twenty is an open-source TypeScript CRM with a PostgreSQL backend and a flexible schema that supports unlimited custom objects from day one. Bluwave exports data exclusively via its built-in Excel export, which limits column visibility to whatever the user has configured on screen. We request access to all modules and all relevant columns before export to avoid hidden-field gaps, and we validate the extracted data against source record counts before loading into Twenty. Custom field names and picklist values have no public reference in Bluwave, so we infer types from sampled content and validate with a small batch before committing the full load. Pipeline stages, deal values, owner assignments, and geocoded location data migrate to their Twenty equivalents. Workflows, automations, and travel-claim report configurations do not transfer; we deliver a written inventory for your admin to rebuild. Twenty's self-hosted option eliminates per-seat licensing entirely, which is the primary cost driver for teams moving off Bluwave's growing-headcount ZAR model.
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 Bluwave 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.
Bluwave CRM
Contact
Twenty CRM
People
1:1Bluwave Contact records map to Twenty People. We extract name, email, phone, address, and the geocoded latitude/longitude values as custom number fields in Twenty. Picklist values for contact status or type are inferred from sampled content and mapped to Twenty's select field options, which we create in Settings → Data Model before import. Owner assignment maps to Twenty's workspace Member by email match.
Bluwave CRM
Lead
Twenty CRM
People
1:manyBluwave Lead records (distinct from Contacts in Bluwave) map to Twenty People with a lead_source select field capturing the original lead attribution. If the customer uses a qualification lifecycle, we create a select field for lead_stage in Twenty and preserve the original Bluwave lifecycle value. The decision to merge Leads into existing People records vs. creating separate People records is made during scoping based on the customer's deduplication policy.
Bluwave CRM
Company
Twenty CRM
Company
1:1Bluwave Company records map directly to Twenty Company. The company name, industry, and address fields migrate to Twenty's equivalent Company fields. Twenty Company records are created before People import so that the company-people relationship is resolved at the point of People insert. Company is the deduplication anchor for incoming People records that have a matching company association.
Bluwave CRM
Deal
Twenty CRM
Opportunity
1:1Bluwave Deals map to Twenty Opportunity. Deal value, stage name, expected close date, and owner assignment transfer to Twenty's equivalent Opportunity fields. The pipeline stage name maps to a stage picklist in Twenty that we configure before migration. Orphaned Deals (where the associated Contact or Company has been deleted in Bluwave) are flagged for the customer to resolve before import because Twenty Opportunity requires a linked Company or Person.
Bluwave CRM
Pipeline Stage
Twenty CRM
Opportunity Stage
lossyBluwave pipeline stages are exported from the pipeline configuration module. We reconstruct the stage names and probability percentages as Opportunity stage picklist values in Twenty's Settings → Data Model before importing Deals. Stage order is preserved as the picklist option sequence. If Bluwave uses multiple pipelines, we document the pipeline-to-Record-Type mapping for Twenty configuration during setup.
Bluwave CRM
Activity
Twenty CRM
Task or Note
1:1Bluwave face-to-face activities map to Twenty Task. Activity type picklist values (call type, meeting type, etc.) are inferred from sampled export data and created as select options in Twenty's Task object. The geocoded latitude and longitude stored against Bluwave activities migrate to custom number fields on Twenty Task. We set Task status to the original Bluwave activity status and preserve the original activity date for timeline ordering. Meetings with start and end timestamps map to Twenty Task with a time field if the customer's workflow requires them.
Bluwave CRM
Custom Field
Twenty CRM
Custom Field
lossyBluwave custom fields have no public schema reference, so we audit field names and data types during scoping by exporting sample records and inferring types from content patterns. We create matching custom fields in Twenty's Settings → Data Model before any data import, using the inferred type (text, number, date, select, multi-select, etc.). Validation errors from misidentified field types are caught during batch testing before the full load commits.
Bluwave CRM
User / Owner
Twenty CRM
Member
1:1Bluwave User records (name, email, role) map to Twenty Members. Owner assignment on Deals and Activities resolves by email match against the Twenty Member table. Any Bluwave Owner without a matching Twenty Member is held in a reconciliation queue; the customer's admin provisions missing Members before record import resumes. Role hierarchies do not transfer and must be rebuilt in Twenty's workspace permissions.
Bluwave CRM
Attachment
Twenty CRM
URL Field or Post-Migration Upload
1:1Binary file attachments on Bluwave Deals and Contacts do not export via the Excel export method. We extract accessible file attachments separately via the Bluwave web interface where possible and either upload them directly to Twenty post-migration (as linked files on the record) or store them in the customer's chosen document store with a URL field added to the Twenty record. File attachment history is inventoried in the migration scope but cannot be loaded programmatically without a Bluwave API.
Bluwave CRM
Mail List
Twenty CRM
People + Custom Select Field
many:1Bluwave mail list segments and their member associations migrate as a custom select field on Twenty People, with each member receiving the list name as a field value. We do not migrate email campaign history or delivery receipts. If the customer uses multiple mail lists, we create a multi-select field in Twenty that captures all applicable list memberships per Person record.
| Bluwave CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Lead | People1:many | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Activity | Task or Note1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| User / Owner | Member1:1 | Fully supported | |
| Attachment | URL Field or Post-Migration Upload1:1 | Fully supported | |
| Mail List | People + Custom Select Fieldmany:1 | 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.
Bluwave CRM gotchas
No public API — migration relies on Excel export
Custom field schema is not publicly documented
Pricing is in ZAR with mandatory upfront training package
Geocoded location data is address-derived, not GPS-captured
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
Scoped extraction via Excel export with column-visibility audit
We request admin-level access to every relevant Bluwave module (Contacts, Leads, Companies, Deals, Activities, Mail Lists) and explicitly verify column visibility before triggering each export. We export to CSV format, one file per object, and validate the row count against the module record count shown in Bluwave. Binary attachments are inventoried separately. We audit custom field names and infer data types from sample content in this phase, and we flag any column that appears absent due to a hidden-field issue in the source view.
Twenty workspace provisioning and schema design
We provision the Twenty workspace (self-hosted deployment or Cloud account) and design the destination schema in Settings → Data Model before any import. This includes creating all custom fields inferred from the Bluwave audit, configuring the Opportunity stage picklist values from the extracted pipeline stages, setting up any multi-select fields for mail list memberships, and creating workspace Members for each Bluwave Owner identified in the export. The schema design is validated in a test workspace before production migration begins.
Owner reconciliation and Member provisioning
We extract every distinct Bluwave Owner referenced on Deals, Activities, and Contacts and match by email against the Twenty workspace Members. Owners without a matching Twenty Member are listed for the customer's admin to provision before record import. OwnerId references must be resolved before importing Deals and Activities because Twenty requires a valid Member assignment on Opportunity records.
Test migration and batch validation
We run a migration of a representative sample (typically 100-200 records per object) into the Twenty test workspace. The customer reconciles record counts and spot-checks 25-50 records against the Bluwave source. Any field mapping corrections, picklist value mismatches, or custom field type corrections are applied before the production migration begins. This step prevents schema mismatches from blocking the full load.
Production migration in dependency order
We run the production migration in record-dependency order: Members (manual provisioning confirmed), Companies (created first as the anchor for related records), People (with company links resolved), Opportunities (with stage values, owner references, and probability percentages set), Tasks (with geocoded fields, activity dates, and owner references), and mail list memberships (as custom select values on People). Each phase emits a row-count reconciliation report before the next phase begins. Activity records that failed import due to missing parent records are flagged and retried after the parent record is resolved.
Cutover, validation, and automation handoff
We freeze Bluwave writes during the cutover window, run a final delta migration of any records modified during the migration window, and hand over to Twenty as the system of record. We deliver the automation and workflow inventory document to the customer's admin team for rebuild in Twenty. We support a one-week hypercare window to resolve any reconciliation issues. We do not rebuild Bluwave Workflows or travel-claim configurations in Twenty; that work falls outside standard migration scope and is handled by the customer's admin or a separate engagement.
Platform deep dives
Bluwave CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 Bluwave CRM and Twenty CRM.
Object compatibility
3 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
Bluwave CRM: Not publicly documented.
Data volume sensitivity
Bluwave CRM 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 Bluwave CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Bluwave CRM 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 Bluwave CRM
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.