CRM migration
Field-level mapping, validation, and rollback between Ziggu and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Ziggu
Source
Twenty CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Ziggu and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Ziggu and Twenty CRM serve fundamentally different purposes. Ziggu is a client-portal platform built for property developers — its data model centers on Projects, Units, Clients, Documents, and Conversations. Twenty CRM is a relationship-management platform with a standard People-Companies-Opportunities schema. The migration requires translating Ziggu's project-centric records into CRM-native objects: Ziggu Clients become Twenty CRM People records with linked Company records; Ziggu Projects map to Twenty CRM Opportunities, with pipeline stage values converted to Opportunity Stage pick-list entries; Ziggu Tasks migrate as Twenty CRM Tasks with original due dates and assignees; Document attachments re-upload to Twenty CRM Files or attach to Notes. The critical translation layer is mapping Ziggu's multi-status project lifecycle (Inquiry, Reservation, Contract, Handover) into Twenty CRM's Opportunity Stage model — this is not a 1:1 field map but a workflow decision your team makes before migration runs. FlitStack sequences the migration so Companies load first, then People with their companyId lookups, then Opportunities with linked company and person associations, then Tasks and Notes. Activity history (Conversations) migrates as Notes on the linked People record. Custom fields and add-on modules (Financials, Surveys, Sales) in Ziggu create custom fields or custom objects in Twenty CRM depending on their structure. Workflows, automations, and approval chains in Ziggu do not migrate — they must be rebuilt in Twenty CRM's workflow builder or documented for manual recreation.
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 Ziggu 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.
Ziggu
Client
Twenty CRM
People
1:1Ziggu Clients map directly to Twenty CRM People. Each Client record carries name, email, phone, and company association — these translate to People.name, People.emails.primary, People.phone, and People.companyId. Original client IDs preserved as custom field Source_Client_ID__c for delta-run de-duplication. Email addresses populate the emails array with the primary flag set, and any secondary phone numbers map to additional phone entries on the People record.
Ziggu
Client
Twenty CRM
Company
1:manyWhen a Ziggu Client record includes a company name field (companyName or similar), that value splits into a new Twenty CRM Company record with the person linked via companyId. If no company name exists, the person links to a default 'Individual Client' placeholder Company record to satisfy Twenty CRM's required companyId on People.
Ziggu
Project
Twenty CRM
Opportunity
1:1Ziggu Projects translate to Twenty CRM Opportunities. Project.name becomes Opportunity.name; project total value or unit prices sum into Opportunity.amount; project status (Inquiry/Reservation/Contract/Works/Handover) maps to Opportunity.stage values. Your team defines the stage pick-list before migration — FlitStack generates the value-mapping plan.
Ziggu
Unit
Twenty CRM
Opportunity (line item)
1:manyZiggu Units within a Project split into separate Twenty CRM Opportunities when each unit represents an independent deal (separate buyer, separate price). Units with shared buyer and price aggregate into a single Opportunity with amount = unit count × unit price. FlitStack surfaces the splitting logic in the pre-migration plan so your team confirms the rule before data moves.
Ziggu
Project Status
Twenty CRM
Opportunity Stage
1:1Ziggu project lifecycle stages (Inquiry, Reservation, Contract, Works, Handover) map to Twenty CRM Opportunity Stage values. Each source stage name maps to a target stage name via a value-map. Probability and forecast category re-applied from Twenty CRM's stage setup. Stage-transition timestamps preserved as custom datetime fields Stage_Entered_Date__c.
Ziggu
Task
Twenty CRM
Task
1:1Ziggu Tasks map 1:1 to Twenty CRM Tasks. Task.title → Task.title; Task.dueDate → Task.dueDate; Task.assignee email resolves to Twenty CRM workspace member by email match. Tasks linked to a Project attach to the migrated Opportunity; Tasks linked to a Client attach to the migrated People record.
Ziggu
Document
Twenty CRM
File / Note
1:1Ziggu Documents attached to Projects or Clients download and re-upload to Twenty CRM as Files on the corresponding Opportunity or People record. Documents with text content (specifications, briefs) migrate as Twenty CRM Notes with the file linked as an attachment. File size and format compatibility checked against Twenty CRM limits before migration.
Ziggu
Conversation
Twenty CRM
Note
1:1Ziggu Conversation messages migrate as Twenty CRM Notes on the linked People record. Each message becomes a separate Note with timestamp, sender, and message body. Original conversation threading is not preserved — messages appear as sequential notes ordered by creation date. Conversation metadata (read/unread status) does not migrate as Twenty CRM has no equivalent.
Ziggu
Financials add-on
Twenty CRM
Custom fields on Opportunity
1:1Ziggu Financials module (payment schedules, invoices, balances) translates to custom Number, Currency, or Date fields on Twenty CRM Opportunity. Payment status, amount paid, and balance due become custom fields: Z_Payment_Status__c, Z_Amount_Paid__c, Z_Balance_Due__c. Invoice line items require a custom Invoice_Lines__c relation object if granular detail must be preserved.
Ziggu
Surveys add-on
Twenty CRM
Custom Object
1:1Ziggu Surveys module translates to a Twenty CRM custom object (Survey_Response__c) with custom fields matching each survey question. Respondent email links to the People record via email match. Survey scores and NPS values become Number fields. Multi-question surveys create a one-to-many relationship (one People record → many Survey_Response__c records).
Ziggu
Sales add-on
Twenty CRM
Opportunity + Custom fields
1:1Ziggu Sales module (leads, reservations, contracts) maps to Twenty CRM Opportunities with custom fields capturing reservation status and contract terms. Reservation date becomes Z_Reservation_Date__c; contract signed flag becomes Z_Contract_Signed__c (checkbox). Pipeline stage handles the overall progression — the Sales add-on fields augment rather than replace the standard Opportunity object.
Ziggu
Owner / Team Member
Twenty CRM
Workspace Member
1:1Ziggu team member email addresses resolve against Twenty CRM Workspace Members by email match. Unmatched owners are flagged before migration — your Twenty admin either creates a matching workspace member or assigns those records to a fallback owner. No record lands without a valid Twenty CRM assignee.
| Ziggu | Twenty CRM | Compatibility | |
|---|---|---|---|
| Client | People1:1 | Fully supported | |
| Client | Company1:many | Fully supported | |
| Project | Opportunity1:1 | Fully supported | |
| Unit | Opportunity (line item)1:many | Fully supported | |
| Project Status | Opportunity Stage1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Document | File / Note1:1 | Fully supported | |
| Conversation | Note1:1 | Fully supported | |
| Financials add-on | Custom fields on Opportunity1:1 | Fully supported | |
| Surveys add-on | Custom Object1:1 | Fully supported | |
| Sales add-on | Opportunity + Custom fields1:1 | Fully supported | |
| Owner / Team Member | Workspace Member1: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.
Ziggu gotchas
Deactivated projects lock tasks and files but keep conversations open
Per-active-project pricing creates a minimum portfolio cost
Add-ons scale per active unit, not per project
No public API means migration runs through manual export workflows
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 Ziggu data and define Twenty CRM schema
FlitStack runs a scoped read export of your Ziggu workspace covering Clients, Companies, Projects, Units, Tasks, Documents, and Conversation history. We also inventory add-on module usage (Financials, Surveys, Sales) and flag records with missing required fields. Simultaneously, your team defines Opportunity Stage values in Twenty CRM matching your project lifecycle, and creates any custom fields or custom objects needed for add-on data. We deliver a schema setup checklist so the Twenty CRM workspace is ready before data validation begins.
Map Ziggu records to Twenty CRM objects and validate load order
FlitStack builds the field-level mapping document covering every source field to its Twenty CRM destination. We apply the unit-splitting rule (per-Unit Opportunity vs. aggregated) and confirm it with your project manager. The import sequence is locked: Companies first (to resolve companyId on People), then People (to resolve Opportunities' person links), then Opportunities, then Tasks and Notes. Documents and Conversations import last. We run a pre-flight check comparing record counts between Ziggu and the expected Twenty CRM load to catch orphaned relationships before the sample migration runs.
Resolve owners and workspace members by email
Ziggu team member and project owner email addresses are matched against Twenty CRM Workspace Members by exact email. Unmatched owners are flagged in a pre-migration report — your Twenty admin either invites the user to create a workspace member or assigns their records to a fallback owner. No record lands in Twenty CRM without a valid assignee. This step also surfaces inactive Ziggu users whose records will need reassignment.
Run sample migration with field-level diff
A representative slice migrates first — typically 200–500 records spanning Clients, Companies, Projects, Units, Tasks, and a sample Conversation thread. We generate a field-level diff between the Ziggu source values and the Twenty CRM destination fields so you can verify stage mapping, amount calculation, unit-splitting behavior, and owner resolution before the full run commits. You sign off on the sample before FlitStack proceeds to full migration.
Execute full migration with delta pickup window
Full migration runs against Twenty CRM using bulk CSV import. A delta-pickup window (typically 24–48 hours) captures any records created or modified in Ziggu during the cutover window. All operations are logged in FlitStack's audit log. If reconciliation fails — record counts don't match, required fields are blank, or association links break — one-click rollback reverts the Twenty CRM workspace to its pre-migration state. Your team keeps working in Ziggu during migration; no downtime in the source system.
Platform deep dives
Ziggu
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 Ziggu 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
Ziggu: Not publicly published — Ziggu states limits are tuned to integration use cases and confirmed during onboarding.
Data volume sensitivity
Ziggu 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 Ziggu to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Ziggu 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 Ziggu
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.