CRM migration
Field-level mapping, validation, and rollback between Sanoflow and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Sanoflow
Source
Twenty CRM
Destination
Compatibility
5 of 10
objects map 1:1 between Sanoflow and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Sanoflow is a WhatsApp-first conversational CRM organising customer data around Contacts, Enquiries, Pipelines, and Flows as the primary units. Twenty CRM is an open-source general-purpose CRM built in TypeScript with People, Companies, Opportunities, and a Workflow engine as its core objects. The migration is fundamentally a schema remap: WhatsApp-channel context does not transfer because WhatsApp Business API credentials are destination-platform-specific, Enquiry records (which are Sanoflow's unique hybrid of a lead and a support ticket) require a business decision on whether they map to Twenty Opportunities, Tasks, or a custom object, and Flow automation has no export path due to Sanoflow's absence of a documented public API. We handle the structural mapping of Contacts to People, Companies to Companies, and the Enquiry split, while flagging every limitation honestly so your admin team knows exactly what rebuild work follows.
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 Sanoflow 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.
Sanoflow
Contact
Twenty CRM
Person
1:1Sanoflow Contact records (name, phone, email, custom fields, owner assignment) map to Twenty CRM Person. The Contact's primary phone number maps to the phone field; email maps to the email field. We extract all Custom Field values and recreate them as custom fields on the Person object via Settings → Data Model before import. Owner assignment maps by email match to Twenty User.
Sanoflow
Company
Twenty CRM
Company
1:1Sanoflow does not have a dedicated Company object, but a Contact may have an associated company name. If the customer uses company-name fields on Contacts, we extract them and create Company records in Twenty CRM, then back-link the Person records via the company link field. If no company data is present, we skip the Company creation phase.
Sanoflow
Enquiry
Twenty CRM
Opportunity or Task
many:1Sanoflow Enquiries are a hybrid of inbound lead records and support ticket records, attached to a Contact and a Pipeline. We ask the customer to decide whether Enquiries map to Twenty CRM Opportunities (if the Enquiry represents a sales prospect) or Tasks (if it represents a support or follow-up action). Pipeline stage assignments map to Opportunity stage values or Task status. The original Sanoflow Enquiry ID is preserved in a custom field for audit traceability.
Sanoflow
Pipeline
Twenty CRM
Opportunity Stage or Custom Field
lossySanoflow Pipelines are Kanban boards with ordered stages. Each Pipeline maps to a Twenty CRM Opportunity record type with a configured stage sequence. If the customer has multiple Pipelines, we create multiple Opportunity record types in Twenty and assign the appropriate record type per Enquiry during migration. Stage names and order transfer as-is; stage-specific automation rules are documented but not migrated.
Sanoflow
Custom Field
Twenty CRM
Custom Field
lossySanoflow Custom Fields on Contacts and Enquiries (text, number, date, choice) migrate as Twenty CRM custom fields on the relevant object. Choice-field option sets migrate as Select or Multi-Select options in Twenty. We create the field definition first (Settings → Data Model → Add Field), then populate values during the data load. API field names are preserved where possible; Twenty requires API names to be unique and alphanumeric.
Sanoflow
Team
Twenty CRM
Workspace and Role
lossySanoflow Teams and Custom Roles govern which agents see and manage which Enquiries. We extract team membership and role names. Twenty CRM uses a workspace-based permission model with Roles from the Organization plan ($19/user). We document the team-to-role mapping and note where simplification is required if the destination plan is Pro ($9/user), which has fewer permission granularities.
Sanoflow
Enquiry Form
Twenty CRM
Custom Object or Note
lossySanoflow Enquiry Forms are inbound entry points that create Enquiry records. We migrate form field definitions and map them to Twenty CRM's custom field structure on the target object. Form routing rules (which Flow triggers on form submission) do not migrate because Flows cannot be exported. We document routing rules in the Workflow Specification so the admin can rebuild them in Twenty's Workflow builder.
Sanoflow
Channel
Twenty CRM
Not migratable
1:1Sanoflow Channels represent connected WhatsApp, Instagram, Messenger, and TikTok accounts. Channel configurations including WhatsApp Business API credentials, phone number associations, and webhooks are destination-platform-specific and cannot be transferred to Twenty CRM. We document the active Channel list during scoping so the customer knows what to reconnect manually in Twenty's integration settings.
Sanoflow
Flow
Twenty CRM
Not migratable
1:1Sanoflow Flows are no-code automation workflows built with Triggers, Messages, and Actions. No public export endpoint exists. We extract Flow metadata (name, trigger type, step count, associated Pipeline) and deliver it as a Workflow Specification Document describing each Flow's logic in plain language so the customer's admin can manually rebuild it in Twenty's Workflow builder.
Sanoflow
WhatsApp Broadcast and Campaign
Twenty CRM
Campaign or Custom Object
1:1WhatsApp campaign metadata (audience segment names, message template references, send history) migrates as a documented record set. Actual WhatsApp message template approval status does not carry over because templates are tied to the Meta Business account. We flag all active templates, document their content, and note that re-submission to Meta for approval (typically 24-48 hours) is required before campaigns resume.
| Sanoflow | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company | Company1:1 | Fully supported | |
| Enquiry | Opportunity or Taskmany:1 | Fully supported | |
| Pipeline | Opportunity Stage or Custom Fieldlossy | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Team | Workspace and Rolelossy | Fully supported | |
| Enquiry Form | Custom Object or Notelossy | Fully supported | |
| Channel | Not migratable1:1 | Fully supported | |
| Flow | Not migratable1:1 | Fully supported | |
| WhatsApp Broadcast and Campaign | Campaign or Custom Object1: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.
Sanoflow gotchas
WhatsApp API conversation charges are not included in subscription price
Flow automation has no documented export or API access
Channel and Pipeline limits per plan are enforced, not soft
WhatsApp message templates do not transfer between Meta Business accounts
No public review presence makes quality verification difficult
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 object model decision
We audit the Sanoflow portal: record counts for Contacts, Enquiries, Pipelines, and Custom Fields; active Flows and their trigger types; active Channels; team and role assignments; and any tier-gated objects that may have been unavailable at the customer's current plan. We ask the customer to confirm whether Enquiries map to Twenty Opportunities, Tasks, or a custom object. We also identify any duplicate or dirty records (duplicate phone numbers, incomplete contact profiles) that require cleansing before migration. The discovery output is a written scope document and migration map.
Custom field and schema creation in Twenty
We create all required custom fields in Twenty CRM (Settings → Data Model) before any data load. Custom fields are created on the Person, Company, and Opportunity (or Task) objects matching the Sanoflow Custom Field definitions. We configure Select and Multi-Select option sets, set default country codes for phone fields, and enable API mode to confirm API field names before import begins. This phase runs in the customer's Twenty workspace (self-hosted or cloud) so schema is validated before record migration starts.
Data extraction and cleansing from Sanoflow
We extract Contacts with all Custom Field values, Enquiry records with Pipeline and stage assignments, Company data (if present), and team membership. We deduplicate by phone number and email, flag records with missing required fields, and produce a cleansing report for the customer to resolve. WhatsApp conversation history and media attachments are noted as out of scope because Sanoflow does not expose a document export or API for message content.
Workflow Specification Document delivery
We deliver the Workflow Specification Document describing every active Sanoflow Flow in plain language: trigger condition (e.g., new Enquiry from WhatsApp), step sequence, message content, and action types. We do not rebuild Flows in Twenty because they cannot be extracted. The document serves as a rebuild guide for the customer's admin using Twenty's Workflow builder. We offer this as a separate service if the customer prefers FlitStack AI to build the Twenty Workflows after migration.
Production migration in dependency order
We run production migration in record-dependency order: Person records first (with owner assignment by email match to Twenty User), Company records second (with Person back-linking), then Opportunity or Task records (with Pipeline stage mapping applied). Custom Field values are loaded in the same pass as their parent records. We run row-count reconciliation after each phase before the next begins. We flag any Sanoflow Owner without a matching Twenty User for the customer's admin to provision.
Cutover, validation, and Channel reconnect handoff
We freeze Sanoflow writes during cutover, run a delta migration of any records modified during the migration window, then deliver a final reconciliation report. We provide a Channel Reconnect Checklist listing every WhatsApp, Instagram, and Messenger account to re-authenticate in Twenty. We deliver the Workflow Specification and a brief handoff call with the customer's admin. We do not provide post-migration admin support, training, or Workflow rebuild as standard scope; these are separate engagements.
Platform deep dives
Sanoflow
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Sanoflow and Twenty CRM.
Object compatibility
2 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
Sanoflow: Not publicly documented.
Data volume sensitivity
Sanoflow 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 Sanoflow to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Sanoflow 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 Sanoflow
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.