CRM migration

Migrate from JobTread to Twenty CRM

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

JobTread logo

JobTread

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between JobTread and Twenty CRM.

Complexity

BStandard

Timeline

2–5 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

JobTread is a construction-management platform where the CRM layer centers on Customers, Companies, Jobs, Estimates, and Purchase Orders — tied together by a budget-first data model where cost items and line items feed into job costing and financial tracking. Twenty CRM is a general-purpose open-source CRM built on People, Companies, Opportunities, Tasks, and Notes, with support for custom objects and custom fields. The migration from JobTread to Twenty CRM is fundamentally a schema translation: construction-specific objects (Jobs, POs, Change Orders) map to Opportunities and custom fields, while cost-item hierarchies require flattening or JSON consolidation. FlitStack AI reads JobTread data via the JobTread Open API and maps it to Twenty's CSV import format. The import order enforced by Twenty — Companies first, then People, then Opportunities — is the backbone of the migration sequence. Owner resolution uses email matching against Twenty workspace members. Attachments are re-uploaded to Twenty storage with original JobTread IDs preserved for reference. Workflows, cost-catalog entries, and portal configuration do not migrate — those are destination-side rebuild items that FlitStack documents as a rebuild reference exported from JobTread before the cutover window opens.

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

JobTread logo

JobTread

What's pushing teams away

  • Per-user pricing adds up quickly for larger crews; external user definitions are unclear and some teams discover hidden internal-user counts that inflate the monthly bill.
  • Workflow automations are tightly coupled to JobTread's event model and cannot be bulk-reversed, making migration riskier when workflows have been running for years.
  • Advanced features like AIA-style payment applications and Heritage vendor catalog integration are recent additions; some teams feel the feature roadmap moves slowly relative to their needs.
  • Teams with existing QuickBooks-only workflows find that the integrated accounting model is redundant and prefer a dedicated job-costing add-on to their current accounting software.

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

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

JobTread

Customer

maps to

Twenty CRM

People

1:1
Fully supported

JobTread Customers (the primary point of communication on jobs) map directly to Twenty People records. Name, email, phone, job title, and address fields carry over as direct one-to-one mappings. The owner's email address on each Customer record resolves to a Twenty workspace member for owner assignment during the import process.

JobTread

Company

maps to

Twenty CRM

Company

1:1
Fully supported

JobTread Companies (client organizations, which may also include vendors stored as companies) map directly to Twenty Companies. Industry, employee count, website, and address fields migrate as direct or value-mapped fields. Portal-access companies from JobTread map as regular Company records in Twenty.

JobTread

Job

maps to

Twenty CRM

Opportunity

1:1
Fully supported

JobTread Jobs are the core revenue record and map to Twenty Opportunities. Job name, stage, amount, expected start date, expected end date, and address fields carry over. Construction-stage values (Estimate Sent, Proposal Signed, Job Started, Completed) require value mapping to Twenty Opportunity stage pick-list values defined in Twenty's workspace settings before import.

JobTread

Job.stage

maps to

Twenty CRM

Opportunity.stage

1:1
Fully supported

JobTread's construction-stage pick-list (e.g., 'Estimate Sent', 'Proposal Signed', 'Job Started', 'Completed') must map to Twenty's Opportunity stage pick-list. FlitStack delivers a stage-mapping plan based on JobTread's actual stage values; Twenty stages must be created in Settings → Data Model before the migration CSV is uploaded.

JobTread

Estimate

maps to

Twenty CRM

Opportunity

many:1
Fully supported

JobTread Estimates are standalone selling documents that often precede a Job. Each Estimate migrates as a Twenty Opportunity record with the estimate name as Opportunity name and the estimated amount as the Opportunity amount. The original estimate date is preserved as a custom datetime field. Line items from the estimate body are consolidated into a Note attached to the Opportunity.

JobTread

Purchase Order

maps to

Twenty CRM

Custom Object: Purchase Order

1:1
Fully supported

JobTread Purchase Orders (issued to subcontractors and vendors) have no native equivalent in Twenty. FlitStack creates a Purchase Order custom object in Twenty with fields for PO number, vendor, total amount, status, and linked Job. The PO-to-Job relationship is preserved as a custom relation field pointing back to the Opportunity record.

JobTread

Change Order

maps to

Twenty CRM

Custom Object: Change Order

1:1
Fully supported

JobTread Change Orders (approved scope additions or variations on a job) are created as a Change Order custom object in Twenty, linked to the parent Opportunity. Fields include change order number, description, amount, status, and approval date. The full change-order history is preserved on the Opportunity via custom fields and linked records.

JobTread

Job Attachment / File

maps to

Twenty CRM

Files linked via custom field

1:1
Fully supported

JobTread file attachments (drawings, contracts, photos) are re-uploaded to Twenty's file storage and linked to the Opportunity record. The original JobTread file ID and file name are stored as custom text fields on the Opportunity so teams can cross-reference the source file during the transition period.

JobTread

Custom Field (Job costing, portal flags, cost budget)

maps to

Twenty CRM

Custom Field on Opportunity / Company

1:1
Fully supported

JobTread custom fields on Jobs (e.g., job costing budget, customer portal access flag, subcontractor portal flag) have no native Twenty equivalent. FlitStack creates matching custom fields in Twenty's Data Model before import. Fields are typed as text, number, select, or date based on JobTread's field definition.

JobTread

JobTread User / Owner

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

JobTread owner assignment on Jobs, Estimates, and POs is resolved by matching the owner's email address against Twenty workspace members. Unmatched owners are flagged before migration — teams either invite them to Twenty first or assign records to a fallback WorkspaceMember. No record lands without a valid Twenty owner reference.

JobTread

Task / To-Do

maps to

Twenty CRM

Task

1:1
Fully supported

JobTread tasks and to-dos on jobs map directly to Twenty Tasks. Task title, due date, assignee, and completion status carry over. Tasks without a due date or assignee migrate with those fields blank. Tasks linked to a specific Job carry the associated Opportunity ID in Twenty.

JobTread

Note

maps to

Twenty CRM

Note

1:1
Fully supported

JobTread Notes on Jobs, Estimates, or Customers map directly to Twenty Notes. The note body, author (from owner email), and creation date are preserved. Notes are linked to the appropriate Opportunity or People record based on the source attachment in JobTread.

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.

JobTread logo

JobTread gotchas

High

Workflow actions are irreversible post-migration

High

Internal user count definition is migration-critical for billing

Medium

API rate limits are not publicly documented

Medium

Estimating formulas and selection logic require manual review post-import

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

  • Construction-stage pick-list values require manual setup in Twenty before import

    JobTread uses construction-specific stage values — 'Estimate Sent', 'Proposal Signed', 'Job Started', 'Completed' — that are not present in Twenty's default Opportunity stage pick-list. Twenty's Data Model requires stage values to be created in Settings before the CSV import can validate rows. FlitStack delivers a stage-mapping plan listing each JobTread stage value, the recommended Twenty stage to create, and the probability or forecast category to assign. If stages are not pre-created in Twenty, the CSV import will error on every Opportunity row until the schema is corrected.

  • Cost-item hierarchies and line-item detail have no native Twenty equivalent

    JobTread's budget-first model stores cost items, cost groups, and line items as structured child records of a Job. Twenty's Opportunity object has no native cost-item or line-item child concept. FlitStack consolidates the cost-item hierarchy into a JSON-structured custom field (Cost_Items_JSON__c) on each Opportunity, preserving item names, quantities, unit costs, and group names. Teams who want full reconstructability in Twenty's UI need to create individual custom fields or a custom Cost Item object — FlitStack surfaces this as a post-migration rebuild decision item.

  • Twenty's import load-order constraint breaks JobTread's relational data if not pre-resolved

    Twenty's CSV import enforces a strict dependency order: Companies must be imported before People, and People before Opportunities. JobTread's construction data frequently has records that violate this constraint — contacts without a primary company, jobs without a linked customer, or companies with no employees yet. FlitStack resolves these before the migration runs by creating placeholder Company records for orphaned contacts, mapping the primary contact per job by most-recent activity, and flagging any records with broken foreign keys so the schema can be corrected before the import CSV is uploaded.

  • JobTread attachments re-upload to Twenty storage with original IDs preserved for reference

    JobTread stores files natively and associates them with Jobs, Estimates, and Customers. Twenty's file model does not have a native construction-document concept — files are attached to records but there is no dedicated job-file or drawing register. FlitStack re-uploads JobTread attachments to Twenty's storage (up to 25MB per file) and stores the original JobTread file ID and file name as custom text fields (jobtread_file_ids__c) on the Opportunity so teams can cross-reference source files during the transition period. Teams needing a structured drawing or submittal register should build that as a custom object post-migration.

  • JobTread portal configuration and access flags do not transfer to Twenty

    JobTread provides a customer portal and a vendor portal with role-based access, document sharing permissions, and client communication settings. Twenty has no native portal model — client and vendor access is managed through sharing settings on a per-record basis. The customer portal access flag (Active/Inactive) from JobTread migrates as a custom select field (customer_portal_access__c) on the Opportunity, serving as a reference for which clients had active portal access. The portal experience itself must be rebuilt using Twenty's sharing model and optionally a connected external portal tool.

Migration approach

Six steps for a successful JobTread to Twenty CRM data migration

  1. Audit JobTread data model and export via Open API

    FlitStack connects to the JobTread Open API and audits the full data model: Customer records, Companies, Jobs with stage and cost-budget fields, Estimates with line items, Purchase Orders, Change Orders, attachments, and owner assignments. We identify all active JobTread workflows and export workflow definitions as a JSON reference file for the Twenty rebuild. The audit produces a data inventory showing record counts per object, a list of custom fields in use, and any data-quality flags (duplicate records, missing required fields, orphaned relationships).

  2. Design Twenty schema: custom objects, fields, and stage values

    Before any data moves, FlitStack delivers a Twenty schema plan based on the JobTread data audit. This includes: creating the Purchase Order and Change Order custom objects, creating custom fields on Opportunity and Company for construction-specific properties, defining Opportunity stage values matching JobTread's stage pick-list, and setting up the relation field from Purchase Order and Change Order custom objects back to Opportunities. Your Twenty admin (or our team) creates these in Settings → Data Model so the import CSV validates cleanly when uploaded.

  3. Resolve owners by email match and validate foreign-key relationships

    JobTread owner IDs are resolved by matching each owner's email address against Twenty workspace members. FlitStack generates an owner-resolution report listing matched users, unmatched owners, and the fallback assignee for each unmatched record. We also validate that every Job has a valid Customer reference and every Customer has a valid Company reference — resolving circular or missing foreign keys by creating placeholder Company records and mapping the primary contact per job before the import CSV is generated.

  4. Run a sample migration and generate field-level diff

    A representative slice — typically 100–300 records spanning Customers, Companies, Jobs, Estimates, and POs — migrates first using Twenty's CSV import tool. FlitStack generates a field-level diff showing source values and destination values for every mapped field, so you can verify stage mapping, cost-budget field population, PO number assignment, and owner resolution before the full run commits. Custom field creation and stage value configuration are validated at this step.

  5. Full migration with delta-pickup window and one-click rollback

    The full dataset runs against Twenty: Companies first (via CSV), then People (linked to Companies via companyId), then Opportunities (linked to People and Companies), then Purchase Orders and Change Orders (linked to Opportunities), then Notes and Tasks. A 24–48 hour delta-pickup window captures any records created or modified in JobTread during the cutover window so Twenty reflects JobTread's final state at go-live. FlitStack's audit log captures every operation; one-click rollback is available if reconciliation identifies data-integrity issues.

  6. Post-migration verification and rebuild reference package

    FlitStack delivers a post-migration verification report comparing record counts and field-population rates between JobTread and Twenty. A rebuild reference package includes the exported JobTread workflow definitions (as JSON), the JobTread stage-to-Twenty-stage mapping document, a list of custom fields created in Twenty, and a checklist for rebuilding the customer and vendor portal experience using Twenty's sharing model. This package gives your Twenty admin a concrete starting point for the configuration work that follows data migration.

Platform deep dives

Context on both ends of the pair

JobTread logo

JobTread

Source

Strengths

  • Budget-first data model keeps every financial record linked to a single job budget from estimate through closeout.
  • All-in-one platform consolidates CRM, estimating, scheduling, job costing, and client selections without switching tools.
  • Transparent per-user pricing with all features included, no contracts, and a 30-day money-back guarantee.
  • Vendor and subcontractor portal access is free and unlimited, keeping field team costs predictable.
  • AI-assisted features are being layered across the platform, with an Open API supporting custom integrations.

Weaknesses

  • Per-user pricing becomes expensive for larger organizations with many internal team members.
  • Workflow automations generate irreversible actions and cannot be bulk-deleted or reversed, creating migration risk.
  • Complex estimating formulas and selection templates require manual review after import in most destination platforms.
  • Rate limits and API documentation are not publicly disclosed, making large-volume migration planning difficult.
  • Some features like AIA payment applications and Heritage vendor catalog integration are recent additions and less battle-tested than core modules.
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 JobTread 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

    JobTread: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most JobTread-to-Twenty migrations complete in 2–5 days of clock time for under 25,000 records. The longest planning step is designing the Twenty schema (custom objects, Opportunity stage values, construction-specific custom fields) before the import CSV validates. Larger setups with 50,000+ records, multiple POs and change orders, or extensive cost-item histories extend to 1–2 weeks. The delta-pickup window adds 24–48 hours after the full run.

Adjacent paths

Related migrations to explore

Ready when you are

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