CRM migration

Migrate from Service Toolz to Twenty CRM

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

Service Toolz logo

Service Toolz

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Service Toolz and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Service Toolz is a field service management platform centered on work orders, technician dispatch, and service scheduling. Twenty CRM is an open-source CRM built on People, Companies, Opportunities, Notes, and Tasks with a GraphQL API and unlimited custom objects. The migration from Service Toolz to Twenty CRM is a domain-shift migration: Service Toolz's operational constructs (work orders, line items, technician schedules) map into Twenty's CRM primitives (tasks, custom objects, workspace members). We migrate all standard Service Toolz records — contacts, companies, quotes, and work orders — preserving timestamps, owner assignments, and custom fields. Workflows, sequences, and automation rules do not migrate; they must be rebuilt in Twenty's automation engine. Our migration engine uses scoped read access against Service Toolz's API, resolves technician-to-workspace-member mappings by email, and sequences the load so Twenty's relationship constraints (Companies before People, People before Opportunities, Tasks last) resolve correctly. A 24–48 hour delta-pickup window captures in-flight work orders during cutover.

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

Service Toolz logo

Service Toolz

What's pushing teams away

  • Pricing is not published, so teams cannot benchmark Service Toolz against Jobber, Housecall Pro, FieldPulse, or ServiceTitan without sales engagement.
  • Smaller public review and integration footprint than market-leading FSM tools — fewer reference deployments to draw confidence from.
  • No marketplace of third-party apps; integrations are limited to QuickBooks Online, Twilio, and Google Calendar advertised on the product site, so connectivity to CRMs, payroll, or BI requires custom work.
  • Mobile field-tech experience is functional but not as polished as the leading vertical platforms (Workiz, FieldPulse, Housecall Pro) which compete hard on UX.
  • Reporting is descriptive (live KPI dashboards) rather than configurable BI — teams wanting cross-business analytics or finance forecasting outgrow it quickly.

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

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

Service Toolz

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Service Toolz contacts migrate as Twenty People records. Email, phone, address, and job title map directly. The primary company link in Service Toolz becomes the companyId relation in Twenty. Original create timestamps are preserved as a custom datetime field since Twenty's createdAt is set at migration time.

Service Toolz

Company

maps to

Twenty CRM

Company

1:1
Fully supported

Service Toolz company records migrate as Twenty Companies. Domain, industry, employee count, and annual revenue map to their Twenty equivalents. Parent-company hierarchies in Service Toolz map to Twenty's companyId self-reference. Companies must migrate before People to satisfy Twenty's import-order constraint.

Service Toolz

Quote

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Service Toolz quotes map to Twenty Opportunities. Quote name becomes Opportunity name. Quote amount maps to amount. Quote status (Draft, Sent, Accepted, Lost) maps to Opportunity stage via value mapping. The linked contact and company from the quote become the Opportunity's personId and companyId relations.

Service Toolz

Work Order

maps to

Twenty CRM

Task (customized)

1:1
Fully supported

Service Toolz work orders are the most complex migration object. Work order status, priority, scheduled date, and service type become Twenty task fields. The assigned technician email resolves to a Twenty workspace member. Work order line items (parts, labor) require either a custom task description format or a ServiceItems custom object with a relation to the task.

Service Toolz

Work Order Line Item

maps to

Twenty CRM

Custom Object (ServiceItem)

1:1
Fully supported

Service Toolz line items attached to work orders (part number, quantity, unit price, labor hours) do not map to any native Twenty field. We create a ServiceItem custom object with fields for itemType, partNumber, quantity, unitPrice, and laborHours, then create a one-to-many relation from the target Task to ServiceItem records.

Service Toolz

Technician

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Service Toolz technician records contain name, email, phone, certifications, and availability status. These map to Twenty workspace members: name and email are required, phone migrates as a custom field, certifications migrate as a text array or multi-select custom field. Availability status has no direct Twenty equivalent — it's preserved as a custom field for reference.

Service Toolz

Inventory Item

maps to

Twenty CRM

Custom Object (InventoryItem)

1:1
Fully supported

Service Toolz inventory (part numbers, stock levels, reorder points, bin locations) has no equivalent in Twenty's standard objects. We create an InventoryItem custom object with partNumber, stockQuantity, reorderPoint, binLocation, and unitCost fields. Inventory records link to Companies as a vendor relation.

Service Toolz

Invoice

maps to

Twenty CRM

Custom Object (InvoiceReference)

1:1
Fully supported

Service Toolz invoices include invoice number, amount, status, line items, and payment history. Twenty has no native invoicing. Invoice data migrates as read-only InvoiceReference custom object records — invoice number, amount, status, date, and linked companyId are preserved for historical reference. The payment transaction history migrates as Note records attached to the InvoiceReference.

Service Toolz

Custom Field (any object)

maps to

Twenty CRM

Custom Field (same object)

1:1
Fully supported

Service Toolz custom properties on any object migrate to Twenty custom fields created via Settings → Data Model before migration runs. Custom field data type mapping: text → TEXT, number → NUMBER, date → DATE, dropdown → SELECT, checkbox → BOOLEAN, multi-select → MULTI_SELECT. Pick-list values require value-by-value mapping.

Service Toolz

Attachment / File

maps to

Twenty CRM

Attachments (on People, Companies, Tasks)

1:1
Fully supported

Service Toolz file attachments on contacts, companies, and work orders re-upload to Twenty's attachment model. Files attach to the migrated record they were associated with in Service Toolz. Inline images in notes are extracted and re-hosted as Twenty attachments. File size limits from Service Toolz's storage tier apply.

Service Toolz

Note

maps to

Twenty CRM

Note

1:1
Fully supported

Service Toolz notes attached to any record migrate as Twenty Notes. The note body, create timestamp, and author (by email lookup to workspace members) are preserved. Notes attach to the target People, Company, or Task record via the relation field. Rich-text formatting is preserved where Service Toolz supports it.

Service Toolz

User / Owner

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

Service Toolz user records (dispatchers, admins, technicians) map to Twenty workspace members. Owner assignments on quotes and work orders resolve by email match to existing Twenty workspace members. Unmatched owners are flagged before migration — the team either creates the user in Twenty first or assigns records to a fallback workspace member.

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.

Service Toolz logo

Service Toolz gotchas

High

No public API means migration relies on report exports

Medium

Quote-to-Work Order ID linkage requires manual mapping

Low

Inventory quantities are point-in-time and may drift

Low

Add-on modules gate feature data

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

  • Work order line items require a custom object that Twenty does not natively support

    Service Toolz work orders contain line items (parts, labor, quantities, unit prices) that Twenty's standard Task object cannot store. The flat task schema holds one description, one assignee, one due date — but no repeating line-item structure. We solve this by creating a ServiceItem custom object with partNumber, itemType, quantity, unitPrice, and laborHours fields, then establishing a one-to-many relation from each migrated Task to its ServiceItem records. This requires pre-creating the custom object schema in Twenty before the migration runs, which we include in the setup plan delivered before data moves.

  • Service Toolz invoicing has no native equivalent in Twenty CRM

    Service Toolz includes a full invoice module with invoice numbers, line items, payment history, and payment status tracking. Twenty CRM has no native invoicing — it is a CRM, not an accounting or billing tool. Invoice data migrates as read-only InvoiceReference custom object records preserving invoice number, amount, status, and date, with payment history attached as Notes. Payment transaction details that require structured fields beyond a custom object must be rebuilt using a dedicated accounting integration (QuickBooks, Stripe, or similar) after migration. This is a functional gap that must be addressed in the post-migration integration plan, not during data migration.

  • Twenty's CSV import requires objects to land in strict dependency order

    Twenty enforces import-order constraints documented in its migration guide: Companies must import before People (because People have a required companyId relation), and Opportunities must import after People and Companies (because Opportunities reference both). Work order data — which references customers, companies, and technicians — must be the last object imported so all relation targets exist. If you import out of order, Twenty's API rejects records with unresolved foreign keys. We sequence the migration explicitly: Companies → People → Opportunities → Technicians → Tasks → Custom Objects, and validate each stage's record count before the next begins.

  • Technician-to-workspace-member resolution requires pre-existing Twenty users

    Service Toolz work orders carry technician assignments by email. Twenty's Task.assigneeId requires a valid workspace member ID — not an email string. The migration resolves technician emails to Twenty workspace members by matching against the email field on Twenty's workspaceMember records. If a technician email in Service Toolz has no corresponding workspace member in Twenty, the work order is flagged for manual assignment after migration rather than landing with a null assignee. The resolution step runs before the migration begins: we export Service Toolz technician emails, match against Twenty workspace members by email, and surface unmatched technicians so the team can create those users first.

  • Service Toolz workflows and automation rules cannot migrate to Twenty's workflow engine

    Service Toolz workflow rules operate on work-order stage transitions, scheduled dispatch triggers, and quote-to-work-order conversion logic. Twenty's automation engine uses triggers on Opportunity and Task creation/update, with conditions and actions configured in its workflow builder. The two systems' automation models are architecturally incompatible — there is no field-level export of Service Toolz rules that can be translated into Twenty conditions. We export the full list of Service Toolz workflows as a reference document for the Twenty admin to rebuild. The rebuild typically takes 1–3 days for teams with fewer than 10 workflows and a clear process map.

Migration approach

Six steps for a successful Service Toolz to Twenty CRM data migration

  1. Audit Service Toolz data across all modules

    We connect with scoped read access to Service Toolz and export every object: contacts, companies, quotes, work orders, technicians, inventory items, and invoices. We document record counts per object, identify custom properties on each object, assess data quality (duplicate detection, missing required fields, stale records), and build the data model map that drives the entire migration. This audit also surfaces objects — like invoice payment history and work-order line items — that require custom object creation in Twenty before migration can proceed.

  2. Design Twenty data model and pre-create custom objects

    Before any data moves, we deliver a Twenty setup plan: which custom objects to create (ServiceItem, InvoiceReference, InventoryItem), which custom fields to add to standard objects (serviceType, originalCreateDate, certifications, availabilityStatus), and which pick-list values to pre-populate for status and priority fields. We include the import-order constraint diagram from Twenty's documentation so the Twenty admin knows exactly what to create and in what sequence. Fields must exist before import — CSV import creates records, not schema.

  3. Resolve technician emails to Twenty workspace members

    We export Service Toolz technician records by email and cross-reference against Twenty workspace members. Matches land directly; unmatched technician emails are flagged and reported to the migration team with instructions: either create the workspace member in Twenty first, or assign those work orders to a fallback assignee. No work order migrates with an unresolved assignee — the task record either has a valid assigneeId or is flagged for post-migration assignment so the migration audit log stays clean.

  4. Run sample migration with field-level diff

    A representative slice — typically 100–300 records spanning contacts, companies, quotes, and work orders — migrates first. We generate a field-level diff comparing source values against destination values for every mapped field, flagging discrepancies in pick-list mappings, date formats, and null-handling. The diff report is shared with the customer for verification before the full run commits. This is where we catch mapping errors (wrong stage value, unconverted date format, missed custom field) before they affect the full dataset.

  5. Execute full migration with delta-pickup cutover

    The full migration runs in dependency order: Companies, then People, then Opportunities, then Technicians (as workspace members), then Tasks with ServiceItem relations, then InvoiceReference records. A 24–48 hour delta-pickup window opens at migration start to capture work orders created or modified during the cutover window. All operations are logged in the FlitStack audit log. If reconciliation fails — record counts don't match, required fields landed null — one-click rollback reverts the Twenty workspace to its pre-migration state so the team can remediate and retry.

Platform deep dives

Context on both ends of the pair

Service Toolz logo

Service Toolz

Source

Strengths

  • Wide vertical coverage including HVAC, plumbing, flooring, pool service, handyman, window cleaning, and telecoms.
  • Bundled CRM, quoting, work order, scheduling, inventory, invoicing, payments, and timesheet modules.
  • Native QuickBooks Online, Twilio (SMS), and Google Calendar integrations.
  • Mobile field-tech app removes paper work orders.
  • Live operational reports including job profit/loss, estimated vs actual hours, and completion percentage.

Weaknesses

  • Pricing not published; quote-only.
  • Small public review footprint vs Jobber, Housecall Pro, or ServiceTitan.
  • Limited third-party integration ecosystem (QuickBooks, Twilio, Google Calendar only).
  • Mobile UX less polished than category-leading FSM apps.
  • Reporting is dashboard-style rather than configurable BI.
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 Service Toolz 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

    Service Toolz: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Service Toolz to Twenty CRM migrations complete in 48–72 hours for under 50,000 records. The longest phase is typically the pre-migration setup — designing and creating custom objects in Twenty — which takes 3–5 days depending on how many Service Toolz modules are in use. Migrations with more than 500,000 records, multiple custom objects (ServiceItem, InvoiceReference, InventoryItem), or complex work-order-to-task line-item decomposition extend to 5–7 days. Discovery and schema design add 1–2 weeks before data moves.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Service Toolz.
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