CRM migration

Migrate from ServiceTracker to Twenty CRM

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

ServiceTracker logo

ServiceTracker

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

90%

9 of 10

objects map 1:1 between ServiceTracker and Twenty CRM.

Complexity

BStandard

Timeline

5–10 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

ServiceTracker is a field-service management platform built around work orders, dispatch, technician scheduling, and service-history tracking. Twenty CRM is a general-purpose open-source CRM built around People, Companies, Opportunities, Tasks, and Notes as its core objects. The two data models diverge significantly: ServiceTracker stores service records as primary entities, while Twenty stores People and Companies as primary with Opportunities linked to them. We map ServiceTracker customers to Twenty People, client organizations to Twenty Companies, and work orders to Twenty Opportunities (or a custom WorkOrder object if your setup uses custom fields that don't fit the standard Opportunity schema). Service history logs, signature captures, and parts-usage records migrate as Notes or Tasks attached to the parent Opportunity. Custom fields on ServiceTracker clients and work orders become Twenty custom fields on the equivalent object. We do not migrate ServiceTracker workflows, dispatch rules, route-optimization logic, or scheduling constraints — those must be rebuilt as Twenty workflow automations after migration. The migration runs via Twenty's REST and GraphQL APIs at up to 100 requests per minute on Cloud Pro, with a 20,000-record export limit per CSV batch that we handle in staged loads. Owner and technician resolution uses email matching against Twenty Workspace Members.

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

ServiceTracker logo

ServiceTracker

What's pushing teams away

  • Limited customization options frustrate teams that need deeper workflow control, leading them to platforms with more flexible automation and scripting capabilities.
  • Users report duplication issues when multiple note fields exist on the same record, complicating data entry and creating inconsistent records.
  • The lack of a documented public API makes deep integrations and automated data pipelines difficult, pushing technically demanding teams toward platforms with REST or bulk APIs.
  • Candidate and contact management workflows feel cumbersome with extra manual steps, prompting teams with HR-heavy use cases to look elsewhere.
  • Complex or opaque pricing at higher tiers causes some customers to reassess total cost and seek alternatives with more predictable billing.

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

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

ServiceTracker

Customer

maps to

Twenty CRM

Person

1:1
Fully supported

ServiceTracker customers map directly to Twenty People. The customer name maps to Person.name, phone maps to phone, and email maps to email. ServiceTracker stores the primary contact within the customer record; we extract those fields into Twenty People fields and flag the record type.

ServiceTracker

Client Organization

maps to

Twenty CRM

Company

1:1
Fully supported

When ServiceTracker has a separate client-organization record (distinct from the customer contact), we map it to Twenty Company. The company name, industry, website, and address fields map to their Twenty equivalents. Company records must be created before Person records so the companyId relation resolves correctly.

ServiceTracker

Work Order

maps to

Twenty CRM

Opportunity

1:1
Fully supported

ServiceTracker work orders are the primary entity in that system. We map work orders to Twenty Opportunities, mapping the work-order number to Opportunity.name, total amount to amount, and the scheduled date to closeDate. Work-order status (Open, In Progress, Completed, Cancelled) maps to Opportunity.stage with value mapping per status string.

ServiceTracker

Work Order (service-specific fields)

maps to

Twenty CRM

Custom WorkOrder object

1:1
Fully supported

ServiceTracker work orders include technician assignment, service type, signature capture, and parts-used — fields that don't fit naturally in Twenty's standard Opportunity schema. We create a custom WorkOrder object in Twenty with these fields and link it to the Opportunity via a relation field. This requires pre-migration schema setup in Twenty.

ServiceTracker

Technician / Staff

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

ServiceTracker technicians map to Twenty Workspace Members by email matching. We create Person records for technicians, set their role to Workspace Member, and link their assigned work orders to the matching Opportunity's assignee field. Unmatched technicians are flagged for admin review before migration commits.

ServiceTracker

Service Activity Log

maps to

Twenty CRM

Task

1:1
Fully supported

ServiceTracker stores activity logs with timestamps, technician name, and activity type (visit, repair, inspection). Each log becomes a Twenty Task attached to the related Opportunity. The activity type maps to Task.title, the log timestamp maps to Task.dueAt, and the technician note maps to Task.body.

ServiceTracker

Signature Record

maps to

Twenty CRM

Note

1:1
Fully supported

ServiceTracker signature captures (customer sign-off on completed work) migrate as Twenty Notes attached to the Opportunity. The signature image is stored as a URL reference or re-uploaded to Twenty's file storage and linked. Original sign-off timestamps are preserved in the Note body.

ServiceTracker

Parts/Inventory Used

maps to

Twenty CRM

Note or Custom Line Item object

many:1
Fully supported

Parts used per work order can be captured as a Note with a structured text block, or as rows in a custom LineItem object if the volume justifies the extra schema complexity. We surface this choice in the pre-migration planning call based on your parts tracking volume.

ServiceTracker

Contract / Service Agreement

maps to

Twenty CRM

Note or Custom Contract object

1:1
Fully supported

ServiceTracker contracts and recurring service agreements map to a custom Contract object in Twenty if you need active-date tracking and renewal alerts. Otherwise, the contract summary migrates as a Note on the Company or Opportunity for reference. The custom Contract object supports start and end dates, renewal frequency, and linked Company or Opportunity relationships for comprehensive contract lifecycle management.

ServiceTracker

Custom Fields (Client, Work Order)

maps to

Twenty CRM

Custom Fields on respective objects

1:1
Fully supported

ServiceTracker custom fields on clients and work orders require pre-migration creation of matching custom fields in Twenty. We deliver a field-mapping spec listing each custom field, its type (text, number, select), and the target object so your Twenty admin can create them before the migration run.

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.

ServiceTracker logo

ServiceTracker gotchas

High

No native bulk data export API

Medium

Custom fields are not centrally documented

Medium

Offline mobile data must sync before migration window

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 lacks native field-service dispatch and scheduling features

    ServiceTracker's core value is dispatch, route optimization, and technician scheduling. Twenty CRM has no equivalent — scheduling constraints, route preferences, and availability windows do not have a native construct. We map the technician assignment and service date, but dispatch rules and scheduling logic must be rebuilt as Twenty workflow automations or handled by a separate scheduling integration after migration. FlitStack can export your ServiceTracker dispatch rule definitions as a rebuild reference for your Twenty admin.

  • Twenty's CSV import caps at 20,000 records per file

    ServiceTracker setups with large service-history volumes can exceed Twenty's per-file CSV import limit. We handle this by splitting exports into 20,000-record batches and running staged imports with relationship resolution between batches. For migrations exceeding 50,000 records with complex activity logs, we recommend the Twenty API import path (100 req/min on Cloud Pro) for better throughput and error tracking. The Organization tier raises this to 200 req/min. Large customers with 100,000+ records across all modules typically benefit from API-based imports to maintain data integrity and reduce manual intervention during the migration window.

  • Work-order status to Opportunity stage mapping requires pre-migration value setup

    ServiceTracker work-order status strings (Open, In Progress, Completed, Cancelled) map to Twenty Opportunity Stage pick-list values, but those stage values must exist in Twenty before the migration runs. If your Twenty workspace uses non-standard stage names, we need the exact stage string list in advance. We deliver a stage-mapping spec before the migration run so your admin can create or rename stages in Twenty's pipeline settings. This coordination ensures that status values map correctly during the import process and prevents data quality issues in your Twenty Opportunities.

  • Signature and parts data migrate as Note text, not structured fields

    ServiceTracker signature captures and parts-used lists have no direct equivalent in Twenty's standard object model. We migrate them as Notes attached to the Opportunity, storing the signature URL or parts list as structured text in the Note body. If you need these as structured data rather than free-text notes, we create a custom WorkOrder object with signature and parts fields before migration — this requires additional schema setup time and is scoped separately.

  • Technician-to-WorkspaceMember email resolution can fail for inactive ServiceTracker accounts

    We match ServiceTracker technicians to Twenty Workspace Members by email. Technicians who have left your organization and no longer have a Twenty user account will not resolve. We flag all unmatched technicians before migration and assign their work orders to a fallback owner (your specified admin or a generic Unassigned record). Active technicians with email mismatches require manual correction after migration. If a technician has multiple email addresses in ServiceTracker, we attempt matching on each before flagging as unmatched. You can also choose to create placeholder Workspace Members for all technicians before migration begins to ensure complete coverage.

Migration approach

Six steps for a successful ServiceTracker to Twenty CRM data migration

  1. Audit ServiceTracker data model and export capabilities

    We review your ServiceTracker modules (customers, work orders, service logs, contracts, technicians) and run trial exports to confirm field availability, record counts per module, and export format constraints. We identify any custom fields, pick-list values, and relationship structures that require mapping before the migration plan is finalized. This discovery phase also validates data quality issues such as duplicate records, missing required fields, and inconsistent date formats that may need remediation before the migration run.

  2. Design Twenty schema and create custom objects

    Before data moves, we deliver a schema design spec: Twenty objects to receive each ServiceTracker entity, custom field definitions (name, type, pick-list options), and relationship fields. Your Twenty admin creates the custom WorkOrder object, custom fields, and Opportunity stage values per the spec. We validate the schema is ready before running any migration step. The spec also documents which ServiceTracker relationship IDs map to Twenty foreign keys so relationship integrity is maintained during the import.

  3. Resolve technicians by email and flag unmatched accounts

    We match ServiceTracker technician records to Twenty Workspace Members by email address. Unmatched technicians are flagged with the record ID and reason (no matching user, email mismatch). You decide whether to create Twenty users before migration or assign their work orders to a fallback owner. No Opportunity lands without an assignee decision. We also check for duplicate email addresses in ServiceTracker that may resolve to the same Twenty user, consolidating assignments to prevent duplicate Opportunity creation for the same technician.

  4. Run a sample migration with field-level diff

    We migrate a representative slice — typically 200–500 records spanning customers, companies, work orders, and activity logs — and generate a field-level diff showing source value vs. destination field for every mapped column. You verify that service types, status-to-stage mapping, and technician resolution look correct before the full run commits. The diff report highlights any truncated values, failed lookups, or data type mismatches so you can adjust the field mapping spec before we proceed to the full load.

  5. Execute full migration with delta-pickup window

    Full migration runs against Twenty via API or staged CSV imports in 20,000-record batches. A delta-pickup window (24–48 hours after initial load) captures any ServiceTracker records modified during cutover. We generate an audit log of every record inserted or updated, with rollback capability if reconciliation uncovers unexpected mapping behavior. The audit log includes the source record ID, destination object ID, transformation applied, and timestamp for compliance and troubleshooting purposes.

Platform deep dives

Context on both ends of the pair

ServiceTracker logo

ServiceTracker

Source

Strengths

  • All-in-one FSM covering dispatch, work orders, mobile access, and inventory in a single cloud platform.
  • Drag-and-drop customization for custom fields, screens, and picklists without developer involvement.
  • Mobile apps with offline capability for field technicians in low-connectivity environments.
  • Excel and CSV bulk import tools built into the platform for onboarding and data loads.
  • Customer owns their data completely with no secondary storage or data retention lock-in.

Weaknesses

  • No documented public API or bulk export endpoint — migrations require CSV pulls from individual tables.
  • Limited automation and workflow customization compared to more developer-friendly FSM platforms.
  • Data export is restricted to Excel and CSV formats with no XML or JSON option.
  • Pricing and feature tier boundaries are not publicly documented, complicating migration planning.
  • No native Knowledge Base or document management — external systems are required for standard operating procedures.
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 ServiceTracker 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

    ServiceTracker: Inherits Salesforce platform API rate limits.

  • Data volume sensitivity

    A

    ServiceTracker exposes a bulk API — large-volume migrations stream efficiently.

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most ServiceTracker-to-Twenty migrations complete in 5–10 business days for under 50,000 records. Larger setups with 50,000–200,000 records or complex custom-field schemas extend to 3–5 weeks. The longest phase is schema setup in Twenty — creating custom WorkOrder objects and matching custom fields before data can land. The actual migration run is typically 2–3 days for the initial load plus a 24–48 hour delta pickup window.

Adjacent paths

Related migrations to explore

Ready when you are

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