CRM migration

Migrate from Workiz to Twenty CRM

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

Workiz logo

Workiz

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Workiz and Twenty CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Workiz logo

Workiz

What's pushing teams away

  • Support wait times are long when something breaks mid-job, leaving dispatchers stuck with no resolution for hours.
  • Add-on pricing for online booking, call tracking, and automations inflates the monthly bill beyond the headline plan cost.
  • Limited workflow customization forces growing teams to work around the platform rather than adapt it to complex job types.
  • Mobile app crashes and lag disrupt field techs who rely on real-time job updates and client info on-site.
  • Pricing at higher tiers feels steep relative to competitors offering similar features at lower per-user rates.

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

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

maps to

Twenty CRM

People

1:1
Fully supported

Workiz 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)

maps to

Twenty CRM

Companies

1:1
Fully supported

Workiz 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

maps to

Twenty CRM

Opportunity + Custom Fields

1:1
Fully supported

Workiz 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

maps to

Twenty CRM

People

1:1
Fully supported

Workiz 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

maps to

Twenty CRM

Opportunity + Custom Fields

1:1
Fully supported

Workiz 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

maps to

Twenty CRM

Custom Object (Invoice__c)

1:1
Fully supported

Workiz 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

maps to

Twenty CRM

Custom Object (Item__c)

1:1
Fully supported

Workiz 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)

maps to

Twenty CRM

Custom Field (Twenty)

1:1
Fully supported

Workiz 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)

maps to

Twenty CRM

Task

1:1
Fully supported

Workiz 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

maps to

Twenty CRM

Workspace Member

1:1
Fully supported

Workiz 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

maps to

Twenty CRM

File (custom)

1:1
Fully supported

Workiz 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

maps to

Twenty CRM

Workflow (not migrated)

1:1
Fully supported

Workiz 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.

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.

Workiz logo

Workiz gotchas

High

QuickBooks Online sync conflict during job import

High

Automations do not export or migrate

Medium

Jobs and estimates imported as separate flat files can create duplicates

Medium

GPS location history and call recordings are not exportable

Low

User permissions and roles do not transfer

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 requires custom fields to exist before CSV import

    Workiz custom fields attach dynamically to records. Twenty's CSV import creates records only — it does not create fields. If you import a CSV with a column for a custom field that does not yet exist in Twenty's Data Model, that column is silently ignored and the data is lost. We handle this by auditing all Workiz custom fields before import, creating each one in Twenty's Settings → Data Model with the correct type (text, number, select, date, etc.), populating select options for pick-list fields, and only then running the import. This is a sequencing requirement that adds planning time to every migration.

  • Workiz automations have no export path and must be rebuilt in Twenty

    Workiz Automations are trigger-action rules scoped to job-state changes, scheduling conditions, and client attributes. They are stored in Workiz's proprietary format and cannot be exported as a transferable definition. Twenty has its own workflow builder with triggers (record creation, field change, form submission) and different action types. All Workiz automations — SMS on job status change, email on estimate sent, dispatch notifications — must be rebuilt from scratch in Twenty's workflow system. We deliver an automation audit listing every active Workiz rule with its trigger, conditions, and actions so your team can rebuild them in Twenty.

  • Twenty has no native invoice or estimate object

    Workiz ships with full invoicing and estimate generation as native objects with line items, tax handling, and payment status. Twenty CRM does not include native invoice or estimate objects — these are listed in the roadmap but not yet available. Migrating invoice history requires creating a custom Invoice__c object in Twenty with custom fields for invoice number, status, issue date, due date, total, and balance. Line items reference a separate custom Item__c object. This custom object creation adds schema-setup time and requires your Twenty admin to validate the field configuration before the import pass runs.

  • Workiz per-user pricing does not translate to Twenty's model

    Workiz Standard, Pro, and Ultimate plans are priced per user seat with tier-based feature gates — automations, AI features, and API access are restricted by plan. Twenty CRM charges per user for Cloud access ($9/user/mo) with no feature gates: REST/GraphQL API, webhooks, custom objects, and workflows are included at every tier. Self-hosting is free. Teams migrating from Workiz should budget for Twenty's per-seat Cloud cost or infrastructure costs for self-hosting. Workiz users who are field technicians only (not CRM users) should not be counted as Twenty seats, which typically reduces the seat count compared to Workiz.

  • Workiz GPS and phone system data has no operational equivalent in Twenty

    Workiz includes GPS tracking for field technicians and a phone system with call masking, call recording, and call tracking. These features have no equivalent in Twenty CRM's data model. GPS coordinates for job locations can be stored as a text field on the Opportunity record for reference, but Twenty has no real-time map view or geolocation tracking. Call logs from Workiz migrate as Twenty Tasks with Type='Call', preserving subject and timestamp, but Workiz call recordings cannot be transferred — they must be exported from Workiz separately and stored outside Twenty. This should be identified during the data audit so the recordings are exported before the Workiz account is decommissioned.

Migration approach

Six steps for a successful Workiz to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

Workiz logo

Workiz

Source

Strengths

  • Real-time GPS tracking for every field tech on a shared map for fast dispatch decisions.
  • AI-powered scheduling that assigns jobs based on proximity, availability, and skill set.
  • Integrated phone system with call masking, recordings, and AI call insights linked to jobs.
  • Automations trigger on job status changes, client conditions, and timing to reduce manual follow-up.
  • Online payments via Workiz Pay allow field techs to collect payment on-site after job completion.

Weaknesses

  • Automations cap at 5 on Standard, 10 on Pro — workflow-heavy teams hit the ceiling quickly.
  • AI answering service cannot provide pricing information to callers, limiting its usefulness for quote requests.
  • QuickBooks Online integration requires caution: importing jobs while connected to QBO creates duplicate payment records.
  • Mobile app reliability issues (crashes, lag) have been reported by field techs working on-site.
  • No native export mechanism for GPS history, call recordings, or automation definitions.
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. 3 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 Workiz and Twenty CRM.

  • Object compatibility

    B

    3 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

    Workiz: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most Workiz-to-Twenty migrations complete in 2–4 weeks of calendar time for teams with under 50,000 records. The longest phase is schema setup — creating the custom Invoice__c and Item__c objects and all custom fields in Twenty's Data Model — which typically takes 3–5 days of planning before any import runs. The actual data migration (export, transform, import, delta pickup) runs in 48–72 hours. Migrations with over 50,000 records or complex multi-object relationships extend to 4–6 weeks. The delta-pickup window adds 24–48 hours of final sync time.

Adjacent paths

Related migrations to explore

Ready when you are

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