CRM migration

Migrate from Fieldproxy to Twenty CRM

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

Fieldproxy logo

Fieldproxy

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Fieldproxy and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Fieldproxy organizes data around field-service operations: customers, jobs, work orders, sites, assets, invoices, and payments. Twenty CRM uses the standard CRM model: People, Companies, Opportunities, Notes, and Tasks, with full support for custom objects. We map Fieldproxy customers to Twenty People, jobs to Opportunities (with status mapped value-by-value to opportunity stages), work orders as linked Opportunity records, and Fieldproxy assets, invoices, and custom fields to Twenty custom objects. Site information becomes Company records with address data. Owner assignment resolves by email match to Twenty workspace members. Fieldproxy workflows, assignment rules, and job-scheduling logic do not migrate — they must be rebuilt in Twenty's Settings → Workflows. All timestamps are preserved as custom datetime fields since Twenty sets CreatedDate at import time. We set up the Twenty data model (fields, custom objects, relations) before data lands, following Twenty's import-order constraint: Companies → People → Opportunities → Custom objects. Prior to migration, we run a data-quality audit to flag missing email addresses and orphaned sites. A validation report is delivered after import, listing any records that could not be matched to Twenty workspace members and recommending fallback owners. The migration runs in read‑only mode on Fieldproxy, leaving your live account untouched until cut‑over.

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

Fieldproxy logo

Fieldproxy

What's pushing teams away

  • G2 reviewers report intermittent technical issues and errors during ticket management, with support response times occasionally delaying urgent resolutions.
  • Documentation coverage is thin — users and migration teams have limited self-service reference material when troubleshooting or scoping data exports.
  • Support responsiveness varies; some reviewers experienced delays when raising non-critical but blocking issues during operational hours.
  • Custom workflow complexity can outpace the platform's ability to surface them clearly, making it harder to audit what automations exist before migrating away.

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

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

Fieldproxy

Customer

maps to

Twenty CRM

People

1:1
Fully supported

Fieldproxy customers map directly to Twenty People. Email, phone, address, and job title fields map to their Twenty equivalents. The primary site association migrates as a companyId relation to the mapped Site → Company record. We also ensure that any custom fields attached to the customer record are transferred as custom fields on the Twenty People object, preserving data completeness.

Fieldproxy

Job

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Fieldproxy jobs map to Twenty Opportunities. The job name becomes Opportunity.name; scheduled_date becomes closeDate; total_amount becomes amount. Job status (New, In Progress, Completed, Cancelled, On Hold) requires value-by-value mapping to Twenty opportunity stages. We also map any custom fields on the job to custom Opportunity fields, ensuring that additional details such as service type and assigned technician are preserved.

Fieldproxy

Job.assigned_technician

maps to

Twenty CRM

Opportunity.ownerId

1:1
Fully supported

The assigned_technician email resolves to a Twenty workspace member by email match. Unmatched technicians are flagged before migration; their records get assigned to a fallback owner. This preserves the owner relationship without creating orphaned records. If multiple technicians exist for a single job, we select the primary assignee based on the most recent work order to maintain accuracy.

Fieldproxy

Job.created_at

maps to

Twenty CRM

Opportunity.originalCreatedAt__c

1:1
Fully supported

Twenty sets Opportunity.CreatedDate at migration time. Original Fieldproxy created_at timestamps are preserved as a custom datetime field (originalCreatedAt__c) for historical reporting continuity and audit purposes. We also capture the updated_at timestamp in a separate custom field (originalUpdatedAt__c) so that the full lifecycle of each record is available for reporting after migration.

Fieldproxy

Job.status

maps to

Twenty CRM

Opportunity.stage

1:1
Fully supported

Fieldproxy job statuses (New, In Progress, Completed, Cancelled, On Hold) map explicitly to Twenty opportunity stages. Each pick-list value from Fieldproxy gets a corresponding stage name and probability in Twenty. Stage-entry timestamps are not natively available and are noted for custom field creation.

Fieldproxy

Job (service_type, assigned_technician)

maps to

Twenty CRM

Opportunity (custom fields)

1:1
Fully supported

Twenty has no native fields for service_type or assigned_technician. These migrate as custom text fields on the Opportunity object. We create these fields before import so the CSV import can populate them without errors. During the pre‑migration field‑creation phase, we also set appropriate field‑level validation rules, such as pick‑list constraints for service_type, to maintain data consistency after import.

Fieldproxy

Work Order

maps to

Twenty CRM

Opportunity

many:1
Fully supported

Fieldproxy allows multiple work orders per job. We attach work_order_id, work_order_number, and description from the most recent work order as custom Opportunity fields (workOrderId__c, workOrderNumber__c). Work order status merges into the same Opportunity.stage value as job status — teams should decide per-record which status is authoritative.

Fieldproxy

Site

maps to

Twenty CRM

Company

1:1
Fully supported

Fieldproxy sites map to Twenty Companies. The site name becomes Company.name; site URL becomes website. Site address fields (street, city, state, postal_code, country) map directly to their Company equivalents. Sites link to customers via the same companyId relation used by the Customer mapping.

Fieldproxy

Asset

maps to

Twenty CRM

Asset (custom object)

1:1
Fully supported

Twenty has no native asset management object. Fieldproxy assets (asset ID, asset name, asset type, company association) migrate as a custom Asset object with custom fields: assetId__c (text), assetName__c (text), assetType__c (select), and companyId (relation to Company). The asset type pick-list values from Fieldproxy carry over as select options.

Fieldproxy

Invoice

maps to

Twenty CRM

Invoice (custom object)

1:1
Fully supported

Fieldproxy invoices map to a custom Invoice object with fields: invoiceId__c, amount__c (currency), invoiceDate__c (date), status__c (select), customerId (relation to People). Invoice status values from Fieldproxy carry over as select options. Each invoice links to the customer it was issued to. All invoice amounts are stored as currency fields, and the original invoice number is retained in a custom field for traceability.

Fieldproxy

Payment

maps to

Twenty CRM

Payment (custom object)

1:1
Fully supported

Fieldproxy payments map to a custom Payment object with fields: paymentId__c, amount__c (currency), paymentDate__c (date), paymentMethod__c (select), invoiceId (relation to custom Invoice object), customerId (relation to People). This preserves the invoice-to-payment hierarchy from Fieldproxy.

Fieldproxy

Note / Attachment

maps to

Twenty CRM

Note

1:1
Fully supported

Fieldproxy notes and attachments migrate as Twenty Notes. Notes attach to the parent record (People, Company, or Opportunity) using Twenty's relation model. File attachments re-upload to Twenty Files. Original note timestamps are preserved. We also map any tags or categories present in Fieldproxy notes to custom tag fields on the Twenty Note, preserving organizational metadata.

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.

Fieldproxy logo

Fieldproxy gotchas

High

Custom Workflows do not export as portable definitions

Medium

API rate limits and bulk endpoints not publicly documented

Medium

Spare Parts inventory requires quantity reconciliation

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 pre-created fields before CSV import

    Twenty's import mechanism creates records only — it does not auto-create fields. All target fields (including custom fields like originalCreatedAt__c, jobId__c, workOrderId__c, assetId__c, and the custom pick-list options for job status and asset type) must exist in Settings → Data Model before the import runs. We deliver a field-creation checklist before data lands so the Twenty workspace is schema-ready before any record is loaded. Skipping this step causes silent failures where fields are absent from imported records.

  • Fieldproxy workflows, assignment rules, and scheduling logic do not migrate

    FlitStack AI migrates data and schema only. Fieldproxy workflows (job assignment rules, notification triggers, SLA timers) are platform-native automation constructs with no equivalent in Twenty's workflow engine. Teams must rebuild these in Settings → Workflows on Twenty. We export Fieldproxy workflow definitions as a rebuild reference document for the Twenty admin. The CTO of Twenty has acknowledged that workflow functionality is actively improving — sequences and multi-step follow-ups require workarounds as of the current release.

  • Twenty API rate limits constrain large-dataset migration speed

    Twenty's cloud API enforces per-minute rate limits: 100 calls/min on Pro, 200 calls/min on Organization. Fieldproxy exports with 10,000+ records require batched ingestion with exponential backoff to avoid 429 errors. Self-hosted instances can configure limits on the server side. We implement retry logic with jitter and paginated exports from Fieldproxy to stay within Twenty's limits. Rate limit errors during import require manual re‑queuing of the failed batch. Before each batch, we compute the optimal chunk size based on the target's rate‑limit ceiling and set a conservative request rate of 80 calls/min to reduce the chance of hitting a 429 response.

  • Twenty standard fields missing industry, employee count, and annual revenue

    A GitHub issue (twentyhq/twenty#13953) documents that Twenty's standard People and Companies objects lack industry, employee count, annual revenue, multiple email addresses, and contact type fields — all standard in HubSpot, Salesforce, and GoHighLevel. These migrate as custom fields (industry__c, employeeCount__c, annualRevenue__c) on the Company object. Downstream integrations expecting standard fields require adjustment; reports built on these fields need to be recreated in Twenty. During the pre‑migration audit we identify missing standard fields and create them in Twenty's Settings → Data Model. We also document the Fieldproxy‑to‑Twenty field mapping so Zapier or REST integrations can be updated. After import, a validation script confirms that the custom fields are populated correctly.

Migration approach

Six steps for a successful Fieldproxy to Twenty CRM data migration

  1. Audit Fieldproxy data model and schema

    We pull a full export of all Fieldproxy objects: customers, jobs, work orders, sites, assets, invoices, payments, and all custom fields. We count records per object, identify pick-list values for status and type fields, note which fields are empty across >20% of records (candidates for exclusion), and map the site-to-customer relationship structure. This audit generates the scope document and identifies which custom fields are actively used versus dead weight to leave behind.

  2. Pre-create Twenty fields and custom objects

    Before any import, we create all target fields in Twenty's Settings → Data Model. This includes standard fields (People, Company, Opportunity), custom fields for timestamps (originalCreatedAt__c, originalUpdatedAt__c), traceability IDs (jobId__c, workOrderId__c), and pick-list options for job status and asset type. We also create the custom Asset, Invoice, and Payment objects with their relation fields. Twenty requires fields to exist before CSV import — this step prevents import failures and ensures data lands in the right columns on the first run.

  3. Invite and verify Twenty workspace members

    Fieldproxy owner assignment uses the assigned_technician email. We match these emails to Twenty workspace members by inviting all non-existent users before the migration. Unmatched technicians are flagged in a pre-flight report with a fallback owner assignment option. Owner resolution must complete before Opportunity import since Opportunity.ownerId requires a valid Twenty user — records assigned to non-existent users fail silently or roll back.

  4. Run sample migration with field-level diff

    A representative sample (100–300 records spanning customers, jobs, work orders, sites, and custom objects) migrates first. We generate a field-level diff comparing source Fieldproxy values to destination Twenty values for every mapped field. This catches incorrect value mappings (e.g., status enums), missed transformations (e.g., date format), and broken relations (e.g., orphaned companyId lookups). The diff report is reviewed with the team before the full migration commits. Any field mapping errors are corrected and the sample re-runs until clean.

  5. Execute full migration with delta pickup

    The full migration runs against Twenty with a 24–48 hour delta pickup window at the end. During the window, any Fieldproxy records modified or created in-flight are captured and merged into Twenty. An audit log records every operation (create, update, link) with source system IDs. One-click rollback reverts all imported records if post-migration reconciliation reveals data integrity issues. The Fieldproxy account remains fully operational throughout — scoped read access only, no write operations.

Platform deep dives

Context on both ends of the pair

Fieldproxy logo

Fieldproxy

Source

Strengths

  • 24-hour deployment with dedicated Solution Consultant — workspace is live and wired to QuickBooks, Stripe, Calendar, and WhatsApp by day one.
  • Unlimited-users pricing model — no per-seat cost escalation as teams grow.
  • YC-backed with 400+ customers, 50K+ technicians, and 99.9% uptime SLA.
  • AI-powered scheduling, task routing, and spare-parts replenishment are built into the platform rather than add-ons.
  • Mobile apps for iOS and Android with offline-first sync for field technicians in low-connectivity areas.

Weaknesses

  • API documentation is not publicly indexed — rate limits, bulk endpoints, and schema details are not available for pre-migration assessment.
  • Custom workflow automations are not exportable and must be manually rebuilt on the destination platform.
  • Documentation quality is a known complaint — limited self-service reference material for technical users and migration teams.
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 Fieldproxy 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

    Fieldproxy: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Fieldproxy-to-Twenty migrations complete in 48–72 hours for under 10,000 total records, provided the target fields are pre‑created in Twenty's Settings → Data Model. Larger setups with 50,000+ records or complex custom‑object schemas (assets, invoices, payments) extend to 5–7 days. The longest planning step is the schema‑setup phase, during which we also run a data‑quality audit, resolve unmatched owner emails, and generate a validation report. A 24–48 hour delta‑pickup window is scheduled after the bulk load to capture any in‑flight changes, ensuring Twenty reflects the final state at cut‑over.

Adjacent paths

Related migrations to explore

Ready when you are

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