CRM migration

Migrate from improveit 360 to Twenty CRM

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

improveit 360 logo

improveit 360

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

11 of 11

objects map 1:1 between improveit 360 and Twenty CRM.

Complexity

BStandard

Timeline

48-72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

improveit 360 is built on Salesforce Lightning, which means it inherits Salesforce's full object model: Accounts, Contacts, Leads, Opportunities, Cases, Tasks, Events, and custom objects with the __c suffix. Twenty CRM ships with four standard objects — People, Companies, Opportunities, and Tasks — plus custom objects on Pro and Organization plans. The migration must translate Salesforce's relational structure (Contacts require AccountId, Opportunities require AccountId and may use Contact Roles) into Twenty's simpler model where Opportunities link directly to Companies and People. We extract improveit 360 data via Salesforce's Bulk API or REST API (depending on volume), transform field names and pick-list values, and load into Twenty via CSV import or GraphQL API. Project management data (jobs, schedules, payments) has no Twenty equivalent — we surface this as a migration decision point and can build custom objects in Twenty to preserve the data if needed. Workflows, automations, approval processes, and Salesforce Flow logic do not migrate and must be rebuilt in Twenty's workflow builder or documented for manual recreation. Reports and dashboards cannot migrate — the underlying data does transfer, but visualization configuration requires rebuild in Twenty's reporting interface.

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

improveit 360 logo

improveit 360

What's pushing teams away

  • Steep onboarding and complexity make the platform difficult to use for smaller crews; at least 15 full-time users are required, pricing out smaller contractors.
  • Lack of a documented public API limits integration options and makes automated migrations or third-party tool connections difficult to execute.
  • Some users report the interface is overwhelming with too many features layered on top of each other, slowing daily adoption by field sales staff.
  • Customisation of dashboards and reports requires technical knowledge, creating friction for non-technical office managers who want to act on the data.

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

Each row shows how a improveit 360 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.

improveit 360

Contact

maps to

Twenty CRM

People

1:1
Fully supported

Salesforce Contact maps to Twenty People. All standard fields (name, email, phone, job title, address) transfer directly. The AccountId lookup in Salesforce becomes companyId in Twenty — the parent Company record must import first so the foreign key resolves correctly.

improveit 360

Account

maps to

Twenty CRM

Company

1:1
Fully supported

Salesforce Account maps to Twenty Company. Standard fields (name, website, industry, employee count, annual revenue) transfer directly. ParentId hierarchy in Salesforce — where an Account can have a parent Account — has no native equivalent in Twenty; we flatten to a single company per record and preserve parent linkage in a custom text field.

improveit 360

Lead

maps to

Twenty CRM

People

1:1
Fully supported

Twenty has no native Lead object. All Salesforce Leads migrate to Twenty People with a custom lead_status field capturing the original Lead Status value. The original isConverted flag and convertedDate are preserved as custom fields if the Lead was previously converted to a Contact in improveit 360.

improveit 360

Opportunity

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Salesforce Opportunity maps to Twenty Opportunity on a 1:1 basis. Deal name becomes Opportunity name, amount transfers as amount, close date maps to closeDate, and stage maps to stage. Stage probability and forecast category do not transfer — Twenty's Opportunity object does not have native probability fields.

improveit 360

Task

maps to

Twenty CRM

Task

1:1
Fully supported

Salesforce Tasks (calls, to-dos, follow-up items) migrate to Twenty Tasks. Subject, status, priority, due date, and description transfer directly as standard fields. The WhoId (Contact or Lead reference) resolves to the migrated People record via the source system ID stored in Source_System_ID__c, maintaining the original activity attribution across both systems.

improveit 360

Event

maps to

Twenty CRM

Task

1:1
Fully supported

Salesforce Events (meetings, appointments) convert to Twenty Tasks because Twenty has no native calendar Event object. The meeting subject becomes the Task subject, start time becomes due date, and the original duration is preserved in the description field. Activity history remains searchable in Twenty.

improveit 360

Note

maps to

Twenty CRM

Note

1:1
Fully supported

Salesforce Notes migrate to Twenty Notes with the same body text. Rich-text formatting is preserved where Salesforce NoteBody supports it. Notes attached to Contacts, Accounts, or Opportunities link to the migrated People, Company, or Opportunity record via the stored source system ID.

improveit 360

Attachment

maps to

Twenty CRM

Attachment (via file re-upload)

1:1
Fully supported

Salesforce Attachment records (files attached to records) have no direct Twenty equivalent. During migration, we download all attachment files to local storage, then re-upload them to Twenty's file storage system. After upload completes, we recreate the original attachment links on the corresponding People, Company, or Opportunity record using the stored source system ID cross-reference to ensure proper association.

improveit 360

Custom Object __c

maps to

Twenty CRM

Custom Object

1:1
Fully supported

improveit 360 custom objects (configured in Salesforce) migrate to Twenty custom objects. Custom object names are preserved. Custom field creation must happen in Twenty Settings → Data Model before the migration runs — we deliver a schema setup checklist as part of the migration plan.

improveit 360

Project (improveit 360 specific)

maps to

Twenty CRM

Custom Object

1:1
Fully supported

improveit 360's project management objects (jobs, schedules, cost tracking, payments) are not native Salesforce objects — they are improveit 360-specific configurations. We audit which project objects exist in your instance and surface them as custom object candidates for Twenty. If your team uses these heavily, we recommend building them as Twenty custom objects post-migration.

improveit 360

User (Owner)

maps to

Twenty CRM

Workspace Member

1:1
Fully supported

Salesforce Users who own records resolve to Twenty Workspace Members by email match. The Twenty workspace must have users invited and active before migration so owner assignments can link correctly. Unmatched owners are flagged and assigned to a fallback user on your instruction.

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.

improveit 360 logo

improveit 360 gotchas

High

No public REST API documented for data export or import

High

Minimum user requirement of 15 full-time seats

Medium

Duplicate prevention rules silently block imported records

Medium

Custom reports and dashboards do not transfer via standard export

Low

Pipeline stage names are per-customer configurable

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

    Unlike Salesforce where custom fields are created alongside record creation via API, Twenty enforces a schema-first approach: you must create all custom fields in Settings → Data Model before uploading CSV data. FlitStack delivers a pre-migration checklist of every custom field that needs to exist in Twenty, with field type, pick-list options, and whether it is required. If you import a CSV with a column that has no matching Twenty field, that column is silently ignored. This is the most common source of field-loss in improveit 360 to Twenty migrations — we validate field coverage before any import step runs.

  • Salesforce Leads have no Twenty native equivalent

    Salesforce separates Leads (unqualified prospects) from Contacts (qualified people with an Account). Twenty CRM has a single People object that covers both cases. When migrating Leads from improveit 360, we create People records with a custom lead_status__c field preserving the original Status value (New, Working, Nurturing, etc.). The isConverted flag is also preserved as was_converted__c if the Lead was previously converted. This is not data loss, but the routing logic your team uses to qualify Leads must be rebuilt as a Twenty workflow or manual sorting behavior.

  • improveit 360 project and payment data requires custom object work

    improveit 360 extends Salesforce with industry-specific objects for project scheduling, job costing, and payment processing. Twenty has no native project management objects — these do not map automatically. FlitStack audits your improveit 360 instance to identify which custom objects are active, counts records in each, and delivers a custom object design proposal for Twenty. You can choose to migrate project data as Twenty custom objects (Pro or Organization plan required), leave it in a flat reference export, or archive it separately.

  • Salesforce Activity history (Emails, Calls, Meetings) maps to Twenty Tasks

    Salesforce stores email activities as EmailMessage records linked to Contacts, call logs as Tasks with Type='Call', and meetings as Events with start/end times. Twenty has a single Tasks object for activity tracking. We convert all Salesforce activity records to Twenty Tasks: meeting Events get their subject as task title and start time as due date, call Tasks preserve the Type='Call' designation in the description, and email records become Tasks with Type='Email'. Original timestamps and owners transfer, but the calendar-style Event layout does not exist in Twenty.

  • Twenty CSV import is capped at 10,000 records per file

    Twenty's built-in CSV import supports up to 10,000 records per file and 20,000 records per export. For improveit 360 migrations with more than 10,000 Contacts, 10,000 Accounts, or 10,000 Opportunities, FlitStack uses Twenty's GraphQL API for batch loading instead of the CSV import UI. API-based import bypasses the file-size limit and handles the relationship resolution (companyId on People, companyId on Opportunities) programmatically. We validate API rate limits against your Twenty plan tier before the migration runs.

Migration approach

Six steps for a successful improveit 360 to Twenty CRM data migration

  1. Audit improveit 360 Salesforce instance and scope custom fields

    FlitStack connects to your improveit 360 Salesforce instance via Bulk API or REST API (chosen by record volume) and exports the full object inventory: Contacts, Accounts, Leads, Opportunities, Tasks, Events, Notes, Attachments, and all custom objects with __c suffix. We generate a custom field manifest listing every custom field, its type, pick-list values, and whether it is required. This manifest becomes the pre-migration checklist for setting up Twenty's data model before import begins.

  2. Create Twenty workspace and set up custom fields

    Using the custom field manifest from Step 1, your team creates all required custom fields in Twenty Settings → Data Model before data lands. FlitStack delivers a field creation guide with exact names, types, and pick-list options. If your Twenty plan is Pro or Organization, we also map custom object names and create the object definitions. Workspace members must be invited and active so owner resolution can match improveit 360 Users to Twenty members by email.

  3. Migrate Companies first, then People, then Opportunities

    Twenty requires the 'one' side of relationships to exist before the 'many' side imports. We sequence the migration: Companies (Accounts) first because People require companyId and Opportunities require companyId. Leads and Contacts migrate as People records in a single pass with a was_lead__c flag on former Leads. Opportunities link to the migrated Company records via the stored Source_System_ID__c cross-reference table. Attachments are downloaded during this phase and staged for re-upload.

  4. Run sample migration with field-level diff

    A representative slice of 100-500 records — spanning Contacts, Accounts, Opportunities, and a sample of activity history — migrates first. We generate a field-level diff showing every source field, its Twenty destination, the transferred value, and any fields that were skipped or transformed. You verify stage mapping, owner resolution, companyId linkage, and custom field population before the full run commits. This is the validation gate before any bulk operation.

  5. Execute full migration with delta-pickup window

    The full record set migrates in sequence. During the cutover window (typically 24-48 hours), your team continues working in improveit 360. FlitStack captures a delta export of all records modified or created after the initial migration snapshot and applies those changes to Twenty. Attachments re-upload to Twenty's file storage. An audit log records every operation. If reconciliation fails, one-click rollback reverts the Twenty workspace to its pre-migration state so you can remap and retry.

Platform deep dives

Context on both ends of the pair

improveit 360 logo

improveit 360

Source

Strengths

  • All-in-one CRM, quoting, scheduling, and job costing purpose-built for remodelers and replacement contractors.
  • Automated activity logging, duplicate prevention, and lead scoring built into the sales workflow.
  • Multi-location and franchise support with consistent data structures across branches.
  • Integrated production grid and project templates streamline field-to-office coordination.
  • Strong customer success reputation in the home improvement vertical with long-tenured accounts.

Weaknesses

  • No documented public API limits programmatic access and complicates automated migrations.
  • Steep onboarding curve; the platform is designed for teams of 15+, making it inaccessible for smaller contractors.
  • Interface complexity has a steep learning curve reported by non-technical office staff.
  • Custom reports and dashboards require technical knowledge to configure and maintain.
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 improveit 360 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

    improveit 360: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most improveit 360 to Twenty migrations complete in 48-72 hours for under 50,000 total records. Larger instances with 200,000+ records or multiple custom objects extend to 5-10 days. The longest step is usually custom field setup in Twenty — your team must create fields in Settings before import. FlitStack delivers the field manifest in the first 1-2 days so this work runs in parallel with planning.

Adjacent paths

Related migrations to explore

Ready when you are

Move from improveit 360.
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