CRM migration

Migrate from Fergus to Twenty CRM

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

Fergus logo

Fergus

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Fergus and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Fergus organizes field service operations around Jobs, Quotes, Invoices, and Customers with site-level locations. Twenty CRM uses a People-Companies-Opportunities model with a flexible custom-object layer. The migration translates Fergus Customers into Twenty People (for individual contacts) or Companies (for organization-level records), with site data merged into the company address fields. Fergus Jobs map to Twenty Tasks linked to the parent company or person record, while Fergus Quotes become Twenty Opportunities with amount and stage preserved. Fergus Invoice records have no native equivalent in Twenty's CRM model — FlitStack migrates invoice amounts and status as custom fields on the Opportunity for financial reference, but the invoice itself must be rebuilt in Twenty's financial module or a connected accounting tool. Fergus custom fields require pre-creation in Twenty's Settings → Data Model before the CSV import runs, a constraint that shapes the migration sequencing. FlitStack AI extracts Fergus data via its REST API (100 req/min rate limit), transforms the JSON payloads into Twenty's CSV import format, and loads through Twenty's /import endpoint with batched requests respecting the 200 calls/minute ceiling on Organization-tier instances. Workflows, pricing automation, and supplier integrations do not migrate — FlitStack exports the Fergus workflow definitions as a rebuild reference for Twenty's workflow builder.

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

Fergus logo

Fergus

What's pushing teams away

  • Navigational friction when editing invoices — changing margins on materials and moving between screens feels fiddly, per Capterra reviews
  • Limited reporting and analytics depth that makes it difficult to extract meaningful business insights from historical job data
  • Scaling limitations as businesses grow beyond basic job management into complex project tracking or multi-location operations
  • Integration limitations with non-standard accounting software that forces some businesses to maintain duplicate records or manual exports

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

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

Fergus

Customer

maps to

Twenty CRM

People

1:1
Fully supported

Fergus Customer records with an individual name map directly to Twenty People. Standard fields transferred include first name, last name, email address, phone number, and job title. FlitStack performs deduplication checks to ensure that multiple site contacts existing under one organization do not create duplicate People records in Twenty.

Fergus

Customer

maps to

Twenty CRM

Companies

1:many
Fully supported

Fergus Customers that represent organizations — identified by having multiple sites or jobs associated with the account — split into Twenty Companies. Individual contact records under that customer become Twenty People linked via companyId. FlitStack resolves this by checking for multiple site records on one Fergus Customer.

Fergus

Site

maps to

Twenty CRM

Companies (address fields)

1:1
Fully supported

Fergus Site stores location address, contact name, and phone as a separate entity from the Customer record. FlitStack identifies the primary site by usage frequency or customer-set default, then merges its address into the Company record's address fields. Secondary sites attach as additional address Notes labeled with site name, or as a custom Address relation object if your Twenty workspace employs that pattern.

Fergus

Job

maps to

Twenty CRM

Tasks

1:1
Fully supported

Fergus Job maps to Twenty Task linked to the parent Company or People record. Job title, description, scheduled date, and assigned technician transfer. Fergus job status (Pending, In Progress, Completed) maps to Twenty Task status (To Do, In Progress, Done).

Fergus

Quote

maps to

Twenty CRM

Opportunities

1:1
Fully supported

Fergus Quote with line items and total amount maps to Twenty Opportunity. The Opportunity Name pulls from the Quote title or related Job name. Quote amount becomes Opportunity.amount, and Quote stage (Draft, Sent, Accepted, Lost) maps to Opportunity.stageName pick-list values.

Fergus

Invoice

maps to

Twenty CRM

Opportunity (custom fields)

1:1
Fully supported

Fergus Invoice has no direct equivalent in Twenty's standard objects. FlitStack migrates invoice total, balance due, and payment status as custom fields on the linked Opportunity record. The invoice line items become Notes attached to the Opportunity for audit trail purposes.

Fergus

Asset

maps to

Twenty CRM

Custom Object (Assets)

1:1
Fully supported

Fergus Asset records (equipment, serial numbers, maintenance schedules) migrate to a Twenty custom object named 'Asset'. Fields for asset name, type, serial number, and last service date transfer. The Asset links to the Company record via a relation field created during migration setup.

Fergus

Pricing Tier

maps to

Twenty CRM

Custom field on Companies

1:1
Fully supported

Fergus Pricing Tiers assign customer-specific material markup percentages and labor rate overrides. FlitStack migrates the assigned tier name as a custom pick-list field (Pricing_Tier__c) on the Twenty Company record. Tier rate tables — the actual percentage markups and rate overrides — require manual rebuild in Twenty's workflow conditions or a connected pricing calculator tool.

Fergus

Supplier

maps to

Twenty CRM

Companies (relation)

1:1
Fully supported

Fergus Supplier records map to Twenty Companies with a custom 'Supplier' type label. The supplier's contact name, email address, and standard payment terms transfer directly. Supplier Companies link to Purchase Order records via Opportunity or custom object relations for downstream purchasing workflow continuity.

Fergus

Purchase Order

maps to

Twenty CRM

Custom Object (Purchase Orders)

1:1
Fully supported

Fergus Purchase Orders attach to Jobs and link to Supplier records for material sourcing. FlitStack migrates PO number, total amount, current status, and linked supplier reference to a custom Purchase Order object created in Twenty. PO line items transform into Notes attached to the Purchase Order record for complete audit trail preservation.

Fergus

Attachment / File

maps to

Twenty CRM

Notes (with attachment)

1:1
Fully supported

Fergus file attachments on Jobs, Quotes, or Invoices are downloaded from storage and re-uploaded to Twenty Notes linked to the parent record. Image files and PDF documents store as attachments within the Note body for native viewing. File size limits imposed by Twenty's storage configuration apply to this migration step.

Fergus

User / Technician

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Fergus Users and assigned Technicians resolve by email address match against Twenty Workspace Members. Unmatched users are flagged in the migration report before processing — your team must invite them to Twenty first, or FlitStack assigns their records to a designated fallback workspace member.

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.

Fergus logo

Fergus gotchas

High

100 req/min API rate limit constrains bulk exports

Medium

Customer pricing tier data requires explicit mapping

Medium

Quote and invoice warning badges are state-dependent

Medium

No documented public schema for custom fields

Low

Job photos and attachments require separate file export

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

  • Fergus invoices have no native destination in Twenty's standard objects

    Fergus generates invoices with line items, tax calculations, and payment allocation that have no direct equivalent in Twenty's Opportunities-Notes-Tasks model. FlitStack migrates invoice totals, balances, and payment status as custom fields on the linked Opportunity record, and invoice line items become Notes with attachment references. However, Twenty's native invoicing module (if used) or a connected accounting integration must be rebuilt separately. Teams relying on Fergus invoice history for financial reporting should plan for a post-migration reconciliation step or export Fergus invoices to PDF archives linked in Twenty.

  • Twenty requires fields to exist before CSV import — a sequencing constraint Fergus doesn't have

    Fergus allows custom fields to be created at any time and populated via API without pre-declaration. Twenty enforces that all fields exist in Settings → Data Model before data can land via the /import endpoint. FlitStack addresses this by creating the full field schema in Twenty's Data Model before any import batch runs. For Fergus setups with 20+ custom fields across Jobs, Quotes, and Customers, this pre-creation phase adds a validation step to the migration plan — mismatched field names between Fergus exports and Twenty's declared schema surface during this step, not during the load.

  • Fergus site-to-customer hierarchy flattens into a 1:N company-person model in Twenty

    Fergus allows a Customer record to have multiple Sites, each with its own address, contact, and phone. Twenty's Company record holds one address, and secondary locations are not a native concept. FlitStack migrates the primary Site address to the Company record and surfaces additional sites as Notes with address content, or as a custom Address relation object if your Twenty workspace uses that pattern. The original Fergus site-to-customer relationship is preserved as a reference so no location data is orphaned.

  • Fergus API rate limit of 100 req/min constrains extraction throughput

    Fergus enforces a 100 requests per minute rate limit per company, shared across all API endpoints. Large Fergus workspaces with 50,000+ records (Jobs, Quotes, Invoices, Assets) require paginated extraction loops that slow under this constraint. FlitStack parallelizes extraction across multiple API token scopes where available and implements exponential backoff with retry headers (x-ratelimit-reset) to stay within the limit without losing records. The extraction phase for a 30,000-record Fergus account typically runs 4–6 hours under this constraint.

  • Fergus pricing tier rates require manual rebuild in Twenty's workflow or a connected tool

    Fergus Pricing Tiers store per-customer material markup percentages and labor rate overrides. Twenty has no native equivalent — the assigned tier name can migrate as a custom pick-list field on the Company, but the actual rate calculations (markup %, labor rate overrides) must be rebuilt. FlitStack exports the Fergus pricing tier definitions as a structured JSON reference file documenting each tier's rate rules so your Twenty admin can recreate them as workflow conditions or a custom pricing calculator.

Migration approach

Six steps for a successful Fergus to Twenty CRM data migration

  1. Audit Fergus data and map to Twenty schema

    FlitStack connects to Fergus via API using your credentials and extracts the full object inventory: Customers, Sites, Jobs, Quotes, Invoices, Assets, Suppliers, Purchase Orders, and custom fields. We audit record counts, identify duplicate customers across sites, and flag Fergus records with missing email addresses (which block Twenty relation mapping). The output is a data audit report and a mapping document that defines which Fergus objects map to which Twenty objects and which records require manual resolution before migration.

  2. Create Twenty fields and custom objects in Data Model

    Before any data lands, FlitStack creates all required fields in Twenty's Settings → Data Model. This includes custom fields for invoice data (Invoice_Number__c, Invoice_Total__c, Balance_Due__c, Invoice_Status__c), custom pick-list values for job and quote status, and the Asset and Purchase Order custom objects. We validate that every Twenty field API name matches the CSV column headers in the import file so no fields are orphaned during the load.

  3. Resolve users and import in dependency order

    Twenty requires Companies to exist before People can reference them via companyId, and People before Opportunities can reference them. FlitStack sequences the import: Companies first (from Fergus Customers with organization flag), then People (individual contacts linked by email), then Opportunities (Quotes mapped to deal records with amount and stage), then Tasks (Jobs linked to their parent records). Workspace Members are invited or mapped by email before the People import runs so owner assignment resolves cleanly.

  4. Run sample migration with field-level diff

    A representative slice of 100–300 records across all Fergus object types migrates first. FlitStack generates a field-level diff comparing the source Fergus values against the Twenty destination values for every mapped field. You verify that Fergus invoice totals landed in the correct custom Opportunity fields, that Job status values translated correctly through the value mapping table, and that site addresses merged into the Company record as expected. Approval of the sample unlocks the full migration run.

  5. Execute full migration with delta pickup window

    The full data load runs against Twenty's import endpoint, batched in 2,000-record segments to respect API rate limits. A delta-pickup window (24–48 hours) captures any Fergus records created or modified during the cutover period so Twenty reflects the final state at go-live. FlitStack generates an audit log of every record operation, and one-click rollback reverts the Twenty workspace to the pre-migration state if reconciliation uncovers unexpected mapping results.

Platform deep dives

Context on both ends of the pair

Fergus logo

Fergus

Source

Strengths

  • Job lifecycle management from quote through invoice in a single platform
  • Customer-specific pricing tiers for trade businesses with varied customer rate structures
  • Accounting integrations with Xero and QuickBooks Online that sync invoices and payments
  • Trade supplier integration for automated material pricing during quoting
  • Mobile-capable job scheduling with staff visibility and task assignment

Weaknesses

  • Limited reporting and analytics depth compared to enterprise FSM platforms
  • Navigation and UI friction when editing invoices or changing material margins
  • API documentation is sparse with no publicly documented bulk export endpoint
  • Smaller ecosystem of third-party integrations compared to ServiceTitan or Simpro
  • No published migration tooling or export assistant within the product
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 Fergus 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

    Fergus: 100 requests per minute per company, shared across all endpoints.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Fergus-to-Twenty migrations complete in 48–72 hours for under 25,000 total records. Complex setups with 100+ custom fields, multi-site customer hierarchies, or 50,000+ records extend to 5–8 days. The longest phase is the pre-creation of Twenty custom fields in the Data Model and the sample migration validation before the full run commits. Fergus API rate limits (100 req/min) also affect extraction speed for large record volumes.

Adjacent paths

Related migrations to explore

Ready when you are

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