CRM migration

Migrate from Dispatch Pro to Twenty CRM

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

Dispatch Pro logo

Dispatch Pro

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between Dispatch Pro and Twenty CRM.

Complexity

BStandard

Timeline

3–7 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Dispatch Pro is a dispatch-optimization layer built into ServiceTitan — its data model centers on Jobs, Customers (service requesters), Technicians, and Locations. These objects are structured around scheduling, skill-matching, and job-status tracking rather than the contact-account-opportunity model that Twenty CRM uses. Twenty's standard objects are People (individuals), Companies (organizations), Opportunities (deals), Notes, and Tasks, plus a full custom-object layer for anything outside that structure. We extract Dispatch Pro data via the ServiceTitan API or CSV export, map Job records to a custom 'Service Job' object in Twenty, map Dispatch Pro Customers to Twenty People, map service locations to a custom 'Service Location' object, and resolve technician assignments by matching Dispatch Pro technician email addresses to Twenty workspace members. Custom fields for job type, priority bucket, arrival window, and zone are all migrated as Twenty custom fields on the appropriate objects. Dispatch Pro workflows — route-optimization rules, auto-dispatch triggers, and skill-matching logic — are not migratable; we export your Dispatch Pro workflow definitions as a structured JSON document that your admin can use to rebuild equivalent rules in Twenty's workflow builder or via API.

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

Dispatch Pro logo

Dispatch Pro

What's pushing teams away

  • Slow support response times frustrate users who encounter issues during critical dispatch periods — one G2 reviewer cited that support tickets take much time to resolve.
  • Major software upgrades in ServiceTitan have been reported to break or change existing dispatch workflows, forcing dispatchers to relearn their tools after each release.
  • Some users feel the platform has more features than they need and at a higher cost than simpler standalone dispatch tools, prompting consideration of alternatives like Housecall Pro or Jobber.
  • Interface responsiveness is a recurring complaint, with reviewers noting process speed lags that become frustrating during high-volume dispatch days.

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

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

Dispatch Pro

Customer (ServiceTitan contact record)

maps to

Twenty CRM

People

1:1
Fully supported

Dispatch Pro Customer records map to Twenty People. The customer name, email, phone, and address fields translate directly. Dispatch Pro does not separate personal and business contacts by default — if a customer has multiple service locations, each location becomes a separate Service Location custom object linked to the same People record.

Dispatch Pro

Service Location

maps to

Twenty CRM

Custom Object: Service Location

1:1
Fully supported

Dispatch Pro stores service-site addresses separately from customer contact records. We create a Service Location custom object in Twenty with fields for address, location type (residential/commercial), and a relation back to the People record. This preserves the distinction between 'who called' and 'where the job happened' that Dispatch Pro uses natively.

Dispatch Pro

Job

maps to

Twenty CRM

Custom Object: Service Job

1:1
Fully supported

Dispatch Pro job records have no direct Twenty equivalent — Twenty has no native job or service-visit object. We create a Service Job custom object with fields for job type, status, priority bucket, arrival window, zone, scheduled start/end, and technician assignment. Original job-create and job-complete timestamps are preserved as custom datetime fields.

Dispatch Pro

Job Status

maps to

Twenty CRM

Custom Object: Service Job / status field

1:1
Fully supported

Dispatch Pro job status values (e.g., Scheduled, In Progress, Completed, Cancelled, On Hold) map to pick-list values on the Service Job custom_object status field. Each status label is mapped individually and validated to ensure that dashboard filters, workflow triggers, and reporting views in Twenty function correctly with the migrated status data.

Dispatch Pro

Technician

maps to

Twenty CRM

Workspace Member / People

1:1
Fully supported

Dispatch Pro technician records contain name, email, skill set, trade licenses, and zone assignments. We map technician email to Twenty Workspace Member by email match. Technicians who do not yet have a Twenty user account are flagged before migration — either invited to Twenty first or assigned to a placeholder member until their account is created.

Dispatch Pro

Skill Set / Trade License

maps to

Twenty CRM

Custom Field on People (Technician) records

1:1
Fully supported

Dispatch Pro technician skill sets and trade licenses are not native Twenty fields. We migrate them as custom multi-select fields on the People record (technician role) so that service-job assignment logic in Twenty can reference them via filters or workflow conditions.

Dispatch Pro

Job-to-Technician Assignment

maps to

Twenty CRM

Custom Object: Service Job / assignedTo relation

1:1
Fully supported

Dispatch Pro assigns technicians to jobs by skill-match and zone logic. In Twenty, we store the assigned technician as a relation field on the Service Job custom object pointing to the People record (technician). This relation is resolved after both the technician People records and Service Job records exist in Twenty, following the import-order dependency.

Dispatch Pro

Job Notes / Call Notes

maps to

Twenty CRM

Note

1:1
Fully supported

Dispatch Pro call notes and job-specific notes map to Twenty Notes. Notes are linked to the parent Service Job record and preserve original create timestamps and note author. If Dispatch Pro stores notes as rich text, formatting is flattened to plain text during migration.

Dispatch Pro

Job Attachments / Photos

maps to

Twenty CRM

Note / Attachment (custom field URL reference)

1:1
Fully supported

Dispatch Pro attachments (photos, signed documents, job images) do not have a direct Twenty equivalent for file hosting. We preserve the original file URLs as a custom text field on the Service Job record and re-upload files to Twenty's supported storage or a linked location if the destination supports file attachments.

Dispatch Pro

Custom Fields (Dispatch Pro job properties)

maps to

Twenty CRM

Custom fields on Service Job or Service Location

1:1
Fully supported

Any Dispatch Pro custom properties on Job or Customer records are audited, typed (text, number, date, select, multi-select), and created as custom fields in Twenty before import. Select and multi-select values are mapped value-by-value to ensure pick-list consistency in Twenty.

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.

Dispatch Pro logo

Dispatch Pro gotchas

High

Dispatch Pro is a ServiceTitan-only licensed module

Medium

Optimization behavior may not carry over after migration

Medium

Slow support response during migration cutover

Low

Eight priority levels may not map 1:1 to destination CRM

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 has no native dispatch or job object — custom object required for job records

    Dispatch Pro models its entire data structure around Jobs, Technicians, and Service Locations. Twenty CRM has no built-in job or service-visit object — its standard model is People, Companies, Opportunities, Notes, Tasks. We create a Service Job custom object with fields for job type, status, priority, arrival window, zone, and technician assignment. This works correctly in Twenty's API, workflow builder, and views, but it means job records live in a custom object rather than a standard one. Twenty's workflow builder can trigger on Service Job field changes, send notifications, and update related records — so dispatch automation logic can be rebuilt there. The key constraint is that all custom fields must exist in Twenty's data model before import runs; the CSV import process creates records but not fields.

  • Dispatch Pro technician records must be invited to Twenty as Workspace Members before import

    Twenty's import system enforces referential integrity — any relation field (e.g., assignedTechnicianId pointing to a People record) requires the target record to exist at import time. If a Dispatch Pro technician has no corresponding Twenty user, their job assignments cannot be linked during import and will land without an assigned technician. We flag all unmatched technician emails before migration begins. Your team must invite those technicians to Twenty and wait for account acceptance before we run the full import. Dispatch Pro technician skill sets and trade licenses migrate as custom multi-select fields on the People record rather than as native Twenty fields, since Twenty has no built-in skill-license model.

  • Dispatch Pro workflow logic — auto-dispatch rules, priority optimization, route optimization — has no Twenty equivalent and must be rebuilt

    Dispatch Pro's core value is its optimization engine: route-based scheduling, skill-matching, priority bucket weighting, and zone routing. Twenty's workflow builder handles conditional field updates and notifications — it can update a Service Job's status when a technician marks a task complete, or send an email when a job is created. However, Twenty does not have a native route-optimization algorithm, dynamic priority re-weighting based on monetary value, or skill-vs-zone matching logic. Any Dispatch Pro rules that govern how jobs are automatically assigned or reshuffled must be rebuilt in Twenty's workflow builder or via the Twenty API. We export your Dispatch Pro rule definitions as a structured reference document to support the rebuild effort.

  • Twenty's CSV import has a 20,000-record per-export cap — large job archives require API-based migration

    Twenty's UI-based CSV import caps exports at 20,000 records per file. Dispatch Pro setups with multi-year job histories, large customer bases, or multiple business units routinely exceed this. We handle oversized migrations by using Twenty's REST and GraphQL API for batch record creation, bypassing the UI export limit entirely. The API path also gives us fine-grained control over field-level validation and allows us to import in the correct dependency order (Companies → People → Service Locations → Service Jobs) without the manual chunking that CSV-only migrations require.

  • Dispatch Pro's pricing model (per Managed Technician) does not translate to Twenty's per-seat model

    Dispatch Pro bills on the number of managed technicians — the software cost scales with dispatch capacity rather than user count. Twenty bills per active workspace member, regardless of whether that member is a technician, dispatcher, or admin. For teams where not all ServiceTitan users are technicians, the per-seat model can reduce costs. For teams where the technician-to-admin ratio is 1:1, costs may be comparable. We provide a pre-migration cost comparison based on your current Dispatch Pro/ServiceTitan headcount versus Twenty's Cloud Pro ($9/user/month) or self-hosted infrastructure costs, so the financial model is clear before migration begins.

Migration approach

Six steps for a successful Dispatch Pro to Twenty CRM data migration

  1. Audit Dispatch Pro data and design Twenty custom-object schema

    We extract a full data inventory from Dispatch Pro via the ServiceTitan API or CSV export, cataloging all job records, customer records, technician profiles, service locations, and custom properties. We identify the unique field types, pick-list values, and any multi-location or multi-business-unit configurations. Using this inventory, we design the Twenty custom objects (Service Job, Service Location) and custom fields required to receive the data, and deliver a schema setup plan so your Twenty admin can pre-create fields before the migration run.

  2. Invite all Dispatch Pro technicians to Twenty and resolve user assignments

    Before any import, we match every Dispatch Pro technician email address against Twenty workspace members. Technicians with existing Twenty accounts are confirmed and their People records are linked. Technicians without accounts are flagged — your team must invite them and confirm account acceptance before we proceed, since Twenty's import system enforces referential integrity and will reject job records with unresolved owner references.

  3. Import in dependency order: People → Service Locations → Service Jobs

    Twenty's data model requires parent records to exist before children can be linked. We sequence the migration as: (1) Customer People records, (2) Service Location custom objects linked to People, (3) Service Job custom objects with technician assignments and location links. Job-to-technician and job-to-location relations resolve via email match and unique identifier cross-reference during this phase. We use Twenty's API for large datasets to bypass the 20,000-record UI export cap.

  4. Run a sample migration with field-level diff and verification

    We execute a representative sample migration drawn from a cross-section of your Dispatch Pro data — typically 200–500 records covering jobs in different statuses, assigned to various technicians, and spanning multiple service locations. This sample import migrates first, before the full dataset commits. Following the sample run, we generate a detailed field-level diff that compares each source Dispatch Pro value against the corresponding Twenty record field-by-field. You review this diff to validate that priority bucket mapping, arrival window values, technician assignment accuracy, zone assignments, and all custom field value translations are correct and complete. Any mapping errors identified in the sample are corrected before the full migration proceeds.

  5. Execute full migration with delta-pickup window and audit log

    The full migration runs against Twenty. A delta-pickup window (typically 24–48 hours after initial load) captures any Dispatch Pro records modified during the cutover period. Every import operation is captured in an audit log. If reconciliation reveals discrepancies — unlinked technicians, pick-list mismatches, or missing job records — we trigger a targeted re-run for the affected records only. One-click rollback to the pre-migration state is available if critical reconciliation failures are found.

Platform deep dives

Context on both ends of the pair

Dispatch Pro logo

Dispatch Pro

Source

Strengths

  • One-click job assignment with real-time dispatch board updates shared to technician mobile apps.
  • Filtering and search functionality for quickly locating open work orders by zone, priority, or technician.
  • Up to eight configurable priority levels with optimization logic that respects both monetary value and non-monetary urgency like recalls.
  • Skill-based, zone-based, and trade-license-based technician assignment rules built directly into the optimization engine.
  • Scheduled job locking allows dispatchers to reserve time slots and prevent optimization from reshuffling manually confirmed appointments.

Weaknesses

  • Dispatch Pro is a ServiceTitan-only add-on product — organizations not already on ServiceTitan cannot use it, limiting portability.
  • The platform fills underbooked days for best-performing technicians first, which can disadvantage newer technicians and requires careful monitoring of fairness settings.
  • Support response times are reported as slow, which is critical when dispatch issues arise during active service hours.
  • API documentation and bulk export capabilities are not independently published — migrations require working through ServiceTitan's formal export tools or developer support.
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. 1 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 Dispatch Pro and Twenty CRM.

  • Object compatibility

    B

    1 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

    Dispatch Pro: Not publicly documented in available research.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Dispatch Pro to Twenty migrations complete in 3–7 days for setups under 25,000 records. Complex migrations with multi-location dispatch boards, historical job archives exceeding 50,000 records, or multiple business units requiring separate Service Location configurations extend to 2–3 weeks. The longest phase is schema design for the Service Job and Service Location custom objects — we run that in parallel with Twenty workspace setup so the admin-facing work doesn't add to the critical path.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Dispatch Pro.
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