CRM migration

Migrate from Swivl Tech to Twenty CRM

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

Swivl Tech logo

Swivl Tech

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Swivl Tech and Twenty CRM.

Complexity

BStandard

Timeline

4–7 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Swivl Tech structures its data model around field-service operations: Customers, Jobs, Services, and Invoices with status, priority, location, and scheduling fields. Twenty CRM uses a standard B2B CRM schema: People (contacts), Companies (accounts), and Opportunities (deals) with a custom-field extension model. There is no native job or work-order object in Twenty, so Swivl job records become Opportunities with custom fields for service_type__c, job_status__c, service_address__c, and priority__c. Swivl invoice records map to a custom invoice_status__c pick-list on the Opportunity with payment date and due date as custom datetime fields. FlitStack AI sequences the migration so Companies are loaded first, then People linked by companyId, then Opportunities carrying the job-derived data. Custom fields for all non-standard attributes are created in Twenty before data lands. Workflows, dispatch rules, and scheduling automations from Swivl do not migrate — those must be rebuilt in Twenty's workflow builder. Activity history (calls, emails, meetings) migrates as Tasks and Notes with original timestamps and owner links. The migration runs against Twenty's REST and GraphQL APIs with rate-limit handling for large record sets.

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

Swivl Tech logo

Swivl Tech

What's pushing teams away

  • Swivl has no publicly documented REST API, making third-party integrations and automated data pipelines impossible without manual exports and imports.
  • The platform is built for small to mid-market operations; customers running 50+ technicians across multiple locations report that advanced multi-location management lags competitors like ServiceTitan.
  • No bulk data export mechanism is documented on the public website, creating risk for businesses that need to extract years of job and customer history for reporting or compliance purposes.

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

Each row shows how a Swivl Tech 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.

Swivl Tech

Customer

maps to

Twenty CRM

People

1:1
Fully supported

Swivl Tech Customer records map directly to Twenty People records. Name, email, phone, and address fields transfer directly. Custom fields such as Swivl customer role or department migrate as Twenty custom fields on the People object. Owner resolution happens by email match against invited Twenty workspace members.

Swivl Tech

Company / Business Account

maps to

Twenty CRM

Company

1:1
Fully supported

Swivl Tech stores company name and domain on Customer or Job records. These map to Twenty Company Name and Website fields. Industry and employee count from Swivl company records become custom fields in Twenty since Twenty does not include native industry or employee-count pick-lists. Parent-company relationships require manual review before migration.

Swivl Tech

Job

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Swivl Tech Job records — the core field-service entity — map to Twenty Opportunities. The job name becomes the Opportunity name, the service amount maps to Opportunity amount, and the scheduled date maps to the expected close date. Job status, service type, priority, and service address transfer as custom fields on the Opportunity because Twenty has no native job object.

Swivl Tech

Job Status

maps to

Twenty CRM

Custom field on Opportunity

1:1
Fully supported

Swivl job statuses (Scheduled, In Progress, Completed, Cancelled) require a custom pick-list field on Twenty Opportunity — typically named job_status__c. Values map one-to-one. A Twenty admin creates the pick-list options before migration so import validation does not reject records with unmapped status values.

Swivl Tech

Job Type / Service Category

maps to

Twenty CRM

Custom field on Opportunity

1:1
Fully supported

Swivl service type (HVAC repair, electrical, plumbing, etc.) maps to a custom text or pick-list field service_type__c on Opportunity. The field type depends on whether Swivl uses a controlled vocabulary or free-text entries. Free-text entries become custom text fields; controlled pick-lists become custom pick-list fields in Twenty.

Swivl Tech

Service Address / Job Location

maps to

Twenty CRM

Custom field on Opportunity

1:1
Fully supported

Swivl job location data (street, city, state, ZIP) has no native address field on Twenty Opportunity. We create service_address__c, service_city__c, service_state__c, and service_zip__c custom fields. Latitude and longitude, if present in Swivl, migrate as decimal custom fields for map-integration compatibility.

Swivl Tech

Invoice

maps to

Twenty CRM

Custom fields on Opportunity

1:1
Fully supported

Swivl Tech invoice records link to jobs and carry invoice number, amount, tax, status, and due date. These map to a set of custom fields on the related Opportunity: invoice_number__c, invoice_status__c (pick-list: Paid, Unpaid, Overdue, Void), invoice_amount__c, tax_amount__c, due_date__c, and paid_date__c. PDF invoice files are re-uploaded as Twenty Files attached to the Opportunity record.

Swivl Tech

Service (line item on Job)

maps to

Twenty CRM

Opportunity Line Item or Custom fields on Opportunity

many:1
Fully supported

Swivl services attached to a job — line-item descriptions and amounts — merge into the Opportunity amount field if single-service, or into a custom services_json__c text field capturing the full service breakdown as JSON when multiple line items exist. We preserve the original service descriptions as a text audit trail on the Opportunity.

Swivl Tech

Owner / Technician

maps to

Twenty CRM

WorkspaceMember relation

1:1
Fully supported

Swivl owner_id and technician_id fields resolve by email match against Twenty workspace members. FlitStack flags any Swivl owner with no matching Twenty user before migration so the team can invite them or reassign records to a fallback user. This prevents orphaned Opportunity records with unresolvable owner relations.

Swivl Tech

Call / Email / Meeting Activity

maps to

Twenty CRM

Task / Note

1:1
Fully supported

Swivl activity records (call logs, email threads, meeting notes) migrate as Twenty Tasks and Notes with original timestamps, owners, and parent-record links preserved. Tasks carry the activity subject and type; detailed body content migrates as a Note attached to the related People or Opportunity record. This preserves the full service communication history.

Swivl Tech

Attachment / File

maps to

Twenty CRM

Twenty Files

1:1
Fully supported

Swivl file attachments on jobs, invoices, or customer records re-upload to Twenty Files and attached to the target record. File size limits and inline image handling follow Twenty's upload constraints. We preserve the original filename and content type as metadata on each uploaded file.

Swivl Tech

Custom Object (Enterprise Swivl)

maps to

Twenty CRM

Custom Object

1:1
Fully supported

If Swivl Tech stores custom objects (e.g., Equipment, Warranty, Recurring Service Contract), those map 1:1 to Twenty custom objects. Custom object associations that use N:N relationships in Swivl require junction objects in Twenty. We document the relationship structure during the audit phase and surface any many-to-many mappings in the migration plan before data lands.

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.

Swivl Tech logo

Swivl Tech gotchas

High

No documented REST API for automated data extraction

Medium

Attachment files are not accessible via export

Low

Swivl brand name overlaps with unrelated products

Low

AI estimator outputs are not a standard CRM object

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 job object — job data must become custom fields on Opportunity

    Swivl Tech structures field-service data around Job records with service_type, job_status, priority, and service_address. Twenty CRM has no native job or work-order object — only People, Companies, Opportunities, Tasks, and Notes. We translate Swivl Job records into Twenty Opportunities and carry all service attributes as custom fields (job_status__c, service_type__c, service_address__c, priority__c). Your Twenty admin must create these custom fields before the migration runs, and the workflow builder cannot trigger on job_status changes because it operates on Opportunity stage, not a custom job status pick-list.

  • Twenty CSV import caps at 20,000 records per operation — large job histories require batching

    Twenty's built-in CSV import supports up to 20,000 records per export operation. Swivl Tech customers with thousands of job records and associated activity history will need their export split into multiple CSV files — one each for Companies, People, and Opportunities — and loaded in sequence. FlitStack handles this batching automatically, splitting Swivl's export at the 20,000-record boundary and tracking offsets so no records are skipped or duplicated. The API import path, available on all Twenty plans, is used for datasets exceeding the CSV ceiling.

  • Twenty requires Companies before People — import order is a hard constraint

    Twenty's data model makes companyId a required relation on the People object. This means Swivl Company records must be imported and committed to Twenty before any People records can reference them. If your Swivl data model stores company information directly on Customer records rather than as a separate object, we first extract and consolidate company records from the Customer dataset, then import those to Twenty as Companies, and finally import Customers as People with the newly created companyId relations. Skipping this step produces import failures and orphaned People records.

  • Swivl scheduling workflows and dispatch automations do not migrate to Twenty

    Swivl Tech's drag-and-drop dispatch board, technician scheduling rules, and job-triggered SMS automations are platform-specific constructs with no equivalent in Twenty. Twenty's workflow builder supports triggers (record creation, field change, date trigger) and actions (create task, update field, send webhook), but there is no native scheduling or dispatch board, no GPS integration, and no native SMS-outbound capability. We export your Swivl workflow definitions as a rebuild reference document, but the dispatch logic and any SMS sequences must be re-implemented in Twenty's workflow builder or via a third-party integration.

  • Twenty API rate limits differ by plan and apply per endpoint

    Twenty's REST and GraphQL APIs enforce per-minute rate limits: 100 calls per minute on the free/self-hosted tier, 100 per minute on Pro, and 200 per minute on Organization. During a migration with tens of thousands of records, FlitStack implements adaptive throttling that respects the target plan's ceiling, introduces retry-backoff on 429 responses, and distributes load across the import window. If your migration dataset exceeds 50,000 records and you are on the Pro plan, the migration clock extends to accommodate rate-limit pacing without data loss or duplicate inserts.

Migration approach

Six steps for a successful Swivl Tech to Twenty CRM data migration

  1. Audit Swivl Tech data model and export readiness

    FlitStack connects to Swivl Tech via API using scoped read access — no write permissions required. We extract a full data inventory: Customer records, Company records (or company attributes embedded in customers), Job records with all service fields, Invoice records, activity history, and any custom objects. We generate a data-quality report identifying duplicate records, missing required fields, and orphaned relationships before mapping begins. This audit phase also identifies which Swivl custom fields are pick-lists versus free-text so Twenty custom field types are configured correctly.

  2. Create Twenty schema and custom fields before data arrives

    Twenty requires all custom fields to exist before CSV or API imports can populate them. Based on the audit, FlitStack delivers a schema setup plan specifying: custom pick-list options for job_status__c and service_type__c, custom text fields for service_address__c and description__c, custom date fields for due_date__c and paid_date__c, and any junction objects for N:N relationships. We recommend creating these fields in a Twenty sandbox or test workspace first, running a sample migration, and verifying field visibility in the Twenty UI before committing to the production workspace.

  3. Invite and resolve all users in Twenty before importing records

    Twenty's People.companyId relation and Opportunity owner relations require workspace members to exist first. FlitStack resolves Swivl owner_id and technician_id values against Twenty workspace members by email match. Any Swivl owner with no corresponding Twenty user is flagged in a pre-migration report with options: invite them to Twenty, reassign their records to a fallback owner, or exclude them from the migration. No Opportunity or People record lands in Twenty without a resolvable owner — this prevents the orphan-record problem that breaks pipeline reporting after cutover.

  4. Run a sample migration with field-level diff across a representative slice

    A representative slice — typically 200 to 500 records spanning a range of job statuses, service types, and customer types — migrates first using the full field-mapping logic. FlitStack generates a field-level diff comparing source values against destination values so you can verify that service_type__c pick-list values rendered correctly, job_status__c translated as expected, and owner resolution produced valid Twenty users. You approve the sample before the full migration commits. This step is where custom field configuration errors surface before they affect your entire dataset.

  5. Execute full migration with delta-pickup and one-click rollback

    The full migration loads Companies first, then People with companyId relations, then Opportunities carrying all job-derived custom fields and invoice data. A delta-pickup window — typically 24 to 48 hours — captures any Swivl records created or modified during the cutover window. All operations are logged in an audit trail with source record IDs and destination record IDs for reconciliation. If post-migration validation reveals data integrity issues, FlitStack provides a one-click rollback that reverts the Twenty workspace to its pre-migration state using the recorded audit log.

Platform deep dives

Context on both ends of the pair

Swivl Tech logo

Swivl Tech

Source

Strengths

  • Free Starter plan with no seat limit provides unlimited contacts and basic features at zero cost.
  • Flat-rate monthly pricing at $49/mo Growth and $149/mo Scale Pro means costs are predictable regardless of team headcount.
  • All-in-one FSM stack (CRM, scheduling, GPS, invoicing, website builder) reduces tool sprawl for small service businesses.
  • Dedicated human account manager assigned from day one, uncommon in this price range.
  • Fast onboarding—Swivl claims setup can be achieved in minutes versus the 2–4 month implementation timeline of enterprise competitors.

Weaknesses

  • No publicly documented REST API limits integration options to pre-built connectors only.
  • No bulk data export endpoint means migrating out requires manual data extraction or direct database access.
  • The Scale Pro plan is required for pricebook management and advanced reporting, adding cost for businesses needing those features.
  • Limited documentation on third-party integrations compared to established competitors like Housecall Pro and Jobber.
  • Founded in 2020, Swivl is a younger platform with a shorter operational track record than competitors with 10+ years in the market.
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 Swivl Tech 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

    Swivl Tech: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Swivl Tech to Twenty migrations complete within 4–7 days for datasets under 10,000 records, including schema setup, custom field creation, the sample migration, and delta-pickup. Larger datasets with 50,000+ records, multiple service types, and active invoice histories extend to 2–4 weeks. The primary timeline driver is custom field creation in Twenty and the requirement to import Companies before People before Opportunities — violating this sequence produces import failures that require manual cleanup.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Swivl Tech.
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