CRM migration

Migrate from Formitize to Twenty CRM

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

Formitize logo

Formitize

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between Formitize and Twenty CRM.

Complexity

BStandard

Timeline

24–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Formitize is a modular field-service and paperless-business platform built around forms, jobs, documents, and a lightweight CRM. Teams move from Formitize to Twenty CRM when they want a purpose-built CRM with open-source licensing, full data ownership, and a cleaner per-seat pricing model. The data models diverge structurally: Formitize separates Clients and Contacts as distinct API entities with a one-to-many relationship from the client side, while Twenty uses a unified People object with a companyId relation to Companies. FlitStack AI extracts Formitize data via the Formitize REST API — including custom fields on Clients, Contacts, Jobs, and Assets — and maps each entity into Twenty's standard objects or custom objects where no equivalent exists. We handle the required import-order constraint (Companies load before People, People before Opportunities) and preserve Formitize owner references by matching them to Twenty Workspace Members by email. Workflows, automations, and job-based sequences are disclosed as non-migratable — we export Formitize workflow definitions as a rebuild reference for your Twenty admin.

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

Formitize logo

Formitize

What's pushing teams away

  • Performance degrades when multiple forms are chained into a single workflow, frustrating users who need complex multi-step processes on mobile devices.
  • Custom contact fields and asset custom fields require manual setup per account — no shared configuration templates across an organization.
  • Export capabilities are limited: Smart Table CSV exports are available but there is no unified bulk data export across all modules, complicating data portability.
  • The platform is Australian-focused with GST pricing and regional billing conventions, creating friction for non-Australian customers evaluating the platform.

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

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

Formitize

Client

maps to

Twenty CRM

Company

1:1
Fully supported

Formitize Client maps directly to Twenty Company. Formitize Client name maps to Twenty Company.name, and the Client domain maps to Company.website. The Client's full address fields map to the Twenty Company address composite. Custom fields on the Client record map to Twenty Company custom fields.

Formitize

Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Formitize Contact maps to Twenty Person. Each Formitize Contact belongs to one Client via clientId, which maps to the Twenty Person.companyId relation. Formitize stores contact type or role as a custom field — we preserve it as a custom field on the Twenty Person record for reference. Formitize contacts without a Client are flagged for manual assignment to a Twenty Company.

Formitize

Job

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Formitize Job maps to Twenty Opportunity. The Job name becomes Opportunity.name, the Job description becomes Opportunity.body, and Job status maps to a custom Opportunity.stage select field. The Job's linked Client becomes the Opportunity.companyId link. Job custom fields are mapped to Twenty Opportunity custom fields.

Formitize

Job Status

maps to

Twenty CRM

Custom Opportunity Field

1:1
Fully supported

Formitize Job Status values (e.g., Scheduled, In Progress, Completed, Cancelled) have no native equivalent in Twenty's Opportunity object. We create a custom select field (Job_Status__c) on Twenty Opportunities and map the Formitize status values one-to-one into the custom field options. This preserves your operational workflow state within Twenty's CRM without requiring manual re-entry.

Formitize

Asset

maps to

Twenty CRM

Custom Object (Asset)

1:1
Fully supported

Formitize Assets belong to Asset Types and carry custom column data per type. Since Twenty has no native Asset object, we create a custom object named Asset and map asset name, description, asset type, and client link (via companyId relation) into the custom object. Custom columns from Formitize become custom fields on the Twenty Asset object.

Formitize

Asset Location

maps to

Twenty CRM

Custom Object (Asset) custom fields

1:1
Fully supported

Formitize stores asset latitude/longitude and zone data for physical locations. We create custom fields Latitude__c, Longitude__c, and Location_Zone__c on the Twenty Asset custom object to preserve this geographic context. If Formitize Location Zones are used, those are stored as a text custom field.

Formitize

Formitize User / Owner

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Formitize owner references on Jobs and Contacts are resolved by matching the owner's email address against Twenty Workspace Members. If a Formitize user has no matching email in Twenty, we flag the record and assign it to a fallback Workspace Member designated by your admin before migration.

Formitize

Formitize Custom Fields

maps to

Twenty CRM

Custom Fields on Target Object

1:1
Fully supported

Formitize custom fields on Clients, Contacts, and Jobs are defined in Settings and exposed via the API. Each custom field type (text, number, date, select) maps to the equivalent Twenty field type. We create the custom fields in Twenty under Settings → Data Model before the import runs so the CSV columns resolve correctly.

Formitize

Document / Attachment

maps to

Twenty CRM

Attachment / Note on Related Record

1:1
Fully supported

Formitize document attachments linked to Jobs are preserved as Attachments on the corresponding Twenty Opportunity record. We re-upload files to Twenty's attachment storage. If a Document has no linked Job, we attach it to the related Company or Person record based on the document's context in Formitize.

Formitize

Workflow / Automation

maps to

Twenty CRM

Not Migrated

1:1
Fully supported

Formitize Smart Assist automations and Workflows (Auto Follow Up, Auto Task Actions, Auto Invoice) are not migratable to Twenty. Twenty uses a different event-action workflow model with limited sequencing. We export the Formitize workflow definitions as a JSON reference document so your Twenty admin can rebuild the logic in Twenty's workflow builder.

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.

Formitize logo

Formitize gotchas

High

Limited bulk export mechanism complicates migration scoping

Medium

Custom field schemas are per-account, not organizational templates

Medium

Workflow definitions do not transfer between platforms

Low

Asset zone and GPS data requires explicit extraction

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

  • Twenty requires standard fields to be created before CSV import

    Unlike Formitize, which provides standard CRM fields out of the box, Twenty's People and Companies objects ship with minimal fields. Teams must manually create phone, jobTitle, industry, and other common fields in Settings → Data Model before importing any data — otherwise CSV columns with no matching Twenty field are silently dropped during import. FlitStack delivers a pre-migration field creation checklist that lists every Twenty field your Formitize schema needs so the import resolves cleanly.

  • Twenty's import order constraint can break record relationships

    Twenty enforces referential integrity during CSV import: a Person with a companyId must have the referenced Company record already exist in Twenty. Formitize's flat Contact export includes clientId references but no pre-loaded Company IDs. FlitStack sequences the migration as Companies first, then People with companyId populated from the migrated Company records, then Jobs as Opportunities. If your Formitize exports don't follow this order, the companyId links break and contacts land without a company association.

  • Twenty lacks Formitize's Smart Assist and workflow automation model

    Formitize Smart Assist includes Auto Follow Up, Auto Task Actions, Auto Invoice Chasing, and multi-stage Workflows that trigger based on form submissions and job status changes. Twenty's workflow builder uses a different event-action model with limited sequencing capabilities — native multi-step cadence sequences are not yet available. The automation logic cannot be translated mechanically. We export Formitize workflow definitions as a JSON reference document and surface the gap in the migration plan so your Twenty admin can rebuild the logic manually in Twenty's workflow builder.

  • Formitize's Client-to-Contact one-to-many relationship collapses into a flat People list

    Formitize stores Clients and Contacts as separate API objects with a one-to-many relationship from the client side — one Client can have N Contacts. In Twenty, People records are a flat list linked individually to Companies via companyId. Formitize's structured contact hierarchy (which Contact is the primary billing contact, which is the field technician) has no direct Twenty equivalent. We surface which Formitize contact custom fields encode role information and migrate them as custom fields on the Person record, but the hierarchical grouping by Client requires a custom view or tag to replicate in Twenty.

  • Twenty's API rate limits require batching for large migrations

    Twenty's Pro plan limits API calls to 100/minute and the Organization plan to 200/minute. Formitize has no documented rate limit, but large migrations (50,000+ records) from Formitize require writing records into Twenty's API in batches with throttling to avoid 429 responses. Migrations exceeding 10,000 total records use Twenty's API batch import path rather than CSV upload to maintain throughput. We pre-throttle the write pipeline based on the target Twenty plan's rate limit.

Migration approach

Six steps for a successful Formitize to Twenty CRM data migration

  1. Audit Formitize data and create Twenty field schema

    FlitStack connects to Formitize via API to enumerate all Clients, Contacts, Jobs, Assets, Custom Fields, and Document links. We generate a Twenty field creation checklist: every standard field missing from Twenty (phone on Person, industry on Company, etc.) and every custom field to create in Settings → Data Model. Your Twenty admin creates these fields before we proceed so the import has nowhere to drop data.

  2. Resolve owners and invite Workspace Members

    Formitize owner references are resolved by email match against Twenty Workspace Members. We cross-reference each Formitize user ID with existing Twenty workspace members, and any user without a matching email is flagged immediately. Your admin then decides whether to invite that person to join the Twenty workspace or assign a designated fallback owner for their records. This verification step ensures every migrated record lands with a valid Twenty assignee rather than an unowned state.

  3. Export and map Formitize data via API

    We pull Formitize data in dependency order: Companies first (exported as Formitize Clients), then People (Contacts) with companyId references resolved to the migrated Company UUIDs, then Opportunities (Jobs) with companyId and personId links, then Custom Objects (Assets) with companyId relations, and finally Attachments linked to the target record. Custom fields on each object are included in the export and mapped to the corresponding Twenty custom field definitions.

  4. Run sample migration with field-level diff

    A representative slice of 100–500 records spanning all major entity types — Clients, Contacts, Jobs, and Assets — migrates first as a validation step. We generate a detailed field-level diff that compares source values from Formitize directly against the resulting Twenty record, highlighting any discrepancies in custom field mapping, companyId resolution accuracy, owner assignment correctness, and status-to-custom-select field transformations. This allows you to verify the migration logic works as intended before committing to the full dataset.

  5. Execute full migration with delta-pickup window

    The full migration loads into Twenty using the validated mapping logic. A delta-pickup window of 24 to 48 hours runs after the bulk load to capture any new or modified Formitize records created during the cutover period. All migration operations are recorded in a comprehensive audit trail, and the one-click rollback feature can instantly revert the Twenty workspace to its pre-migration state if data integrity issues are discovered during reconciliation, providing a safety net to address problems without disrupting your production environment.

Platform deep dives

Context on both ends of the pair

Formitize logo

Formitize

Source

Strengths

  • All-in-one FSM platform combines CRM, forms, scheduling, assets, quoting, and invoicing without separate tool subscriptions.
  • Mobile companion app with real-time job status updates keeps field teams synchronized with office operations.
  • Pre-built industry packs for regulated verticals (pest control, food safety, building inspection) reduce initial configuration time.
  • Automation assistants handle recurring tasks: lead follow-up, invoice chasing, appointment reminders, and form actions without manual triggers.
  • JobLink client portal gives customers self-service access to job details, invoices, and documents without contacting the office.

Weaknesses

  • Performance slows noticeably when multiple forms are chained in a single workflow, limiting complex process automation on mobile.
  • Bulk data export across all modules is not natively supported — Smart Table CSV export is the primary extraction method.
  • No public API rate limit documentation creates uncertainty for customers planning automated integrations or migration scripts.
  • Feature request for exporting User Qualifications, Training, Uploads, and Notes to CSV remains unimplemented as of the latest release.
  • Regional pricing in AUD with GST exclusion adds complexity for non-Australian buyers evaluating total cost.
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 Formitize 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

    Formitize: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Formitize-to-Twenty migrations complete in 24–72 hours for under 50,000 total records. The planning phase (Twenty field schema setup, owner resolution) typically takes 1–3 days before data moves. Larger migrations with complex job-asset relationships or extensive custom field schemas extend to 5–10 days. The import-order constraint — Companies before People before Opportunities — is the most time-intensive planning step for Formitize customers with many linked records.

Adjacent paths

Related migrations to explore

Ready when you are

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