CRM migration

Migrate from Sanoflow to Twenty CRM

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

Sanoflow logo

Sanoflow

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

50%

5 of 10

objects map 1:1 between Sanoflow and Twenty CRM.

Complexity

BStandard

Timeline

3-5 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Sanoflow logo

Sanoflow

What's pushing teams away

  • WhatsApp API conversation-based pricing is opaque until active — teams underestimate Meta's per-conversation fees layered on top of Sanoflow's subscription.
  • Flows and automation logic do not export cleanly; no documented public API means migration requires manual recreation of workflows in the destination.
  • Tier limits on Channels (3 on Starter, 10 on Growth) force plan upgrades that were not anticipated during initial pricing discussions.
  • Teams with complex multi-brand or multi-region operations report friction managing multiple WhatsApp Business accounts under one Sanoflow org.
  • Customer support responsiveness is flagged as inconsistent in community discussions, particularly for Enterprise-tier billing disputes.

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

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

maps to

Twenty CRM

Person

1:1
Fully supported

Sanoflow 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

maps to

Twenty CRM

Company

1:1
Fully supported

Sanoflow 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

maps to

Twenty CRM

Opportunity or Task

many:1
Fully supported

Sanoflow 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

maps to

Twenty CRM

Opportunity Stage or Custom Field

lossy
Fully supported

Sanoflow 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

maps to

Twenty CRM

Custom Field

lossy
Fully supported

Sanoflow 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

maps to

Twenty CRM

Workspace and Role

lossy
Fully supported

Sanoflow 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

maps to

Twenty CRM

Custom Object or Note

lossy
Fully supported

Sanoflow 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

maps to

Twenty CRM

Not migratable

1:1
Fully supported

Sanoflow 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

maps to

Twenty CRM

Not migratable

1:1
Fully supported

Sanoflow 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

maps to

Twenty CRM

Campaign or Custom Object

1:1
Fully supported

WhatsApp 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.

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.

Sanoflow logo

Sanoflow gotchas

High

WhatsApp API conversation charges are not included in subscription price

High

Flow automation has no documented export or API access

Medium

Channel and Pipeline limits per plan are enforced, not soft

Medium

WhatsApp message templates do not transfer between Meta Business accounts

Low

No public review presence makes quality verification difficult

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

  • Enquiry records have no direct Twenty CRM equivalent

    Sanoflow Enquiries sit between a lead and a support ticket — they are linked to a Contact, assigned to a Pipeline, and may have a Flow attached. Twenty CRM has Opportunities for sales prospects and Tasks for follow-up actions, but no native Enquiry object. We ask the customer during scoping to decide whether Enquiries map to Opportunities (sales use case), Tasks (support use case), or a custom object. Skipping this decision results in Enquiry data being arbitrarily placed, causing data confusion post-migration.

  • Sanoflow Flow automation has no export path

    Sanoflow's Flow Builder is the core automation engine but has no documented public API or export endpoint. The Developer Hub referenced in the site footer returned no accessible content during research. We cannot extract Flow definitions programmatically. We document all active Flows during scoping — trigger conditions, step sequence, action types — as a Workflow Specification for the customer's admin to rebuild in Twenty's Workflow builder. Flows that reference WhatsApp message templates will additionally require Meta re-approval before the rebuilt Flow can send.

  • Twenty CRM requires manual custom field creation before import

    Twenty CRM's standard Person object has basic fields but users report onboarding friction because standard fields expected from HubSpot or Salesforce are missing (job title, department, source, contact type all require manual creation). We pre-create all Custom Field definitions in Twenty via Settings → Data Model before any data loads. If the customer plans to import CSV directly after migration, they must create custom fields first or the import will silently drop unmapped columns.

  • WhatsApp message templates do not transfer between Meta Business accounts

    WhatsApp Business message templates are tied to the specific Meta Business account connected in Sanoflow. Migrating to Twenty CRM means re-submitting all custom templates for approval in the new Meta Business account. Re-approval timelines typically run 24-48 hours. We flag all active WhatsApp message templates during scoping and document their content so the customer can resubmit promptly. Campaign send history migrates as metadata only; the customer cannot resume campaigns until template re-approval is complete.

  • Sanoflow Channel credentials cannot be migrated to Twenty

    WhatsApp Business API credentials, Instagram Business connections, and Messenger page tokens are destination-platform-specific. They cannot be exported from Sanoflow and do not work in Twenty CRM. We document all active Channel configurations during scoping so the customer knows exactly what to reconnect: new WhatsApp Business API setup in Twenty, re-authentication of Instagram and Messenger pages, and a review of which channels to retire versus migrate.

Migration approach

Six steps for a successful Sanoflow to Twenty CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

Sanoflow logo

Sanoflow

Source

Strengths

  • WhatsApp Business API integration without per-conversation markup, unlike competitors charging 12–35% premium.
  • Generous Starter tier (3 Channels, 5 Pipelines) lowers entry barrier for small teams evaluating the platform.
  • No-code Flow Builder with pre-built templates for common WhatsApp sales and support sequences.
  • Omnichannel Inbox unifying WhatsApp, Instagram, Messenger, and TikTok into a single agent workspace.
  • Multi-industry positioning (Healthcare, Ecommerce, Hospitality, Automotive) with vertical-specific workflow templates.

Weaknesses

  • No publicly documented API or developer documentation accessible via standard research — migration tooling is not supported.
  • WhatsApp conversation-based pricing by Meta adds a variable cost layer not visible in Sanoflow's own pricing page.
  • Flows and automation logic have no export path — workflows must be manually rebuilt in the destination platform.
  • Tier limits on Channels and Pipelines are restrictive for growing teams, potentially requiring unplanned plan upgrades.
  • Absence of public reviews on major platforms (G2, Capterra) makes independent quality assessment difficult.
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. 2 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 Sanoflow and Twenty CRM.

  • Object compatibility

    B

    2 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

    Sanoflow: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Migrations under 10,000 Contacts and a single Pipeline typically complete in three to five weeks. Migrations with multiple Pipelines, a complex Enquiry-to-Opportunity split decision, a large Custom Field set, or a parallel-system period extend to six to ten weeks. Discovery and schema creation run one to two weeks; data extraction and cleansing one week; production migration one to two weeks; cutover and validation one week. We do not include Workflow rebuild time in the migration timeline because that work belongs to the customer's admin using Twenty's Workflow builder.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Sanoflow.
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