CRM migration
Field-level mapping, validation, and rollback between ServiceTitan and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
ServiceTitan
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between ServiceTitan and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
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.
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 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
Twenty CRM
People
1:1ServiceTitan 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
Twenty CRM
Company
1:1ServiceTitan 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
Twenty CRM
Custom Object: Job
1:1ServiceTitan 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
Twenty CRM
Custom Object: Invoice
1:1ServiceTitan 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)
Twenty CRM
Custom Field (People)
1:1ServiceTitan 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)
Twenty CRM
Custom Field (Job custom object)
1:1ServiceTitan 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
Twenty CRM
Custom Object: Product
1:1ServiceTitan 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
Twenty CRM
WorkspaceMember
1:1ServiceTitan 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
Twenty CRM
Custom Object: Campaign
1:1ServiceTitan 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
Twenty CRM
Custom Object: Membership
1:1ServiceTitan 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
Twenty CRM
Note
1:1ServiceTitan 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
Twenty CRM
Note / Task
1:1ServiceTitan 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.
| ServiceTitan | Twenty CRM | Compatibility | |
|---|---|---|---|
| Customer | People1:1 | Fully supported | |
| Service Location | Company1:1 | Fully supported | |
| Job | Custom Object: Job1:1 | Fully supported | |
| Invoice | Custom Object: Invoice1:1 | Fully supported | |
| Custom Field (Customer) | Custom Field (People)1:1 | Fully supported | |
| Custom Field (Job) | Custom Field (Job custom object)1:1 | Fully supported | |
| Pricebook / Product | Custom Object: Product1:1 | Fully supported | |
| Employee / Technician | WorkspaceMember1:1 | Fully supported | |
| Campaign | Custom Object: Campaign1:1 | Fully supported | |
| Membership | Custom Object: Membership1:1 | Fully supported | |
| Attachment / File | Note1:1 | Fully supported | |
| Note / Communication Log | Note / Task1: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.
ServiceTitan gotchas
Per-technician pricing masks true cost for mixed teams
No publicly documented bulk export API endpoint
Address validation required for Service Locations to enable routing
Purchasing migration can permanently stall
QuickBooks mapping assumes QBD desktop edition field conventions
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
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.
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.
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.
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.
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
ServiceTitan
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 ServiceTitan 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
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
ServiceTitan 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 ServiceTitan to Twenty CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave ServiceTitan
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.