CRM migration

Migrate from Force24 to Twenty CRM

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

Force24 logo

Force24

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

82%

9 of 11

objects map 1:1 between Force24 and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Force24 is a UK-based marketing automation platform built around Contacts, Automated Journeys, Smart Lists, and Custom Objects. It has no native Deals or Opportunities model — pipeline data lives in an integrated CRM. Twenty CRM is a Paris-based open-source CRM (AGPL-3.0, Y Combinator S23) that positions itself as a modern Salesforce alternative with full data ownership via self-hosting and a free cloud tier. This migration is primarily a contact-centric data migration: we extract contacts with all properties and lifecycle data, map lightweight company associations, export any active Custom Objects with their linked-record definitions, and deliver a written journey inventory for the customer to rebuild in Twenty's automation layer. We do not migrate Journeys, Smart Lists, Workflows, Forms, or Reports as code — these require manual re-implementation in Twenty. The migration scope is scoped to standard Force24 objects only; if the customer's Custom Objects feature was not yet activated by their account manager, we flag this before any export begins.

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

Force24 logo

Force24

What's pushing teams away

  • Form building is cited as a pain point — reviewers note the form editor lacks maturity compared to dedicated form tools
  • Steep learning curve documented by multiple G2 reviewers who say the platform takes time to master before becoming productive
  • Limited API documentation means customers relying on custom integrations often hit walls when automating data flows
  • Some users report integration availability issues, finding the native connector library more constrained than expected
  • Per-user pricing on higher tiers can surprise growing teams — marketing seat counts drive cost in ways not always obvious at purchase

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

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

Force24

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Force24 Contacts map to Twenty CRM Person records. Standard fields (firstName, lastName, email, phone, address) migrate directly. We preserve Force24 lifecycle stage (subscriber, lead, marketing qualified, sales qualified, customer) as a custom field lifecycle_stage__c on the Person record for audit and reporting continuity. Tags migrate as comma-separated text in a custom tags__c field or as a dedicated tag relationship depending on Twenty's current schema support at migration time. The contact's creation date and last-modified date migrate as createdAt and updatedAt timestamps.

Force24

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Force24's lightweight Company records (typically a name and URL) map to Twenty CRM Company. The domain name stored against the Force24 contact becomes the Company website field. We resolve the Company lookup on the Person record at migration time using domain matching or a pre-built name-dedupe key. If Force24 contacts share no explicit company link, we offer a domain-grouping option that associates contacts from the same email domain to a single Company record.

Force24

Lead

maps to

Twenty CRM

Person (as Lead proxy)

1:1
Fully supported

Force24 stores Lead records as Contacts with a lifecycle_stage property indicating funnel position. We migrate these as Twenty CRM Person records and flag them with a lifecycle_stage__c value of 'lead' to preserve the original classification. If the customer used Force24's lead-specific fields (lead status, lead source, lead score), these map to custom fields lead_status__c, lead_source__c, and lead_score__c on the Person record.

Force24

Custom Object (e.g. Bookings, Subscriptions)

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Force24 Custom Objects (user-defined linked-data tables) map to Twenty CRM custom objects of equivalent schema. We export each Custom Object definition — all fields, data types, and relationship fields — during scoping, then pre-create the destination schema in Twenty before any record import. The critical constraint is that Force24 Custom Objects require account manager activation before the API exposes the data; if the feature is not enabled, we flag this at scoping and the customer must arrange activation with Force24 before export. Relationship fields linking Custom Object records to the parent Contact are preserved as lookup fields in Twenty's custom object schema.

Force24

Activity: Email Open

maps to

Twenty CRM

Comment

1:1
Fully supported

Force24 email engagement events (opens, clicks, deliveries) map to Twenty CRM Comment records attached to the Person. The Comment body carries a structured summary (e.g., 'Email opened: [subject] on [date]'). Open and click timestamps preserve as Comment createdAt. This mapping preserves the engagement timeline in Twenty's activity feed without requiring a native engagement-log object.

Force24

Activity: SMS and WhatsApp

maps to

Twenty CRM

Comment

1:1
Fully supported

Force24 SMS and WhatsApp message records migrate as Comment records on the Person, with message body and direction (sent/received) captured in the Comment text. Delivery status is preserved as a custom field delivery_status__c. Because Twenty CRM does not have a native SMS/WhatsApp object, the message history lives in the activity feed alongside email engagement records.

Force24

Activity: Form Submission

maps to

Twenty CRM

Comment

1:1
Fully supported

Force24 form submission events (form name, submitted fields, submission date) map to Comment records on the Person. The Comment records the form name and timestamp; form field values are documented separately as a custom data summary for the customer's admin to review. This preserves the fact that a contact submitted a form without requiring a native Form object in Twenty.

Force24

Tag

maps to

Twenty CRM

Custom tag field or Comment label

lossy
Fully supported

Force24 contact tags migrate as a custom tag field on the Person record. If Twenty supports a native tag or label field at migration time, we use it; if not, we write tags as comma-separated values in a custom field tags__c. The customer's admin chooses the strategy during scoping. The tag set is preserved in full — no tag is discarded.

Force24

Smart List / Segment

maps to

Twenty CRM

Static Person list or custom field

lossy
Fully supported

Force24 Smart Lists are saved audience segments with property-based and behavioural filter criteria. We export the segment membership (which contacts are in each list) and recreate it in Twenty as static Person records in a named group, or as a multi-select custom field if the customer prefers a dynamic filter approach. The original filter logic (property conditions, behavioural triggers, AND/OR conditions) is documented in the handoff specification for manual rebuild in Twenty's segmentation layer.

Force24

User / Owner

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Force24 distinguishes between Marketing users and Sales users with different seat pricing. We export all active and inactive users referenced on contacts and Custom Object records, map by email address to Twenty CRM WorkspaceMember, and hold any unresolved owners in a reconciliation queue for the customer's admin to provision before record import begins. The marketing-vs-sales classification is preserved as a custom field user_type__c for reference.

Force24

Lead Score value

maps to

Twenty CRM

Custom number field on Person

1:1
Fully supported

Force24 lead scoring assigns numeric values to contacts based on engagement and property rules. We export the score value stored on each contact record and write it to a custom field lead_score__c on the Twenty Person record. The scoring rules themselves are Force24 platform configuration and cannot be exported; we document the rule structure (property thresholds, engagement weights) in the handoff specification for manual rebuild.

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.

Force24 logo

Force24 gotchas

Medium

Custom Objects require account manager activation

High

Journey automation logic is not portable

High

Contact and email allowances are tier-gated

Low

Smart List filter logic requires re-implementation

Medium

API endpoints for Custom Objects are non-standard

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

  • Custom Objects require account manager activation before export

    Force24 Custom Objects — linked-data tables for bookings, subscriptions, or other records linked to contacts — are not available by default and require account manager activation. Without it, the Custom Object data is invisible to the API. We confirm activation status during scoping and arrange API access coordination with Force24 support before any export attempt. If the customer has not yet activated Custom Objects, we flag this as a prerequisite before the migration begins. This gotcha is specific to the Force24 platform and directly affects what data can be extracted for this migration pair.

  • Automated Journeys and Smart List filter logic are not portable

    Force24 Automated Journeys store complex multi-step, multi-channel workflow logic in Force24's workflow engine with no portable export format. Smart Lists store saved filter combinations (property conditions, behavioural rules, AND/OR branches) that cannot be directly transferred. We export journey structure as a written specification (entry trigger, steps, branches, exit conditions) and Smart List criteria as a documented filter definition. We do not migrate journey logic as code. The customer rebuilds these in Twenty's automation layer post-migration.

  • Contact and email tier allowances require scoping before migration

    Force24 pricing is structured around monthly email send caps and total contact database limits per tier (Starter 25K contacts, Professional 50K, Premium 125K+). When migrating large contact databases, we scope the volume against the customer's current tier to confirm all contacts are within allowance. If the destination migration will approach or exceed limits, we flag this before import begins. Twenty CRM's self-hosted model has no contact-volume billing, so this constraint disappears post-migration but must be confirmed at the source tier during scoping.

  • Force24 Custom Object API requires direct coordination with Force24 support

    Force24's support documentation confirms that Custom Object API endpoints exist but are not publicly documented at scale. The exact request format, authentication method, and rate limits require working with Force24's technical team. This adds time to the migration timeline if not arranged in advance. We coordinate API access for Custom Object exports during the discovery phase. Without this coordination, Custom Object data cannot be reliably extracted via API, and a manual export approach (CSV via Force24's UI) becomes the fallback, which is slower and less repeatable.

  • Twenty CRM is actively developed with a fast release cadence

    Twenty CRM ships frequent releases and has experienced schema changes — for example, a recent fix addressed standalone page migration failing on navigationMenuItem enum type change. We pin to a stable release version during migration, test against the target version before production cutover, and document the version used. Schema-breaking changes in future releases may require manual field adjustments. This is a product-maturity consideration for teams choosing an actively-developed open-source platform over a more established commercial CRM.

Migration approach

Six steps for a successful Force24 to Twenty CRM data migration

  1. Discovery and Force24 API scoping

    We audit the source Force24 portal across all active objects: contacts, companies, Custom Objects, engagement history (email, SMS, WhatsApp, form), Smart Lists, Tags, and user accounts. We confirm whether Custom Objects are activated (with Force24 support coordination if not), what Custom Object types exist, and the total record volume per object. We also review any active Automated Journeys for documentation purposes. The discovery output is a written migration scope with object inventory, record counts, and a Force24 API access confirmation checklist.

  2. Twenty CRM schema design

    We design the destination schema in Twenty CRM before any data import. This includes provisioning custom fields on Person (lifecycle_stage__c, lead_score__c, tags__c, user_type__c, delivery_status__c), creating Company records (with website and domain), designing any custom object definitions mapped from Force24 Custom Objects, and creating Comment types or labels for engagement history. Schema is deployed via Twenty's API into the target environment. We validate the schema against the Force24 field inventory to confirm no data will be orphaned.

  3. Test migration and contact-company relationship validation

    We run a full test migration into a staging or non-production Twenty CRM environment using representative data volume. The customer's team validates record counts, spot-checks 25-50 Person records against Force24 source data (name, email, lifecycle stage, tags, company link), confirms Custom Object relationships are intact (linked to the correct Person), and reviews engagement Comment records for accuracy. Any mapping corrections are made at this stage. No production data moves until test migration is signed off.

  4. Owner and user reconciliation

    We extract every distinct Force24 user referenced on contacts, Custom Objects, and engagement records and match by email address against Twenty CRM WorkspaceMembers. Any Force24 user without a matching Twenty account goes to a reconciliation queue for the customer's admin to provision before record import resumes. This step is a prerequisite for satisfying the owner lookup on Person records.

  5. Production migration in dependency order

    We execute production migration in strict dependency order: WorkspaceMembers (validated), Companies (from Force24 Companies), Persons (with AccountId resolved, lifecycle_stage__c and tags__c populated), Custom Objects (with Person lookup resolved), engagement history (Comment records per Person), Smart List memberships (as static Person groups or tag fields), and lead scores (as lead_score__c values). Each phase emits a row-count reconciliation report before the next phase begins. We run in a live-cutover window with a delta pass to capture any records modified during migration.

  6. Journey documentation, segment handoff, and go-live

    We deliver the migration handoff package: a journey inventory with each Force24 Automated Journey documented by entry trigger, step count, branching logic, and recommended Twenty automation rebuild path; a Smart List criteria document listing each segment's filter conditions and included contact count; a Custom Object schema summary for the destination Twenty custom objects; and an integration reference noting any Force24 integrations that will need reconnection in Twenty. We support a five-business-day hypercare window for reconciliation issues. We do not rebuild Journeys or automations in Twenty as part of the migration scope.

Platform deep dives

Context on both ends of the pair

Force24 logo

Force24

Source

Strengths

  • Visual journey builder with drag-and-drop workflow design that reviewers consistently praise
  • Multi-channel campaign support spanning email, SMS, WhatsApp, forms, microsites, and web tracking
  • Real-time behavioural segmentation with automated list updates based on contact activity
  • Lead scoring engine that assigns numeric values to prospects based on engagement data
  • Integration hub connecting Force24 to CRM platforms like Workbooks for unified sales-marketing data

Weaknesses

  • Form builder functionality is noted as underdeveloped compared to dedicated form tools
  • Limited public API documentation makes custom integrations and automation projects difficult
  • Per-user pricing model with marketing seat caps can inflate costs as teams grow
  • Custom Objects feature requires account manager activation — not self-service
  • Platform has a steeper learning curve than simpler email tools, requiring time investment to master
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. 1 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 Force24 and Twenty CRM.

  • Object compatibility

    B

    1 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

    Force24: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Force24 to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations under 30,000 Contacts with no active Custom Objects and clean contact properties land in three to five weeks. Migrations with multiple Custom Object types, Custom Object API coordination overhead, large engagement histories (200,000+ records), or extensive journey and segment documentation move to eight to twelve weeks. Discovery and scoping adds two to three weeks regardless of data volume. We build in a one-week buffer for stakeholder review and correction cycles.

Adjacent paths

Related migrations to explore

Ready when you are

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