CRM migration

Migrate from Exsalerate to Twenty CRM

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

Exsalerate logo

Exsalerate

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

80%

8 of 10

objects map 1:1 between Exsalerate and Twenty CRM.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Exsalerate to Twenty CRM is a migration from a flat, account-centric CRM built for ANZ professional services teams to a normalised, open-source platform modelled on Salesforce's object structure. Exsalerate holds Accounts as the primary entity with Opportunities tied directly to pipeline stages; Twenty CRM separates Companies from People (Contacts) and uses Opportunities with a stage field. We resolve that schema difference during scoping, preserve the Exsalerate Account-Contact relationship, and map pipeline stages to Twenty CRM's Opportunity stage values. Exsalerate has no public REST API or bulk export endpoint, so we rely on its built-in CSV export with multi-file reconciliation and, where available, direct database access. WorkflowMax quote cross-references embedded in Exsalerate Opportunities have no native equivalent in Twenty CRM — we store them as a custom field on each Opportunity record and flag them for manual relinking. Colour-coded activity tiles migrate as Tasks with the original colour value in a custom metadata field. Workflows, automations, and Xero/WorkflowMax sync configurations do not migrate; we deliver a written inventory of every active Exsalerate automation for the customer's admin to rebuild in Twenty CRM or via its REST API.

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

Exsalerate logo

Exsalerate

What's pushing teams away

  • Reporting depth does not match enterprise CRMs — Exsalerate's built-in analytics are limited compared to platforms like Salesforce or HubSpot, and customers requiring multi-touch attribution, forecasting models, or custom dashboards eventually outgrow what the platform surfaces.
  • Scalability concerns for teams above 20–30 users — several reviewers note that the platform was adequate at small scale but became slower and harder to manage as headcount and record volume grew, particularly on the pipeline view with large deal counts.
  • Limited third-party integrations beyond Xero and WorkflowMax — firms that need to connect to marketing automation, telephony, ERP, or other tools report significant friction, and the integration ecosystem is described as underdeveloped relative to major CRM platforms.
  • Support responsiveness varies — a subset of reviews mention slower response times from the Exsalerate support team, particularly when handling edge cases or technical questions about the WorkflowMax sync.
  • No native mobile app with full feature parity — field sales teams note that the mobile experience lacks the desktop pipeline view and some activity logging features, reducing utility for users who are frequently off-site.

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

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

Exsalerate

Account

maps to

Twenty CRM

Company

1:1
Fully supported

Exsalerate Accounts map directly to Twenty CRM Company records. The Account name becomes the Company name, and contact details, owner assignment, and custom properties map field-to-field. Company is the first object imported because it satisfies the lookup dependency for Contacts, Opportunities, and activity records. We use the Company domain or name as the dedupe key during import to prevent duplicate records.

Exsalerate

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Exsalerate Contacts map to Twenty CRM Person records. The Account-Contact relationship is preserved by linking each Person to the migrated Company record via a lookup field. We run duplicate detection across the contact set before import using email as the primary key. Any contacts without email addresses are flagged for the customer's admin to resolve manually before the migration phase begins.

Exsalerate

Opportunity

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Exsalerate Opportunities map directly to Twenty CRM Opportunity records. The Opportunity name, value (amount), expected close date, owner, and associated Pipeline Stage migrate field-to-field. The Exsalerate Pipeline Stage becomes the Twenty CRM Stage value. Closed-won and closed-lost reasons from Exsalerate custom properties migrate as text fields on the Opportunity. WorkflowMax quote cross-references embedded as custom attributes on Exsalerate Opportunities are stored in a custom field (workflowmax_quote_ref__c) on the Twenty CRM Opportunity and flagged for manual relinking if the customer needs to restore the project management connection.

Exsalerate

Pipeline

maps to

Twenty CRM

Pipeline (via Stage + custom grouping)

lossy
Fully supported

Exsalerate Pipelines are top-level named containers for sales activity. Twenty CRM does not have a separate Pipeline object; instead, pipeline groupings are achieved through stage labels and optional workspace view filters. We map each Exsalerate Pipeline name to a set of Opportunity Stage values prefixed with the pipeline name (for example, 'Enterprise: Proposal Sent') to preserve the pipeline context. The customer configures workspace views in Twenty CRM to filter by pipeline prefix after migration.

Exsalerate

Pipeline Stage

maps to

Twenty CRM

Opportunity Stage

lossy
Fully supported

Exsalerate Pipeline Stages (ordered labels such as Qualified, Proposal Sent, Negotiation) map to Twenty CRM Stage picklist values. Stage order and probability percentages are preserved. The colour metadata attached to stages in Exsalerate (used for visual tile encoding) is stored in a custom field on the Opportunity record for reference. Stage-level automation triggers do not migrate — we document each Exsalerate stage trigger in the automation inventory deliverable.

Exsalerate

To-Do Item

maps to

Twenty CRM

Task

1:1
Fully supported

Exsalerate's colour-coded activity tiles (the to-do model) map to Twenty CRM Task records. Due date, status, owner, and description migrate field-to-field. The tile colour value is stored in a custom Task field (activity_tile_colour__c) to preserve the urgency and context encoding that Exsalerate users relied on. This custom field is created during schema preparation before the task import phase begins.

Exsalerate

Email Activity

maps to

Twenty CRM

Timeline Entry

1:1
Fully supported

Exsalerate email history associated to Accounts and Contacts migrates to Twenty CRM Timeline Entries with subject, body (plain text), timestamp, sender, and recipients preserved. Attachments are handled as file migrations outside the record migration scope. Email threading relationships from Exsalerate are not preserved as Twenty CRM does not have a native email threading model; however, the chronological sequence of emails per contact is maintained through the ActivityDate timestamp.

Exsalerate

Custom Fields (Accounts, Contacts, Opportunities)

maps to

Twenty CRM

Custom Fields (Company, Person, Opportunity)

1:1
Fully supported

Custom fields on Exsalerate Accounts, Contacts, and Opportunities are migrated with field-type awareness. Picklist values are normalised to the destination picklist format. Date formats are converted to ISO 8601. Numeric precision is preserved. Any Exsalerate custom field that does not have a direct Twenty CRM equivalent is created as a custom field in the Twenty CRM workspace during schema preparation. Fields with no equivalent object in Twenty CRM (for example, Exsalerate-specific accounting references) are stored as text custom fields and flagged for review.

Exsalerate

User / Owner

maps to

Twenty CRM

Workspace Member

1:1
Fully supported

Exsalerate user accounts map to Twenty CRM workspace members. We create a user mapping table during scoping using email as the matching key. Any Exsalerate Owner without a matching Twenty CRM workspace member is held in a reconciliation queue for the customer's admin to provision before record import resumes. Inactive Exsalerate users are assigned to a placeholder owner record in Twenty CRM with a custom field indicating their inactive status.

Exsalerate

WorkflowMax Quote Imports (Opportunity cross-reference)

maps to

Twenty CRM

Custom Field on Opportunity

1:1
Fully supported

Where Exsalerate Opportunities were created from WorkflowMax quotes, a cross-reference attribute links the Opportunity to the originating WorkflowMax job. This linkage is not a standard CRM field — it is a custom attribute that we detect during scoping. We store the WorkflowMax job reference identifier in a custom text field (workflowmax_job_ref__c) on the migrated Twenty CRM Opportunity. The customer rebuilds the WorkflowMax connection manually after migration using the stored reference, or excludes this field if the WorkflowMax relationship is being discontinued.

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.

Exsalerate logo

Exsalerate gotchas

Medium

WorkflowMax quote-to-opportunity linkage is not a standard CRM field

High

Exsalerate has no publicly documented bulk export or API endpoint

Low

Colour-coded to-do tiles do not map to standard CRM task priorities

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

  • Exsalerate has no public REST API or bulk export endpoint

    Unlike most major CRMs, Exsalerate does not publish a public REST API or bulk export endpoint in its documentation. Our migration path relies on Exsalerate's built-in CSV export capability and, where available, direct database access for the customer's specific deployment. We confirm the export mechanism during discovery and plan for multi-file reconciliation if the CSV export does not include all required objects in a single download. If no export mechanism is available for a given deployment, we flag this as a migration blocker before scoping begins and recommend the customer contact Exsalerate support for data export assistance.

  • WorkflowMax quote-to-opportunity linkage is not a standard CRM field

    Exsalerate allows WorkflowMax quotes to be imported as Opportunities, creating a cross-reference between the project management tool and the CRM record. This linkage is a custom attribute rather than a standard Opportunity field. We must detect and preserve this reference explicitly during scoping. Since Twenty CRM has no native WorkflowMax integration, we store the cross-reference in a custom Opportunity field and flag it so the customer can rebuild the connection manually or archive it. If the Exsalerate CSV export does not include the WorkflowMax reference column, we alert the customer during discovery.

  • Colour-coded activity tiles do not map to standard CRM task priorities

    Exsalerate uses colour-coded activity tiles to flag urgency and context on to-do items. This visual encoding is meaningful within Exsalerate's dashboard but is not a standard CRM concept. We capture the tile colour value as a custom field (activity_tile_colour__c) on the migrated Task record in Twenty CRM. If the customer's Twenty CRM workspace is on a plan that restricts custom Task fields, we store the colour value as a text tag instead and document the alternative mapping.

  • Multi-file CSV reconciliation required for Exsalerate exports

    Exsalerate's CSV export may produce separate files for Accounts, Contacts, Opportunities, and Activities rather than a single unified export. We must reconcile relationships across these files using Exsalerate's internal IDs and foreign key references, which are not always present in the exported CSV headers. We generate a reconciliation map before import and validate record counts per object type before each import phase. Missing or malformed foreign keys result in records being held in a staging queue for manual resolution.

Migration approach

Six steps for a successful Exsalerate to Twenty CRM data migration

  1. Discovery and export method confirmation

    We audit the source Exsalerate deployment across Accounts, Contacts, Pipelines, Stages, Opportunities, To-Do items, email activities, custom fields, and user count. We confirm the CSV export method directly with the customer — identifying which objects are available in a single export file versus multiple files. We also identify whether any WorkflowMax quote cross-references are present in the Opportunity export. The discovery output is a written migration scope with a confirmed export path and a list of any data that cannot be extracted from Exsalerate's CSV export.

  2. Twenty CRM workspace provisioning and schema design

    We provision the Twenty CRM workspace (SaaS or self-hosted) and design the target schema. This includes creating custom fields for WorkflowMax references, activity tile colour values, and any Exsalerate custom fields without direct equivalents. We map each Exsalerate Pipeline to a set of stage prefixes in Twenty CRM and configure the Opportunity stage picklist. The schema is validated in a staging environment before production migration begins.

  3. CSV extraction, reconciliation, and data cleaning

    We extract data from Exsalerate using the confirmed CSV export method. We reconcile multiple export files by matching Exsalerate internal record IDs and foreign key references across Accounts, Contacts, and Opportunities. We clean the data: normalising date formats, resolving picklist values, detecting duplicates on email address for Contacts, and flagging any records with missing required fields. The reconciliation output is a row-count report per object with a list of records held for manual resolution.

  4. Production migration in dependency order

    We run production migration in record-dependency order: Companies first (from Exsalerate Accounts), then Persons (from Exsalerate Contacts with CompanyId resolved), then Opportunities (with Stage resolved and WorkflowMax quote references stored in custom fields), then Tasks (with activity tile colour in a custom field), then Timeline Entries for email history. Each phase emits a row-count reconciliation report. Owner resolution maps Exsalerate owners to Twenty CRM workspace members by email match, with any unresolved owners held in a reconciliation queue.

  5. Cutover, validation, and automation inventory delivery

    We freeze Exsalerate writes during cutover, run a final delta migration of any records modified during the migration window, then enable Twenty CRM as the system of record. We validate record counts, spot-check 25-50 records against the Exsalerate source, and confirm that Opportunity stage distributions match. We deliver the automation inventory document to the customer's admin team, listing every active Exsalerate workflow, pipeline rule, and automation trigger with a recommended Twenty CRM equivalent. We support a one-week hypercare window for reconciliation issues.

  6. Post-migration handoff and workflow rebuild support

    We do not rebuild Exsalerate automations, Xero integrations, or WorkflowMax sync connections inside the migration scope. We deliver a written handoff document that includes the full object mapping, the automation inventory, and the WorkflowMax reference list for manual relinking. The customer's admin or a technical partner rebuilds Exsalerate workflows using Twenty CRM's REST API or any automation tooling the customer chooses. We offer a separate engagement scope for workflow rebuild if the customer requires FlitStack AI to handle that work.

Platform deep dives

Context on both ends of the pair

Exsalerate logo

Exsalerate

Source

Strengths

  • Built-in WorkflowMax and Xero integration for service-industry workflows
  • Drag-and-drop pipeline board with colour-coded stage tiles
  • Account-centric model with explicit retention focus
  • Simple setup with minimal consultant involvement required for basic deployments
  • Purpose-built for ANZ small-to-mid professional services firms

Weaknesses

  • Limited reporting and analytics compared to enterprise CRM platforms
  • Shallow third-party integration ecosystem beyond accounting tools
  • Performance degrades at scale with large record volumes
  • No mobile app with full feature parity for field sales users
  • Support responsiveness inconsistent for complex technical scenarios
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 Exsalerate 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

    Exsalerate: Not publicly documented..

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Exsalerate 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 four weeks for accounts under 5,000 Accounts, 10,000 Contacts, and 2,000 Opportunities with no custom objects. Migrations with large engagement histories (over 100,000 activity records), multiple pipeline structures, WorkflowMax quote cross-references requiring custom field mapping, or data quality issues requiring extensive cleaning move to four to six weeks. The lack of a public Exsalerate API means we depend on CSV export quality, which can add time if multi-file reconciliation is required.

Adjacent paths

Related migrations to explore

Ready when you are

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