CRM migration
Field-level mapping, validation, and rollback between Planfix and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Planfix
Source
Twenty CRM
Destination
Compatibility
8 of 10
objects map 1:1 between Planfix and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Planfix to Twenty CRM is a structural migration from a multi-module business platform to a focused open-source CRM. Planfix stores Contacts, Companies, and Deals alongside Tasks, Projects, Processes, and Scripts in a fluid object model where almost every label can be renamed by the workspace admin. Twenty CRM uses a standard Person-Company-Opportunity-Object model with typed fields and an AGPL-3.0 license that returns data ownership to the business. We begin every Planfix migration by querying the field schema from the API before writing a single record, because custom field IDs vary per workspace and using the wrong column reference corrupts the destination data. We preserve cross-object linkages (task-to-contact, project-to-task) by resolving Planfix internal IDs during transformation. Processes and Scripts do not migrate; we deliver a written inventory of every active automation with a recommended Twenty workflow equivalent for the customer's admin to rebuild post-migration.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Planfix 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.
Planfix
Contact
Twenty CRM
Person
1:1Planfix Contacts map directly to Twenty Person records. We preserve the contact's name, email, phone, and all custom properties as custom fields on the Person object. The email address serves as the dedupe key during import. Linked tasks and files transfer to the Person's activity timeline and attachments. Planfix contact history logs migrate as Note records attached to the Person.
Planfix
Company
Twenty CRM
Company
1:1Planfix Companies map directly to Twenty Company records. The company's name, domain, address, and custom fields transfer to matching Twenty Company fields. We create the Company record before any Person import so that Person-Company lookups are satisfied at the moment of Person insert. Companies without contacts in Planfix still migrate as standalone Company records.
Planfix
Deal
Twenty CRM
Opportunity
1:1Planfix Deals map to Twenty Opportunity records. The deal name, amount, stage, expected close date, and owner transfer to the equivalent Twenty Opportunity fields. Planfix custom deal properties become custom fields on the Opportunity. If the Planfix deal has a linked Contact, we resolve that Person record and attach it to the Opportunity's Person id during migration.
Planfix
Task
Twenty CRM
Task or Custom Object
1:1Planfix Tasks map to Twenty Task records when the task tracks an action item (assignee, due date, status). Tasks with sub-checklists migrate with checklist items preserved as custom fields or serialized into a text field. Tasks linked to a Contact or Company resolve the Person or Company id at migration time. Tasks linked to a Project may require a custom Project object in Twenty if the customer's workflow depends on project-level task grouping.
Planfix
Project
Twenty CRM
Custom Object (Project) or Workspace Tag
lossyPlanfix Projects group tasks and carry their own custom fields, dates, and assignees. Twenty CRM does not have a native Project object. We create a custom Project object in Twenty during schema setup, with fields for project name, dates, status, and a lookup to the responsible Company. Tasks link to their parent Project via the custom lookup. The customer chooses the exact schema during scoping based on how project data is used post-migration.
Planfix
Custom Fields
Twenty CRM
Custom Fields
lossyEvery Planfix workspace has its own custom field definitions with different names, types, and API IDs. We query the field schema from the Planfix API before mapping any record. We then create matching custom fields in Twenty's Settings → Data Model, using the equivalent field type (text, number, date, select, multi-select, checkbox). We map Planfix field values to Twenty custom field values during the transform phase. Skipping this step means custom field values write to the wrong columns or are silently dropped.
Planfix
Workgroup
Twenty CRM
Workspace or Role
1:1Planfix Workgroups group users and set shared permissions. Plan X allows up to 100 workgroups. We export workgroup memberships and roles and map them to Twenty Workspace members or Role assignments. If the customer uses workgroups to segment data access, we document the access model so the customer can configure equivalent Twenty workspace permissions post-migration.
Planfix
Time Log
Twenty CRM
Custom Field on Task or Activity
1:1Time logged against Planfix tasks (via timers or manual entry) migrates as structured data. We carry over duration, date, and user attribution as custom fields on the migrated Task record. If the customer tracks billable hours, we create a custom hours field on the Task and a rate field on the Person or Company for time-cost calculations in reporting.
Planfix
Report
Twenty CRM
Data Export (for rebuild)
1:1Planfix Reports are built with Planfix's report builder and exportable as CSV or XLSX. The report definitions themselves are not portable. We export the underlying data that feeds each report as a structured CSV during migration. The customer rebuilds complex reports in Twenty or an external BI tool post-migration. Saved report configurations are documented as a handoff artifact.
Planfix
Document Template
Twenty CRM
Not Migrated (Flagged)
1:1Planfix Document Templates use XLSX/XLSM files with template variables. The template files can be exported from Planfix. Variable mappings are workspace-specific and cannot be replayed in Twenty without manual reconfiguration. We export the template files as documentation for the customer's admin to reconfigure using Twenty's templating approach (email sequences, PDF generation via integrations).
| Planfix | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Task | Task or Custom Object1:1 | Fully supported | |
| Project | Custom Object (Project) or Workspace Taglossy | Fully supported | |
| Custom Fields | Custom Fieldslossy | Mapping required | |
| Workgroup | Workspace or Role1:1 | Fully supported | |
| Time Log | Custom Field on Task or Activity1:1 | Fully supported | |
| Report | Data Export (for rebuild)1:1 | Fully supported | |
| Document Template | Not Migrated (Flagged)1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Planfix gotchas
Custom field schemas vary per workspace
API rate limits are tier-gated and low
Task visibility filters cause apparent data loss
Process and Script objects are not portable
Whiteboard content has no export path
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Field schema snapshot and scoping
We authenticate to Planfix via the REST API using a per-account token and query the field definitions for every active object (Contact, Company, Deal, Task, Project). We capture custom field names, types, IDs, and picklist options per workspace. We also extract the full list of active Processes and Scripts with their trigger conditions and action steps. We pair this with a Twenty workspace audit: checking which standard fields exist, confirming admin access for custom field creation, and documenting any known gaps (industry, jobTitle) that require pre-creation before import.
Twenty schema setup and custom field pre-creation
We create the destination schema in Twenty based on the Planfix field snapshot. This includes creating custom fields on Person, Company, Opportunity, and Task objects; creating a custom Project object if the customer's Planfix workflow depends on project-level task grouping; and configuring picklist options that match Planfix dropdown values. We create a custom field mapping document that pairs each Planfix field ID to its Twenty equivalent. Schema setup happens in the customer's Twenty instance (self-hosted or cloud) before any data extraction begins.
Test migration and reconciliation
We run a full migration into the customer's Twenty instance using a representative subset of Planfix data (at least 500 records per object type) to validate field mappings, picklist values, and cross-object lookups. The customer's admin reviews 25-50 randomly sampled records in Twenty against the source data in Planfix and signs off on mapping accuracy. Any field mapping corrections, picklist value mismatches, or relationship resolution failures are documented and corrected before the production migration begins.
Owner and user reconciliation
We extract every distinct Planfix user referenced on Contact, Company, Deal, Task, and Activity records. We map these to Twenty users by email match. Any Planfix user without a matching Twenty account goes to a reconciliation queue for the customer's admin to provision. Owner lookups on migrated records require a valid Twenty user ID; if the user is not provisioned, the record's owner field must be left blank or set to a system placeholder. Migration cannot proceed past this step for records that require owner assignment.
Production migration in dependency order
We run production migration in record-dependency order: Twenty users (manual provisioning, validated), Companies (from Planfix Companies), Persons (with Company id resolved), Opportunities (with Person id and Owner id resolved), Tasks (with Person id, Company id, and Project id resolved), Time Logs (as custom fields on Tasks), Activity history (calls, emails, meetings, notes migrated as Timeline events or Notes on Person and Company). Custom Project objects import last if they link to Tasks. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and Process rebuild handoff
We freeze Planfix writes during the cutover window, run a final delta migration of any records modified during the migration, then mark Twenty as the system of record. We deliver the Process and Script inventory document to the customer's admin team with recommended Twenty workflow equivalents for each automation. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Planfix Processes as Twenty Workflows inside the migration scope; that is documented for the customer's admin or a Twenty implementation partner to handle post-migration.
Platform deep dives
Planfix
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Planfix and Twenty CRM.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
Planfix: Per-account rate limits depend on the paid package tier. Error 9004 is returned for 'Request creation rate limit exceeded'. List endpoints return a maximum of 100 results per request, requiring pagination for larger datasets..
Data volume sensitivity
Planfix doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Planfix to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Planfix to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Planfix
Other ways to arrive at Twenty CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.