CRM migration

Migrate from ServiceTitan to Twenty CRM

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

ServiceTitan logo

ServiceTitan

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between ServiceTitan and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

ServiceTitan organizes field-service data around Jobs, Customers, Service Locations, and Pricebook entries — tightly coupled to dispatch, invoicing, and technician scheduling. Twenty CRM structures data around People, Companies, and Opportunities with a clean relational model and optional self-hosting. The migration carries customer records, service locations, custom fields, job history, and activity logs into Twenty's equivalent objects. ServiceTitan's industry-specific constructs — dispatch boards, technician routes, membership agreements, and equipment records — do not have native Twenty equivalents and must be recreated manually or stored as structured notes. We export ServiceTitan data via its reporting API (60 calls per second rate limit), transform the schema, and import into Twenty via CSV or REST/GraphQL API. The migration skips workflows, automations, and QuickBooks integrations — those require a separate rebuild plan. Custom pick-list values (trade types, equipment categories, membership tiers) map value-by-value into Twenty select fields, and all original timestamps preserve during transfer. ServiceTitan's dispatch boards, technician route optimization, and GPS tracking are operational tools with no data equivalent in Twenty — these process flows require manual redesign post-migration.

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

ServiceTitan logo

ServiceTitan

What's pushing teams away

  • Pricing opacity and per-technician costs that exceed $500/month per tech at higher tiers create sticker shock, especially when combined with mandatory multi-year contracts and implementation fees reported in the tens of thousands.
  • The learning curve is steep — G2 and Capterra reviewers consistently cite difficulty mastering pricebooks, custom reports, and advanced features without dedicated training or a strong CSM, and many report poor or unreachable support during onboarding struggles.
  • Releasing new features and updates before refining existing ones frustrates long-term users; reviewers describe instances where product changes break established workflows without adequate notice or migration support.
  • Construction contractors find ServiceTitan does not include estimating, change orders, project scheduling, or job costing in the way their businesses require, making it a poor fit despite the premium pricing charged regardless of trade vertical.
  • Exit from ServiceTitan is described as difficult by former users, with long-term contracts, data portability limitations, and a complex setup that creates meaningful switching costs.

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

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

ServiceTitan

Customer

maps to

Twenty CRM

People

1:1
Fully supported

ServiceTitan customer records map directly to Twenty's People object. Each customer has a primary name, email, phone, and address fields that map to Twenty's standard contact fields. ServiceTitan allows multiple contact points per customer; Twenty stores one People record per individual contact.

ServiceTitan

Service Location

maps to

Twenty CRM

Company

1:1
Fully supported

ServiceTitan service locations represent physical addresses where jobs occur — distinct from the customer record itself. These map to Twenty's Company object, with the location address as the company address and the customer name stored for reference. ServiceTitan allows multiple locations per customer; Twenty's Company object represents each location as a separate account record.

ServiceTitan

Job

maps to

Twenty CRM

Custom Object: Job

1:1
Fully supported

ServiceTitan jobs have no direct Twenty CRM equivalent. We create a Job custom object in Twenty with fields for job type, status, scheduled date, assigned technician, and service location link. Job history and timestamps migrate as records in this custom object. The dispatch board and route optimization logic cannot migrate and must be designed as a manual process in Twenty.

ServiceTitan

Invoice

maps to

Twenty CRM

Custom Object: Invoice

1:1
Fully supported

ServiceTitan invoices carry line items, tax, payments, and QuickBooks sync status. Twenty has no native invoicing module. We create an Invoice custom object capturing invoice number, date, total amount, status (paid/unpaid/void), and a relation to the service location Company. Payment history and invoice attachments migrate as file links or notes.

ServiceTitan

Custom Field (Customer)

maps to

Twenty CRM

Custom Field (People)

1:1
Fully supported

ServiceTitan custom fields on customer records — such as preferred technician, customer type, or membership status — require corresponding custom fields in Twenty's People object. We identify all active custom fields during audit, create them in Twenty's Settings → Data Model before import, then map values during the migration run.

ServiceTitan

Custom Field (Job)

maps to

Twenty CRM

Custom Field (Job custom object)

1:1
Fully supported

ServiceTitan allows custom fields on job records for trade-specific data like equipment model, warranty status, or permit number. These map to custom fields on the Job custom object we create in Twenty. Every custom field must exist in Twenty before the migration CSV is uploaded — we surface this as a pre-migration setup step.

ServiceTitan

Pricebook / Product

maps to

Twenty CRM

Custom Object: Product

1:1
Fully supported

ServiceTitan Pricebook entries store service items, parts, labor rates, and pricing tiers. Twenty has no native product catalog. We create a Product custom object with fields for name, SKU, unit price, and category. Pricing tiers and discount rules require manual rebuild in Twenty or external pricing tools.

ServiceTitan

Employee / Technician

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

ServiceTitan technician and employee records hold certifications, service areas, and work schedules. Twenty's WorkspaceMember object represents users who access the CRM. Technician-specific attributes (trade certifications, service zones) must be stored as custom fields on the WorkspaceMember record or in a separate Technicians custom object.

ServiceTitan

Campaign

maps to

Twenty CRM

Custom Object: Campaign

1:1
Fully supported

ServiceTitan marketing campaigns track lead sources and campaign performance tied to job referrals. Twenty has no native campaign object. We create a Campaign custom object capturing campaign name, type, start/end dates, and target lead count. Campaign membership (which customers came from which campaign) migrates as a custom field on the People record.

ServiceTitan

Membership

maps to

Twenty CRM

Custom Object: Membership

1:1
Fully supported

ServiceTitan service agreements and membership programs (annual maintenance plans, prepaid service tiers) have no Twenty CRM equivalent. We create a Membership custom object linked to the People record, storing membership type, start date, renewal date, and status. Membership benefits and auto-renewal logic must be rebuilt as a manual process or external tool.

ServiceTitan

Attachment / File

maps to

Twenty CRM

Note

1:1
Fully supported

ServiceTitan files attached to customers, locations, or jobs (photos, signed documents, equipment manuals) migrate as Twenty Notes attached to the corresponding People or Company record. We download the files, re-upload to Twenty's file storage, and link them to the parent record. File size limits and inline image handling apply.

ServiceTitan

Note / Communication Log

maps to

Twenty CRM

Note / Task

1:1
Fully supported

ServiceTitan call notes, communication history, and internal messages map to Twenty Notes for free-form text or Tasks for action items with due dates and assignees. Original timestamps and created-by-user references preserve audit trails. Call disposition codes become Task status or a custom select field on the Task.

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.

ServiceTitan logo

ServiceTitan gotchas

High

Per-technician pricing masks true cost for mixed teams

High

No publicly documented bulk export API endpoint

Medium

Address validation required for Service Locations to enable routing

Medium

Purchasing migration can permanently stall

Low

QuickBooks mapping assumes QBD desktop edition field conventions

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 CRM ships minimal standard fields requiring manual setup before import

    Twenty's People and Companies objects arrive with sparse default fields — users report spending 30–60 minutes creating basic contact fields before importing any data. ServiceTitan's customer records carry dozens of populated fields (industry, employee count, custom properties) that have nowhere to land in Twenty until the admin creates matching fields in Settings → Data Model. FlitStack surfaces all ServiceTitan custom fields during the audit phase and delivers a Twenty field-creation checklist as a pre-migration deliverable so the schema is ready before the first CSV import.

  • ServiceTitan job and dispatch model has no native Twenty equivalent

    ServiceTitan's core value proposition is the dispatch board, technician route optimization, and GPS arrival tracking — all deeply embedded in the Jobs object. Twenty CRM has no job, dispatch, or field-service scheduling entity. The migration can carry job records as structured data in a custom object, but the operational logic (technician assignment rules, capacity planning, service-area routing) cannot migrate. Teams must redesign their job management process in Twenty or accept a reduced feature set around job tracking.

  • ServiceTitan invoicing and QuickBooks sync does not transfer to Twenty

    ServiceTitan's integrated invoicing, payment processing, and QuickBooks Desktop sync are tightly coupled to the Invoice and Job objects. Twenty CRM has no native invoicing module and no QuickBooks integration. Invoice records migrate as read-only history in a custom object, but open invoices, payment status, and accounting reconciliation must be rebuilt in Twenty or handled by a separate accounting tool. ServiceTitan's material-cost-on-invoice configuration (hiding costs from customers) has no equivalent in Twenty.

  • ServiceTitan API rate limits cap export throughput

    ServiceTitan's regular API enforces a 60 calls per second per application per tenant limit, and the reporting API allows only 1 concurrent report per minute. For large migrations with 100k+ records across customers, locations, jobs, and invoices, export batching becomes a bottleneck. We handle this by scheduling exports in off-peak hours, using ServiceTitan's built-in report exports where available, and pacing API calls to stay within limits. The migration timeline accounts for multi-session export runs.

  • ServiceTitan memberships and service agreements require manual process design

    ServiceTitan membership agreements store prepaid service tiers, auto-renewal schedules, and benefits eligibility flags tied to job dispatch logic. Twenty CRM has no native membership object, so these records migrate as structured data in a custom Membership object with type, start/end dates, and status. However, the business logic — which membership tier triggers which dispatch priority, what happens at renewal, how to handle lapse — lives in ServiceTitan automations and must be documented and rebuilt as a manual process in Twenty or an external membership management tool.

Migration approach

Six steps for a successful ServiceTitan to Twenty CRM data migration

  1. Audit ServiceTitan data and export preparation

    FlitStack connects to ServiceTitan via scoped read access and inventories all active records: customers, service locations, jobs, invoices, pricebook entries, and custom fields across object types. We identify duplicate records, stale data (no activity in 24+ months), and custom field usage frequency. We export via ServiceTitan's reporting API in batches to stay within the 60 calls-per-second limit, producing one CSV per object type. The audit output includes a data-cleanse recommendation list so only active, relevant records enter the migration.

  2. Design Twenty CRM schema and create custom objects

    Before any data moves, we create the Twenty custom objects (Job, Invoice, Product, Membership, Campaign) and all custom fields needed for the migration. Based on the ServiceTitan audit, we deliver a schema setup checklist for the Twenty workspace admin: which objects to create, which field types to use, which pick-list values to pre-populate. This step also includes inviting all team members to Twenty so user resolution by email works during the migration run.

  3. Run sample migration with field-level diff

    A representative slice of 100–300 records migrates first — spanning customers, service locations, a sample job history, and a few invoices. We generate a field-level diff between the ServiceTitan source and the Twenty destination, verifying that custom field values map correctly, technician assignments resolve to WorkspaceMembers, and job-service location relationships link to the right Company records. You review the diff before the full run commits, with the ability to adjust field mappings or custom field creation instructions.

  4. Execute full migration with delta-pickup window

    The full migration runs against Twenty CRM via CSV import and REST/GraphQL API calls. A delta-pickup window (typically 24–48 hours) captures any records created or modified in ServiceTitan during the cutover period. All operations are logged to an audit table, and FlitStack provides a reconciliation report comparing record counts per object between source and destination. One-click rollback is available if the reconciliation reveals critical issues before you confirm go-live.

  5. Deliver migration summary and rebuild reference

    Post-migration, FlitStack delivers a summary report covering record counts migrated, any records skipped due to validation errors (with reasons), and a field-mapping reference document. We also export ServiceTitan workflow definitions and automation logic as a structured document for your Twenty admin to use when rebuilding dispatch processes, membership renewal logic, and job-scheduling workflows in Twenty's workflow builder. Integration connections (QuickBooks, marketing tools) are documented as rebuild items — FlitStack does not migrate third-party integrations.

Platform deep dives

Context on both ends of the pair

ServiceTitan logo

ServiceTitan

Source

Strengths

  • Cloud-based, mobile-first platform accessible from the field eliminates downtime and desk-bound bottlenecks reported by G2 reviewers.
  • Per-technician pricing model aligns software cost directly with field capacity for growing HVAC and plumbing businesses.
  • Deep QuickBooks Desktop integration with documented field mapping handles accounting sync natively for migrating customers.
  • Automated customer communications — reminders, follow-ups, marketing — reduce no-show rates and CSR administrative overhead.
  • Comprehensive job tracking across customer history, technician activity, and performance reporting creates a single operational record.

Weaknesses

  • Pricing is not publicly disclosed, requiring a sales call to obtain a quote, and implementation fees and multi-year contracts add significant cost beyond the per-technician subscription.
  • The learning curve is steep — pricebooks, custom reports, and advanced features require dedicated training and a strong CSM to use effectively.
  • Poor or unreachable customer support during onboarding and troubleshooting is cited by multiple G2 and Capterra reviewers as a consistent frustration.
  • New product releases sometimes ship before existing features are fully refined, occasionally breaking established workflows.
  • Exit process is described as difficult due to long-term contract commitments and limited data portability options.
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 ServiceTitan 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

    ServiceTitan: 60 requests per second per application per tenant for regular APIs; reporting APIs limited to 1 of the same report per minute.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most ServiceTitan-to-Twenty migrations complete in 48–72 hours of clock time for under 25,000 records across customers, service locations, and job history. Larger setups with 100k+ records or multiple custom objects (Invoice, Membership, Job) extend to 5–10 business days. The longest phase is the schema setup in Twenty — creating custom objects and fields before import — which typically takes 2–4 days of planning. ServiceTitan's API rate limits (60 calls per second) also affect export batching duration for very large record volumes.

Adjacent paths

Related migrations to explore

Ready when you are

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