CRM migration

Migrate from Bluwave CRM to Twenty CRM

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 logo

Bluwave CRM

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

60%

6 of 10

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

Complexity

BStandard

Timeline

2-3 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Bluwave CRM logo

Bluwave CRM

What's pushing teams away

  • Small businesses find the per-user monthly cost in ZAR prohibitive as headcount grows, with reviews citing it as expensive relative to alternatives.
  • The platform lacks a built-in report writer, forcing power users to export to Excel for any analysis beyond pre-built dashboards.
  • Limited customisation options mean teams with non-standard sales processes struggle to fit the CRM to their workflow rather than adapting their workflow to the CRM.
  • No publicly documented API means integrations with external tools rely on third-party connectors or manual exports, creating friction for technically-minded teams.

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

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

maps to

Twenty CRM

People

1:1
Fully supported

Bluwave 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

maps to

Twenty CRM

People

1:many
Fully supported

Bluwave 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

maps to

Twenty CRM

Company

1:1
Fully supported

Bluwave 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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Bluwave 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

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Bluwave 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

maps to

Twenty CRM

Task or Note

1:1
Fully supported

Bluwave 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

maps to

Twenty CRM

Custom Field

lossy
Fully supported

Bluwave 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

maps to

Twenty CRM

Member

1:1
Fully supported

Bluwave 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

maps to

Twenty CRM

URL Field or Post-Migration Upload

1:1
Fully supported

Binary 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

maps to

Twenty CRM

People + Custom Select Field

many:1
Fully supported

Bluwave 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.

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.

Bluwave CRM logo

Bluwave CRM gotchas

High

No public API — migration relies on Excel export

Medium

Custom field schema is not publicly documented

Medium

Pricing is in ZAR with mandatory upfront training package

Low

Geocoded location data is address-derived, not GPS-captured

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

  • Bluwave exports via Excel only — column visibility must be audited

    Bluwave CRM has no public API and no developer portal. Our extraction relies on the built-in Excel export, which is constrained to the columns currently visible in each module view at the time of export. Any field hidden by a user's view configuration is absent from the export. We request access to all relevant modules and explicitly verify column visibility before requesting each export. Binary attachments and images do not export via this method; we handle them separately via the web interface where accessible, but their migration cannot be automated without a Bluwave API.

  • Custom field schema must be inferred before Twenty schema creation

    Bluwave CRM supports custom fields but publishes no field-name, data-type, or picklist-value reference. During scoping, we export sample records from each module, infer field types from content (text, number, date, select), and validate with a small batch import into a Twenty test workspace before committing the full load. Any misidentified field type causes validation failures in Twenty's Data Model, which requires the field to be deleted and recreated before re-import. We recommend allocating two to three days of scoping time specifically for custom field audit on accounts with more than five custom fields.

  • Twenty requires custom fields to exist before CSV import

    Twenty's CSV import creates records, not fields. The platform documentation explicitly states that all custom fields must be created in Settings → Data Model before importing any CSV that references them. We create every mapped custom field in Twenty before initiating the import phase. This means the Bluwave custom field audit and the Twenty schema creation are sequential dependencies: the inferred Bluwave field list must be complete before the Twenty workspace schema is finalised.

  • Docker or Kubernetes v1.0 migration failures can block self-hosted setup

    A known GitHub issue in Twenty v1.0 (issue #12936) documents database migration failures on fresh Docker and Kubernetes installations at startup. Teams deploying Twenty self-hosted for the first time may encounter this if using v1.0. We recommend using the latest stable release tag or the official Docker Compose setup rather than a fresh Kubernetes manifest, and we validate the Twenty instance is fully operational (database migrated, UI accessible, API responding) before initiating any data import.

  • Workflows, automations, and travel-claim configurations do not migrate

    Bluwave's bundled after-sales service module includes travel-claim report configuration and workflow associations that are specific to the platform's geocoding model. Twenty has a flexible data model but does not have a pre-built travel-claim or field-service workflow engine. We do not migrate Bluwave Workflows or automations as code. We deliver a written inventory of every active Bluwave automation and workflow trigger with its conditions and actions for the customer's admin to rebuild in Twenty or a companion tool.

Migration approach

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Bluwave CRM logo

Bluwave CRM

Source

Strengths

  • Simple onboarding with mandatory setup and training packages that get new users operational quickly.
  • Integrated field sales tools including geocoding, travel claim reports, and face-to-face activity logging.
  • Bundled after-sales service module means field service and CRM share a single database and licence.
  • Strong ease-of-use ratings across G2 and Capterra with minimal learning curve for sales reps.
  • Monthly licence is cancellable with 7 days notice, reducing long-term commitment risk for small teams.

Weaknesses

  • No public API documentation or developer reference, limiting migration tooling and third-party integration options.
  • Mandatory setup package (from R9,750 for 1-3 users) adds significant upfront cost before a single user logs in.
  • Lacks a built-in report writer, requiring Excel exports for any custom analysis.
  • Customisation is limited compared to platforms like HubSpot or Zoho, with fewer field types and workflow options.
  • The platform is primarily documented in English but priced exclusively in South African Rand, which may complicate budgeting for international teams.
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 Bluwave 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

    Bluwave CRM: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most migrations land between two and three weeks for accounts under 10,000 Contacts and 2,000 Deals with no custom objects and a straightforward pipeline structure. Migrations with custom objects, large activity histories (over 100,000 activity records), or multi-module scope (Companies, Leads, Deals, Activities, mail lists) extend to five to eight weeks because of the manual column-visibility audit, schema inference from sample data, and batch validation rounds required before the production load.

Adjacent paths

Related migrations to explore

Ready when you are

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