CRM migration

Migrate from Q Dispatch to Twenty CRM

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

Q Dispatch logo

Q Dispatch

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

83%

10 of 12

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

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Q Dispatch structures its data around field service operations: customers with service locations, work orders with status lifecycles, and technicians assigned to jobs. Twenty CRM uses a different model built around People, Companies, and Opportunities with a relational link structure. We map Q Dispatch customers to Twenty Companies and service contacts to People records linked via companyId. Q Dispatch work orders migrate as Opportunities, with pipeline stages mapped to Twenty's opportunityStage field. Technician assignments require resolution by email against Twenty Workspace Members — users must exist in Twenty before records land. Scheduling notes and dispatch comments migrate as Notes attached to the relevant Opportunity. The migration runs via Twenty's REST API (100 calls/min on Pro, 200 on Organization tier) using batch imports sequenced by dependency order: Companies first, then People with companyId references, then Opportunities. Workflows, routing rules, and dispatch automations do not migrate — they must be rebuilt in Twenty's workflow builder. FlitStack delivers a field-level diff of the sample migration before the full run commits.

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

Q Dispatch logo

Q Dispatch

What's pushing teams away

  • Pricing is described as prohibitive for smaller operations or teams that only need basic scheduling — some users feel they are paying for features beyond what they actually use.
  • The platform lacks true CRM capabilities; one reviewer noted an inability to capture and manage comprehensive customer data beyond what is needed for a single job dispatch.
  • Construction-oriented businesses report that project controls are light — the platform is not designed for long-duration project tracking or construction-specific workflow stages.
  • Integration depth varies, which means teams relying on ERP connectors or third-party accounting software may face gaps that require manual data re-entry or workarounds.

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

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

Q Dispatch

Customer

maps to

Twenty CRM

Company

1:1
Fully supported

Q Dispatch customers with business names map directly to Twenty Companies. The customer address migrates as the company address fields. If Q Dispatch stores multiple service locations per customer, the primary location becomes the Company record and additional locations require a custom ServiceLocation object in Twenty.

Q Dispatch

Customer Contact

maps to

Twenty CRM

Person

1:1
Fully supported

Q Dispatch contact names, emails, and phone numbers migrate to Twenty People records. The companyId field links each Person to the corresponding Company record. Q Dispatch allows multiple contacts per customer — all migrate with the same companyId relationship preserved.

Q Dispatch

Work Order

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Q Dispatch work orders map to Twenty Opportunities. The work order number becomes the opportunity name. Job status values (Pending, Scheduled, In Progress, Completed) map to Twenty opportunityStage pick-list values that your admin creates before import. Stage-entered timestamps preserve history.

Q Dispatch

Work Order Line Item

maps to

Twenty CRM

Opportunity

many:1
Fully supported

If Q Dispatch stores multiple line items or service types per work order, these merge into a single Opportunity with a description field aggregating the services. For granular tracking, your admin creates a custom ServiceItem object in Twenty before migration.

Q Dispatch

Technician

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Q Dispatch technicians map to Twenty Workspace Members by email resolution. Technicians must receive Twenty invitations before migration runs — unmatched technicians are flagged and records assigned to a fallback Workspace Member. Shift and region data from Q Dispatch becomes custom fields on the Workspace Member record.

Q Dispatch

Service Location / Address

maps to

Twenty CRM

Company

many:1
Fully supported

Q Dispatch service locations attach to customers as separate addresses. When your Q Dispatch setup stores service addresses distinct from the primary customer billing address, both addresses consolidate into the Company record's standard address fields. Any service-location-specific notes or special instructions transfer into a custom addressNote field created on the Company object to preserve important operational details.

Q Dispatch

Job Notes / Dispatch Comments

maps to

Twenty CRM

Note

1:1
Fully supported

Q Dispatch job notes and dispatch communication history migrate as Twenty Notes attached to the corresponding Opportunity. The original timestamps and creating user's email address are preserved on each Note. Notes link to the Opportunity via the relation import method using the Opportunity's id field, ensuring all communication context transfers with the work order record.

Q Dispatch

Job Attachments

maps to

Twenty CRM

NoteAttachments

1:1
Fully supported

Q Dispatch file attachments on work orders re-upload to Twenty's storage during migration. Any inline images embedded in job notes are extracted, downloaded, and rehosted as NoteAttachments linked to the parent Note record. File size restrictions apply based on your Twenty storage configuration, and we validate attachment compatibility before the migration batch commits.

Q Dispatch

Custom Job Fields

maps to

Twenty CRM

Custom Fields on Opportunity

1:1
Fully supported

Q Dispatch custom fields on work orders require pre-creation in Twenty's Settings → Data Model before import. Field types map as: text → text, number → number, date → date, picklist → select. If Q Dispatch stores field options not supported by Twenty select, they become text fields with original values preserved.

Q Dispatch

Customer Custom Fields

maps to

Twenty CRM

Custom Fields on Company / Person

1:1
Fully supported

Q Dispatch custom fields on customers migrate as custom fields on Twenty Company or Person objects based on whether the field applies to the business or the contact. Your admin creates these in Twenty Data Model first. Relationship custom fields (e.g., preferred technician) resolve by email match before migration.

Q Dispatch

Routing Rules / Dispatch Logic

maps to

Twenty CRM

Workflow (not migrated)

1:1
Fully supported

Q Dispatch routing rules, technician-to-job assignment logic, and auto-dispatch automations have no equivalent in Twenty CRM. These must be rebuilt in Twenty's workflow builder using triggers on Opportunity creation and status changes. FlitStack exports your Q Dispatch routing logic as a rebuild reference document.

Q Dispatch

Reports / Dashboards

maps to

Twenty CRM

Reports / Views (not migrated)

1:1
Fully supported

Q Dispatch reports and dashboards do not migrate. The underlying work order and customer data populates Twenty's standard views and filters after migration. Your team configures new reports in Twenty using the imported Opportunity and Company data as the source.

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.

Q Dispatch logo

Q Dispatch gotchas

High

Export mechanism is not API-first

Medium

Custom field schemas do not transfer

Medium

Invoice and payment data may require reconciliation

Low

No free tier or trial documented

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

  • Import order dependency blocks records that reference missing parents

    Twenty's CSV import requires parent records to exist before children can reference them via id fields. Companies must import first so People records can set companyId correctly. Opportunities import third so companyId and assigneeId resolve. If Q Dispatch exports all objects simultaneously, People and Opportunities referencing uncreated Companies land with null foreign keys and require a second-pass fix. We sequence the migration and run dependency validation before each batch commits to catch dangling references before they become silent data gaps in Twenty.

  • WorkspaceMember invitations must complete before technician assignments resolve

    Twenty requires Workspace Members to exist in the system before Opportunity.assigneeId can reference them. Q Dispatch technicians need Twenty invitations sent and accepted before the migration runs. If a technician email has no corresponding Twenty user, their work orders flag as unassigned and assigneeId remains null. We run an email-matching pre-check against Twenty's WorkspaceMember list, surface unmatched technicians, and give your team a window to invite them before the full migration begins.

  • Twenty's 20,000-record export limit may require multi-file segmentation

    Q Dispatch setups with large datasets may export more than Twenty's 20,000-record-per-export ceiling. If your Q Dispatch instance holds 25,000 work orders, a single CSV export truncates at 20,000, leaving 5,000 records stranded in Q Dispatch. We prevent data loss by segmenting exports into multiple chunks filtered by date ranges or record ID ranges, consolidating each chunk into Twenty's supported batch import size, and validating that record counts match between source and destination systems after each chunk completes its migration cycle.

  • Custom Q Dispatch job fields require pre-creation in Twenty before import

    Twenty's CSV import creates records but not fields — custom fields on Q Dispatch work orders must exist in Twenty's Data Model (Settings → Data Model) before the import runs. If your Q Dispatch setup stores custom fields like job_type, site_name, or contract_id, your admin creates matching fields in Twenty first. We deliver a custom-field creation checklist based on the Q Dispatch schema audit so Twenty's data model is ready before any batch import executes.

  • Routing and auto-assignment logic does not transfer — rebuild required

    Q Dispatch's core value is its dispatch routing engine — technician-to-job matching based on region, availability, and skill. Twenty CRM has no native routing or auto-assignment module. Work orders migrate as Opportunities, but the rules that automatically assigned technicians to jobs in Q Dispatch do not exist in Twenty. Your team must rebuild this logic in Twenty's workflow builder. We export Q Dispatch routing rules as a text document (region-based assignments, skill matching criteria) to serve as a rebuild reference for whoever configures the Twenty workflows.

Migration approach

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

  1. Audit Q Dispatch schema and export configuration

    FlitStack inventories every Q Dispatch object (Customers, Contacts, Work Orders, Technicians, Notes, Attachments) and custom field definition. We identify which fields are actively used versus inherited defaults. We also run the email-matching pre-check against Twenty's WorkspaceMember list to surface technicians who need invitations. This audit produces the custom-field creation checklist for Twenty and flags any Q Dispatch data that has no natural mapping to Twenty's object model.

  2. Create Twenty data model and invite Workspace Members

    Your admin (or our team) creates the custom fields, custom objects, and pick-list values in Twenty's Settings → Data Model before migration. We deliver a step-by-step setup plan keyed to Q Dispatch's schema. Simultaneously, your team sends invitations to all Q Dispatch technicians so their Twenty accounts exist when work order assignments need to resolve. No migration batch runs until this phase is confirmed complete.

  3. Export Q Dispatch data and run dependency-ordered imports

    We export Q Dispatch data in CSV format, segmented by object with relationship IDs preserved. The migration sequence follows Twenty's dependency order: Companies first (1), then People with companyId links (2), then Opportunities with companyId and assigneeId (3), then Notes and Attachments last. We run the import via Twenty's REST API using batch calls respecting the rate limits for your tier (100/min Pro, 200/min Organization). Each batch validates record counts and foreign key resolution before the next batch begins.

  4. Run sample migration with field-level diff

    A representative slice (typically 100–500 records spanning Customers, People, Work Orders, and Notes) migrates first. We generate a field-level diff showing source values versus destination values for every mapped field. You verify that Q Dispatch status values map correctly to Twenty opportunityStage, technician emails resolve to Workspace Members, and custom fields populate as expected. Sample approval unlocks the full migration run.

  5. Execute full migration with delta-pickup window

    Full migration batch runs against Twenty. A delta-pickup window (typically 24–48 hours) captures any Q Dispatch records created or modified during cutover so Twenty reflects the final state at go-live. FlitStack generates an audit log of every imported record, field mapping applied, and any exceptions encountered. One-click rollback reverts the Twenty workspace to its pre-migration state if reconciliation reveals unexpected gaps. After validation, your team switches to Twenty and Q Dispatch read access is revoked.

Platform deep dives

Context on both ends of the pair

Q Dispatch logo

Q Dispatch

Source

Strengths

  • Purpose-built dispatch scheduling with a clear job lifecycle from request through completion
  • Mobile app for technicians to view assignments, update status, and navigate to service locations
  • Streamlined office-to-field coordination with job assignment and routing in a single interface
  • Responsive product team that listens to customer feature requests and releases updates regularly
  • Good fit for small-to-medium trade service businesses with straightforward scheduling needs

Weaknesses

  • Limited ERP breadth — the platform does not cover full accounting, inventory, or HRMS needs
  • CRM functionality is minimal; customer records are service-location references, not full relationship management
  • Custom field support is restricted; schema extensions must be recreated manually in the destination
  • Construction project controls are light, making it unsuitable for long-duration project-based service businesses
  • API documentation and export tooling are not publicly prominent, which complicates data extraction
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 manual workaround.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Q Dispatch and Twenty CRM.

  • Object compatibility

    B

    1 of 8 objects need a manual workaround.

  • 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

    Q Dispatch: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Q Dispatch to Twenty migrations complete in 48–72 hours of clock time for under 10,000 work orders. Larger datasets (50,000+ records) extend to 5–10 days depending on how many custom fields need pre-creation in Twenty and whether technician email resolution requires team follow-up. The longest single step is usually the technician invitation phase — Twenty Workspace Members must exist before Opportunity.assigneeId fields can resolve.

Adjacent paths

Related migrations to explore

Ready when you are

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