CRM migration
Field-level mapping, validation, and rollback between Zixflow and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Zixflow
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between Zixflow and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Zixflow to Twenty CRM is a data-model simplification. Zixflow combines CRM, email finder, WhatsApp broadcaster, and SMS platform under one subscription with a wallet-based messaging model. Twenty CRM is an open-source CRM built as a GPL-licensed alternative to Salesforce and HubSpot with full customization, custom objects, and a REST and GraphQL API. We migrate Contacts and their Custom Fields cleanly, preserve Collection membership as group assignments, and convert Inbox conversation threads into time-ordered task and note records. Zixflow Flows define automation logic as a visual node graph that is not portable; we document each Flow's trigger and action sequence as a written runbook for the customer's admin to rebuild in Twenty's workflow builder. Wallet-based messaging credits and automation credits are billing artifacts with no data portability value and do not transfer. Teams leaving Zixflow typically cite per-message WhatsApp cost unpredictability, email finder accuracy gaps, and the desire for a purpose-built CRM with full data ownership and self-hosting options. Twenty's pricing at $9-$19 per user per month with unlimited contacts, custom objects, and custom fields removes the per-contact and per-credit constraints that Zixflow introduced.
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 Zixflow 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.
Zixflow
Contact
Twenty CRM
People
1:1Zixflow Contacts are the primary CRM record and map directly to Twenty People. We extract all standard fields (name, email, phone) and custom fields from the Contact schema. The email address serves as the dedupe key during import. If the contact was created from a Sales Simplify-era export and includes deal-related metadata, we preserve that data in a custom text field deal_metadata__c on the People record rather than assuming a native Deals object exists in Zixflow.
Zixflow
Collection
Twenty CRM
People (group tags)
1:manyZixflow Collections are list or grouping constructs that associate Contacts. We preserve Collection membership by creating a group-tag mapping table during export: for each Collection, we generate a list of contact IDs belonging to it. During import into Twenty, we create a custom select field collection_memberships__c on People and populate it with the Collection names, or we create a separate Group object with a membership relationship depending on the customer's preference. The mapping table is delivered as a CSV alongside the primary import.
Zixflow
Custom Field (on Contact)
Twenty CRM
Custom Field (on People)
1:1Zixflow supports custom fields including AI-generated custom fields on Contacts. We document the full custom field schema (field name, field type, picklist options if applicable) and create equivalent fields in Twenty via Settings -> Data Model before import. Text fields map to TEXT, number fields to NUMBER, date fields to DATE, picklist fields to SELECT with the same options. Fields must exist in Twenty before the CSV import runs.
Zixflow
Inbox Conversation
Twenty CRM
Task + Note
1:manyZixflow Inbox stores threaded message conversations across WhatsApp, SMS, Email, and RCS channels. The conversation threading model varies by channel, so we flatten each thread into a time-ordered sequence of Task records (one Task per message with TaskSubtype=Email, Call, or Custom, and Subject set to the channel and timestamp) and a Note record (body containing the full thread text). We set ActivityDate on each Task to the original message timestamp to preserve chronological ordering in Twenty's timeline view.
Zixflow
Form Submission
Twenty CRM
Custom Field + Note
1:1Zixflow Forms capture lead data. Form field values populate corresponding Contact custom fields during import. Form submission metadata (submission date, form name, UTM parameters if present) migrate as a Note attached to the People record with the form name as the Note title and submission details in the body. The visual form builder and form design do not transfer.
Zixflow
Flow (Automation)
Twenty CRM
Workflow (documentation only)
lossyZixflow Flows define automation logic as a visual node graph. The node structure is not a portable format and does not map to Twenty's workflow builder. We inspect each active Flow during scoping, document its trigger conditions (event-based or schedule-based), condition branches, and action sequence in a written runbook. The customer's admin rebuilds the logic in Twenty's workflow builder using the runbook as a specification. Flow documentation is delivered before migration cutover so rebuild work can begin in parallel.
Zixflow
User (Team Member)
Twenty CRM
User
1:1Zixflow User records represent seats. During migration we map Zixflow user email addresses to Twenty user accounts. We resolve by email match. Users must exist in Twenty before importing any records that reference them as owners or assignees. We flag any Zixflow user without a matching Twenty user for the customer to provision before record import resumes.
Zixflow
Company (if present in Zixflow)
Twenty CRM
Company
1:1Zixflow does not have a native Company object separate from Contact, but some accounts created during the Sales Simplify era may have company-related fields or groupings. If a Zixflow export includes company name or domain data, we create Twenty Company records from that data and link People records to them via the workEmail域 or a domain-match lookup. If no company data exists, we skip this object.
Zixflow
Messaging Credits (Wallet)
Twenty CRM
None
1:1Wallet-based messaging credits are a Zixflow billing artifact with no data portability value. WhatsApp, SMS, Email, and RCS credit balances reset to zero at the destination and are not migrated. We note this in the migration scope so the customer does not expect a balance transfer.
Zixflow
Analytics / Campaign Data
Twenty CRM
None
1:1Zixflow analytics including open rates, click rates, and delivery metrics are aggregated reporting outputs generated at query time. They are not stored as discrete records and cannot be exported as structured data. Campaign performance data does not migrate. We recommend the customer export any required reports as PDF or CSV from Zixflow before the migration window and store them externally.
| Zixflow | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | People1:1 | Fully supported | |
| Collection | People (group tags)1:many | Fully supported | |
| Custom Field (on Contact) | Custom Field (on People)1:1 | Fully supported | |
| Inbox Conversation | Task + Note1:many | Fully supported | |
| Form Submission | Custom Field + Note1:1 | Fully supported | |
| Flow (Automation) | Workflow (documentation only)lossy | Fully supported | |
| User (Team Member) | User1:1 | Fully supported | |
| Company (if present in Zixflow) | Company1:1 | Fully supported | |
| Messaging Credits (Wallet) | None1:1 | Not supported | |
| Analytics / Campaign Data | None1:1 | Not 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.
Zixflow gotchas
Rebrand from Sales Simplify left legacy customers without deal migration
WhatsApp per-message pricing shifted post-migration
CSV import enforces 100K record and 50MB file size caps
Flows cannot be directly exported as portable automation definitions
API authentication requires manual token generation per workspace
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
Discovery and data audit
We audit the source Zixflow workspace across active Contacts, Collections, Custom Fields, Inbox conversation volume, active Flows, and User accounts. We export a schema snapshot including all custom field definitions and types. We run a data quality assessment to identify duplicate contacts, records with missing email addresses, and contacts that originated in the Sales Simplify era with deal metadata requiring a custom field rather than a native object. The discovery output is a written migration scope covering record counts per object, custom field schema, Collection count, and estimated Inbox message volume.
Twenty workspace preparation
We set up the destination Twenty workspace before any data import. This includes creating all custom fields (with correct types, picklist options, and uniqueness constraints) via Settings -> Data Model, creating the collection_memberships__c field or a Group custom object per the customer's chosen strategy, and inviting all team members so that User records exist before records with owner references are imported. We configure any custom field defaults (currency, country code for phone fields) and set field visibility so the migration user has write access to all required fields.
Data export and transformation
We export Contacts from Zixflow via CSV including all standard and custom field values. We export Collections as a separate membership mapping table (Contact ID to Collection name pairs). We export Inbox conversations by channel, flatten each thread into message-level activity records, and format as a Task import CSV with channel, timestamp, sender, and body. We probe Zixflow's API with escalating request frequency to establish a safe export rate limit and implement exponential backoff to avoid throttling. All exports run against a read-only migration key scoped to the workspace.
Test migration into Twenty
We run a test migration into a Twenty workspace using a representative subset of records (typically 5-10 percent of total volume, including edge cases like records with special characters, long text fields, and missing optional fields). We validate record counts per object, spot-check 25-50 records against the Zixflow source, and confirm that custom field values populated correctly and Collection memberships resolved. Any mapping corrections are applied before the production migration begins. The customer reviews the test output and signs off.
Production migration in dependency order
We run production migration in record-dependency order: Users (validated as existing), Companies (if applicable), People (from Contacts), Tasks and Notes (from Inbox conversations), and Collection membership (applied as field values or Group membership records). Custom fields are pre-created in Twenty so that CSV column headers match exactly. Each phase emits a row-count reconciliation report before the next phase begins. We apply the same defensive backoff and retry logic against both Zixflow and Twenty APIs.
Cutover, Flow documentation delivery, and validation
We freeze Zixflow writes during cutover and run a final delta migration of any records modified during the migration window. We enable Twenty as the system of record and deliver the Flow documentation runbook to the customer's admin team. We support a five-business-day hypercare window where we resolve any data issues raised by the customer's team. We do not rebuild Zixflow Flows as Twenty Workflows inside the migration scope; the runbook is a specification document for the customer's admin to implement post-migration.
Platform deep dives
Zixflow
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 Zixflow and Twenty CRM.
Object compatibility
1 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
Zixflow: Not publicly documented.
Data volume sensitivity
Zixflow 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 Zixflow to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Zixflow 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 Zixflow
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.