CRM migration
Field-level mapping, validation, and rollback between Workiz and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Workiz
Source
Twenty CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Workiz and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Workiz is a field-service management platform built around jobs, clients, and scheduling for HVAC, plumbing, electrical, and similar trades. Its core objects are Client, Job, Lead, Estimate, Invoice, and Item, with automations scoped to dispatch and job-state triggers. Workiz does not function as a full CRM — it lacks native contact-company-opportunity relationship modeling. Twenty CRM is an open-source CRM with standard objects: People (contacts), Companies (accounts), Opportunities (deals), Notes, and Tasks. It supports custom objects and custom fields via Settings → Data Model, and imports data via CSV or REST/GraphQL API. Twenty does not have a native field-service job object, native invoicing, or a native product/line-item object — these require custom object creation. We map Workiz Clients to Twenty People, Workiz Jobs to Twenty Opportunities using custom fields for job status, job type, and scheduling data. Leads migrate directly. Estimates become Opportunities with line items stored in a custom Items object. Invoices require a custom Invoice object since Twenty has no native billing module. Custom fields from Workiz are recreated in Twenty's data model before import. Workiz automations (triggers, conditions, actions scoped to job-state events) do not migrate — they must be rebuilt in Twenty's workflow builder. GPS and phone data are preserved as custom fields or Tasks for reference, not operational automation.
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 Workiz 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.
Workiz
Client
Twenty CRM
People
1:1Workiz Clients map directly to Twenty People. Name, email, phone, address, and job title transfer as-is. The client-company distinction in Workiz (flat list) maps to Twenty's People object with a companyId relation to Companies. If a Workiz client represents a business entity, create a Company record and link the Person to it via companyId.
Workiz
Client (business entity)
Twenty CRM
Companies
1:1Workiz clients that represent companies rather than individuals (such as property management firms, commercial clients, or business-to-business service providers) migrate to Twenty Companies. Company name, domain, address, and industry map directly to Twenty's standard Company fields. For organizations with multiple service locations, each distinct address generates a separate Company record to preserve location-specific context and maintain accurate relationship mapping between people and company entities.
Workiz
Job
Twenty CRM
Opportunity + Custom Fields
1:1Workiz Jobs are the core entity with status, type, scheduled times, assigned technician, and client link. Twenty has no native job object. We create a set of custom fields on the Opportunity object: job_status (select), job_type (select), scheduled_start (datetime), scheduled_end (datetime), assigned_tech (text), and work_order_number (text). The Job-Client relationship becomes Opportunity linked to People via the opportunityPersonId field.
Workiz
Lead
Twenty CRM
People
1:1Workiz Leads map to Twenty People records, since Twenty does not have a separate Lead object. Lead name, email, phone, source, and status migrate as Person fields. The lead's company name creates a linked Company record if it does not already exist. Historical lead score or rating data migrates as a custom number field.
Workiz
Estimate
Twenty CRM
Opportunity + Custom Fields
1:1Workiz Estimates have line items, totals, status, and expiration dates. Twenty has no native estimate object. Estimates migrate as Opportunities with custom fields for estimate_number (text), estimate_status (select), and expiration_date (date). Line items reference a custom Items object. The Opportunity Amount field is populated from the estimate total.
Workiz
Invoice
Twenty CRM
Custom Object (Invoice__c)
1:1Workiz Invoices have invoice number, status (draft/sent/paid/overdue), issue date, due date, total, balance, and line items. Twenty has no native invoice object. We create a custom Invoice__c object in Twenty with fields for invoice_number, status, issue_date, due_date, total_amount, balance_due, and payment_method. Line items reference a custom Items object.
Workiz
Item
Twenty CRM
Custom Object (Item__c)
1:1Workiz Items store products and services with name, description, unit price, SKU, and item type (product/service/part). Twenty has no native product catalog. We create a custom Item__c object with name, description, unit_price (number), sku (text), and item_type (select). Items are linked to Invoice__c and Estimate Opportunity records via relation fields.
Workiz
Custom Field (Workiz)
Twenty CRM
Custom Field (Twenty)
1:1Workiz custom fields attach to Jobs, Clients, Leads, Estimates, Invoices, and Items. Each Workiz custom field is recreated as a custom field in Twenty's Data Model (Settings → Data Model) on the corresponding object. Pick-list fields in Workiz require value-by-value setup in Twenty's select options before import. Custom fields must be created before CSV import or the import will not populate them.
Workiz
Call (Engagement)
Twenty CRM
Task
1:1Workiz stores call logs with subject, duration, direction (inbound/outbound), and timestamp linked to the client or job. These migrate as Twenty Tasks with Type = 'Call', the original subject, start time, and duration. The Task is linked to the corresponding Person or Opportunity record. Original call owner resolves to Twenty Workspace Member by email.
Workiz
User / Owner
Twenty CRM
Workspace Member
1:1Workiz users (dispatchers, admins, field techs) become Twenty Workspace Members. Resolution is by email match. Workiz owner_id on Jobs and Estimates maps to Twenty Workspace Member via email lookup. Workiz technicians who should not access the CRM are flagged during planning — their records are assigned to a fallback owner in Twenty.
Workiz
Attachment / File
Twenty CRM
File (custom)
1:1Workiz files attached to Jobs (photos, documents, signatures) are downloaded and re-uploaded to Twenty. Twenty stores files in its file storage system and attaches them to the relevant Opportunity record. File size limits apply — Workiz files over Twenty's storage limit are flagged for compression before re-upload.
Workiz
Automation
Twenty CRM
Workflow (not migrated)
1:1Workiz automations are trigger-action rules scoped to job-state events (e.g., 'When job status changes to Scheduled, send SMS to client'). Twenty has a separate workflow system with different trigger/action architecture. Automations cannot be exported from Workiz in a transferable format and must be rebuilt manually in Twenty's workflow builder. We provide an automation audit document listing every active Workiz rule for your team to reference during the rebuild.
| Workiz | Twenty CRM | Compatibility | |
|---|---|---|---|
| Client | People1:1 | Fully supported | |
| Client (business entity) | Companies1:1 | Fully supported | |
| Job | Opportunity + Custom Fields1:1 | Fully supported | |
| Lead | People1:1 | Fully supported | |
| Estimate | Opportunity + Custom Fields1:1 | Fully supported | |
| Invoice | Custom Object (Invoice__c)1:1 | Fully supported | |
| Item | Custom Object (Item__c)1:1 | Fully supported | |
| Custom Field (Workiz) | Custom Field (Twenty)1:1 | Fully supported | |
| Call (Engagement) | Task1:1 | Fully supported | |
| User / Owner | Workspace Member1:1 | Fully supported | |
| Attachment / File | File (custom)1:1 | Fully supported | |
| Automation | Workflow (not migrated)1: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.
Workiz gotchas
QuickBooks Online sync conflict during job import
Automations do not export or migrate
Jobs and estimates imported as separate flat files can create duplicates
GPS location history and call recordings are not exportable
User permissions and roles do not transfer
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 Workiz data and plan Twenty schema
FlitStack AI connects to Workiz via API (or CSV export if API access is unavailable on your plan tier) and audits all objects: Clients, Jobs, Leads, Estimates, Invoices, Items, and every custom field. We identify which objects have relationships, which custom fields use pick-list values, and which Workiz automations are active. Simultaneously, we create a Twenty schema plan: custom Job__c or Opportunity-based job fields, custom Invoice__c, custom Item__c, and every custom field to be pre-created in Twenty's Settings → Data Model before import.
Export Workiz data in correct dependency order
We export Workiz data to CSV files in this order: (1) Companies/Clients that represent businesses, (2) People/Clients that represent individuals, (3) Leads, (4) Items (products and services), (5) Jobs with client and technician links, (6) Estimates with line item references, (7) Invoices with line item references, (8) Activity history (calls, notes). GPS coordinates and call metadata are extracted as supplementary files. Each export includes original created_at and updated_at timestamps preserved as separate fields for import into Twenty's custom datetime fields.
Pre-create Twenty custom objects and fields, then run sample migration
Before any data lands in Twenty, we create the custom objects (Invoice__c, Item__c) and all custom fields referenced in the field mapping. Twenty's import requires fields to exist first. We run a sample migration of 100–300 records spanning each object type and generate a field-level diff: source value vs. destination field for every mapped column. You review the diff to verify job status values, invoice amounts, line-item relations, and owner resolution before the full migration commits.
Execute full migration with delta-pickup window
Full migration runs against Twenty using the validated mapping. We apply the same dependency-order logic: Companies first, then People (linked to Companies), then Items, then Jobs/Leads/Estimates (linked to People and Companies), then Invoices (linked to People and Items). A delta-pickup window of 24–48 hours runs concurrently — any records created or modified in Workiz during the migration window are captured and imported in a final pass. Your team continues working in Workiz throughout. FlitStack AI uses scoped read-only API access to Workiz during this window.
Post-migration audit and automation rebuild support
After the final delta pass, we deliver a migration audit log: record counts per object, any records that failed validation, owner resolution report (matched vs. unmatched), and a list of custom fields that were created vs. skipped. We also deliver the Workiz automation audit with every active rule documented for rebuild in Twenty's workflow builder. If reconciliation reveals any discrepancies, FlitStack AI rolls back and re-migrates the affected object before closing the engagement.
Platform deep dives
Workiz
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 Workiz and Twenty CRM.
Object compatibility
3 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
Workiz: Not publicly documented.
Data volume sensitivity
Workiz 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 Workiz to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Workiz 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 Workiz
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.