CRM migration

Migrate from Factoreal to Twenty CRM

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

Factoreal logo

Factoreal

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

50%

6 of 12

objects map 1:1 between Factoreal and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Factoreal to Twenty CRM is a cross-model migration: Factoreal organizes customer data around marketing-centric objects (Contacts, Segments, Campaigns, Automations) with no public REST API, while Twenty CRM is a self-hosted open-source platform built around the conventional CRM object model (People, Companies, Opportunities, Tasks, Notes) with a documented GraphQL API. Because Factoreal exposes no API, we extract all data through coordinated CSV export cycles, then transform and load records into Twenty using its GraphQL mutations. We preserve contact behavioral data and campaign attribution, reconstruct segment membership as saved filter views in Twenty, and document automation workflows as written specifications for manual rebuild. We do not migrate automations as executable rules, nor do we transfer website visitor session data or Factoreal's native reporting artifacts, as these are not exportable in structured form.

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

Factoreal logo

Factoreal

What's pushing teams away

  • The platform lacks a documented public REST API, which limits automation capabilities and makes integrations with custom tooling difficult to maintain over time.
  • Customer base is small — only two verified reviews on major platforms as of early 2026 — which means limited community resources, third-party integrations, and peer knowledge to draw on.
  • Some customers report that switching contacts from a prior contact management platform required manual data cleaning and was a multi-step process despite support team involvement.
  • The flat-rate pricing model may become less attractive as teams scale beyond the feature set included at the $89 tier, with no clear upgrade path documented publicly.

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

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

Factoreal

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Factoreal Contact records map to Twenty CRM Person objects. We extract contact profiles from CSV including name, email, phone, and custom fields, then transform them to Twenty's Person GraphQL mutation format. Factoreal's source attribution fields (how the contact entered the system) migrate as text fields on the Person record. Any duplicate detection runs against email as the canonical dedupe key before insert.

Factoreal

Contact Custom Fields

maps to

Twenty CRM

Person (custom fields)

lossy
Fully supported

Factoreal custom fields on Contact records map to identically named custom fields on Twenty CRM's Person object. We identify all custom field definitions during discovery, export their per-record values from the CSV, and create matching custom fields in Twenty's Settings → Data Model before import. Field type mapping (text to text, number to number, date to date) is validated against the CSV header values to catch formatting mismatches early.

Factoreal

Segment

maps to

Twenty CRM

View (saved filter)

lossy
Fully supported

Factoreal Segments are defined by filter rules on contact attributes and behavioral events. We extract segment membership logic as written filter criteria during the discovery phase, then create equivalent saved Views in Twenty CRM. Each View is named to match the original segment and scoped to the Person object with matching filter conditions. Segment membership (which contacts belong to which segment) is preserved by assigning a multi-select picklist or tag-style field to each Person rather than as a native segmented list object.

Factoreal

Tag

maps to

Twenty CRM

Tag

1:1
Fully supported

Factoreal tags on contacts migrate to Twenty CRM tags on the Person record. We export the full tag list per contact from CSV and create matching tags in Twenty, preserving the many-to-many relationship across both systems. Tag names are normalized (lowercase, stripped of special characters) to ensure consistent matching.

Factoreal

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Factoreal company data (if stored as a related record rather than fields on Contact) maps to Twenty CRM Company. We extract company name, domain, address, and industry from the CSV export and create Company records before any Person records that reference them, satisfying the lookup dependency at migration time.

Factoreal

Campaign

maps to

Twenty CRM

Opportunity

1:many
Fully supported

Factoreal Campaign records hold subject, content, send history, and engagement metrics. The campaign structure maps partially to Twenty CRM's Opportunity model for pipeline tracking, but Factoreal's campaign engagement data (open rates, click rates, send timestamps) does not have a direct Twenty CRM equivalent. We preserve open and click metrics as custom number fields on the Opportunity record, and campaign send history as Activity notes for attribution purposes.

Factoreal

Campaign Send History

maps to

Twenty CRM

Activity / Task

1:1
Fully supported

Individual campaign send events map to Twenty CRM Activity or Task records linked to the relevant Person. We preserve send timestamp, direction (outbound), and content reference. Inbound replies and bounces map to inbound Activity records with a type discriminator field.

Factoreal

SMS / WhatsApp Message History

maps to

Twenty CRM

Activity / Task

1:1
Mapping required

Factoreal SMS and WhatsApp message logs export as part of campaign and contact data. We preserve send timestamp, direction, and message content as Activity records in Twenty CRM's timeline, using a type discriminator (SMS or WhatsApp) on the Activity record. The Person lookup ties each message to the correct contact record.

Factoreal

Automation Workflow

maps to

Twenty CRM

Documentation (no code migration)

lossy
Fully supported

Factoreal automation workflows define trigger conditions and multi-step action sequences across channels. These are not stored in a portable exportable format. We document the full workflow graph — triggers, conditions, delays, and action steps — as a written specification that the customer's admin uses to manually configure equivalent logic in Twenty CRM or an external automation tool. This is scoped as a parallel workstream outside the data migration.

Factoreal

Email Template

maps to

Twenty CRM

Note / Attachment (no code migration)

lossy
Fully supported

Factoreal email templates include HTML content and dynamic merge field placeholders. We extract template HTML from the CSV or application export, convert merge field syntax to a generic placeholder format, and store the result as a Note attached to a dedicated Template reference record in Twenty CRM. Visual rendering and dynamic personalization logic do not migrate as executable template code.

Factoreal

E-commerce Data (Orders, Products)

maps to

Twenty CRM

Custom Objects

1:many
Mapping required

Factoreal's built-in e-commerce integration captures order and product data. These map to Twenty CRM as custom objects (e.g., Product and Order) that we design and create in the destination schema before migration. Order records reference the Person (customer) and include line item data, transaction amounts, and dates. Product records include SKU and description. This mapping requires custom field schema creation in Twenty's Data Model during the schema design phase.

Factoreal

Owner

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Factoreal users and owners referenced on contacts, campaigns, and automations map to Twenty CRM WorkspaceMembers. We extract owner email addresses from the CSV and match them against Twenty workspace members. Any owner without a matching workspace member is held in a reconciliation queue for the customer's admin to provision before Person record import resumes.

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.

Factoreal logo

Factoreal gotchas

High

No public REST API for automated migration

High

Website visitor session data is not exportable

Medium

Contact migration required hands-on support in practice

Medium

Automation workflows do not migrate as executable rules

Low

Limited third-party integration ecosystem

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

  • Factoreal has no public REST API — all extraction is CSV-based

    Factoreal does not publish a REST API for developer access. All contact, campaign, behavioral, and order data must be extracted via CSV exports generated from the application UI. There is no bulk endpoint, no webhook export, and no programmatic way to pull data at scale. We plan for CSV-based extraction cycles and advise customers to request a full data export early in the project so they can review the data shape before migration begins. Large contact lists may need to be split across multiple export batches, and each batch requires field-level validation before transformation.

  • Website visitor session data is not exportable from Factoreal

    Factoreal's website visitor tracking runs on cookie-based session attribution tied to its own JavaScript embed. Session-level records — page views, visit frequency, and browsing behavior — cannot be exported as structured data. Any reporting that relies on Factoreal's native visit data will not transfer. We scope this as a known gap in the migration scope and recommend exporting aggregate metrics manually if historical web engagement data is required in the destination CRM.

  • Twenty CRM's self-hosted deployment requires API credential coordination

    Twenty CRM's GraphQL API access depends on how the instance is deployed. Self-hosted deployments on PikaPods, DigitalOcean, or bare Linux require the customer to expose the API endpoint and provide valid authentication credentials before migration scripts can run. Cloud-hosted Twenty accounts use a managed API with different credential handling. We coordinate API access during the discovery phase and adjust the import strategy (local script vs. hosted API calls) accordingly. Misconfigured API access is the most common cause of delay in self-hosted Twenty migrations.

  • E-commerce order and product data requires custom object schema in Twenty

    Factoreal's built-in e-commerce integration captures order and product data natively. Twenty CRM has no native e-commerce module, so order and product records must be modeled as custom objects using Twenty's Data Model settings. We create the Product and Order custom objects with their field definitions during the schema design phase before any data import. Customers with complex order histories (line items, refunds, tax amounts) should budget additional time for custom field design and validation mapping.

  • Factoreal contact export files frequently require preprocessing

    A verified G2 reviewer noted that importing contacts from a prior platform into Factoreal required hands-on data cleaning and support assistance. We treat this as evidence that Factoreal's own export files frequently contain duplicates, missing required fields, or encoding issues. We run a preprocessing step on all Factoreal CSV exports before transformation, including dedupe by email, null field handling, and character encoding normalization. This preprocessing step adds a one-to-two-day buffer to the migration schedule for datasets over 5,000 contacts.

Migration approach

Six steps for a successful Factoreal to Twenty CRM data migration

  1. Discovery and export coordination

    We audit the Factoreal account to identify all contact fields (standard and custom), segment definitions, campaign records, automation workflows, email templates, and any e-commerce order and product data. Because Factoreal has no API, we coordinate with the customer to request full CSV exports from the application UI early in the project. We review the CSV headers against the field inventory to validate completeness before transformation begins. We also confirm the Twenty CRM deployment type (self-hosted or cloud-hosted) and obtain GraphQL API credentials for the target instance.

  2. Schema design in Twenty CRM

    We design the destination schema in Twenty CRM, which means creating custom fields on Person and Company objects for any Factoreal contact attributes that do not map to standard Twenty fields, and designing custom objects for order and product data if e-commerce history is in scope. We create saved Views in Twenty that correspond to each Factoreal segment definition. All schema changes are deployed into the Twenty instance before any data import to avoid import failures due to missing field definitions.

  3. CSV preprocessing and transformation

    We run a preprocessing step on each Factoreal CSV export batch: deduplication by email address, null and blank field handling, character encoding normalization (UTF-8), date format standardization, and phone number format normalization. Any missing required fields are flagged for customer review rather than filled silently. The transformation step maps Factoreal field names and values to Twenty CRM GraphQL input types and creates the JSON payload for the import script.

  4. Staging migration and reconciliation

    We run a full migration into the Twenty CRM staging environment using production-like data volume. The customer's team reconciles record counts (Persons in, Companies in, Activities in), spot-checks 20-30 random records against the source Factoreal export, and validates that segment Views correctly filter the expected contacts. Any field mapping corrections or schema adjustments are made in this phase before production migration begins.

  5. Production migration in dependency order

    We run production migration in record-dependency order: WorkspaceMembers (resolved by email match), Companies (if present in source), Persons (with custom field values populated), Activities (Tasks, Events linked to Person records), Custom Objects (Orders, Products), and saved Views (segment reconstructions). Each phase emits a row-count reconciliation report before the next phase begins. The Factoreal account is placed in read-only mode during the final delta migration window to capture any records modified after the initial export.

  6. Cutover, validation, and automation documentation delivery

    We enable Twenty CRM as the system of record after the final delta migration is complete and reconciled. We deliver the automation workflow documentation — a written specification of every Factoreal automation with its trigger, conditions, delays, and action steps — to the customer's admin team. We do not rebuild Factoreal automations as code inside the migration scope. We support a five-day hypercare window where we resolve reconciliation issues and answer data questions raised during user adoption.

Platform deep dives

Context on both ends of the pair

Factoreal logo

Factoreal

Source

Strengths

  • Unified omnichannel delivery across email, SMS, WhatsApp, and social from one dashboard.
  • E-commerce data (orders, products) is natively available without requiring a separate integration.
  • ML-driven customer insights are surfaced automatically from behavioral data.
  • Email builder is accessible to non-designers with reusable template management.
  • Website visitor tracking via cookie-based session monitoring is included.

Weaknesses

  • No publicly documented REST API limits programmatic access and third-party tooling.
  • Very small market footprint with minimal independent reviews or community resources.
  • Platform lacks transparency on tier-specific feature gating and upgrade paths.
  • E-commerce tracking is built-in but limited to Factoreal's own integration ecosystem.
  • Website visitor session data is not exportable for use in external BI tools.
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 Factoreal 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

    Factoreal: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your Factoreal 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 three and five weeks for accounts under 15,000 Contacts with no e-commerce data and a straightforward field mapping. Migrations involving order and product custom objects, large CSV export batches requiring multiple preprocessing cycles, or a self-hosted Twenty instance with custom API configuration move to seven to twelve weeks. The timeline is driven primarily by data quality in the Factoreal export files and the complexity of custom object schema design in Twenty CRM.

Adjacent paths

Related migrations to explore

Ready when you are

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