CRM migration
Field-level mapping, validation, and rollback between Sales Snap and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Sales Snap
Source
Twenty CRM
Destination
Compatibility
7 of 10
objects map 1:1 between Sales Snap and Twenty CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Sales Snap to Twenty CRM is a migration driven by a shift from a closed, outreach-centric small-team CRM to an open-source platform with a documented API, self-hosting option, and a flexible data model. Sales Snap publishes no public REST endpoint and no bulk data export, which means all source data retrieval is manual CSV downloads from the UI. We scope that effort upfront with the customer and carry it as a separate workstream in the project plan. On the destination side, Twenty CRM's data model (People, Companies, Opportunities, Tasks, Notes, Comments, Files) accommodates the full Sales Snap object set, but sequence-based outreach workflows have no direct equivalent in Twenty and must be rebuilt using its workflow builder or external automation tooling. We deliver a written inventory of every Sales Snap sequence with its step order, timing rules, and personalization tokens so the customer's admin can reconstruct the outreach cadence in Twenty. We do not migrate attachment binaries, which are not included in Sales Snap's standard export, and we flag this gap in the scoping document.
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 Sales Snap 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.
Sales Snap
Contact
Twenty CRM
Person
1:1Sales Snap Contact records map to Twenty CRM Person records. We extract name fields (firstName, lastName), email, phone, company name, lifecycle stage, and any visible custom fields from the CSV export. Email address serves as the dedupe key. The Sales Snap lifecycle stage property maps to a custom field on the Twenty Person record so that original stage history is preserved for audit. Lifecycle stage is not a native Twenty Person field in v1.x, so we create a custom field (lifecycle_stage__c) during schema setup.
Sales Snap
Company/Account
Twenty CRM
Company
1:1Sales Snap Company records (exported per-contact or as standalone rows) map to Twenty CRM Company records. Deduplication occurs on company name during import. The Twenty Company record is created before Person import so that the Person-to-Company link is satisfied at the moment of insert. Any Sales Snap contacts without a matching company are imported as Persons without a Company link and flagged for reconciliation.
Sales Snap
Deal
Twenty CRM
Opportunity
1:1Sales Snap Deal records map to Twenty CRM Opportunity records. The deal name, amount, stage, owner, and close date migrate directly. Sales Snap pipeline stages map to Twenty Opportunity stage values that we configure during schema setup. Deals without a linked Contact in Sales Snap are flagged as orphaned and require manual contact linking in Twenty post-import.
Sales Snap
Pipeline Stage
Twenty CRM
Opportunity Stage
lossySales Snap does not expose a configurable pipeline object in CSV exports; pipeline state is inferred from the lifecycle stage on each Contact record. We extract unique stage values from the Sales Snap export, map them to Twenty Opportunity stage values during schema design, and create a stage probability mapping that the customer validates before migration runs. Pipeline configuration is rebuilt in Twenty's settings as a prerequisite step.
Sales Snap
Sequence
Twenty CRM
Workflow (documented for rebuild)
lossySales Snap Sequences (email templates, step order, timing delays, personalization tokens) are core to the source platform but have no direct equivalent in Twenty CRM's v1.x workflow builder. We inventory every Sequence in the export: template subject, body copy, personalization tokens, step order, and inter-step wait durations. We deliver a written Sequence Rebuild Document that maps each Sales Snap step to a Twenty Workflow step or recommends an external sales engagement tool (Lavender, Apollo, Instantly) if cadence-style sequencing is required. We do not build the workflow in Twenty as part of migration scope.
Sales Snap
Task
Twenty CRM
Task
1:1Sales Snap Tasks (follow-up tasks generated by sequences or created manually) map directly to Twenty CRM Task records. Task type, due date, completion status, and linked Contact name migrate. Orphaned tasks (no linked Contact) are flagged in a separate reconciliation report. Owner assignment migrates by resolving the Sales Snap owner name to a Twenty User record created during workspace provisioning.
Sales Snap
Engagement: Email Open / Click / Reply / Call
Twenty CRM
Comment or Note
1:manySales Snap engagement metrics (opens, clicks, replies, calls) are logged per Contact but stored as aggregate properties in CSV exports rather than discrete activity records. We aggregate these into a single Comment on the Twenty Person record labeled 'Engagement History Summary' with the full set of engagement counts and dates. The raw engagement data is preserved in structured text format; it does not become discrete Activity records in Twenty because the source export format does not preserve individual event timestamps for each interaction.
Sales Snap
Custom Field
Twenty CRM
Custom Field
1:1Sales Snap custom fields visible in the CSV export map to custom fields on the corresponding Twenty CRM object (Person, Company, or Opportunity). We create the destination custom fields during schema setup with the closest matching Twenty field type. Date fields, text fields, and numeric fields migrate directly. Multi-select or checkbox fields require type conversion to Twenty's supported custom field types. Any custom field that does not appear in the CSV export (gated behind the UI or programmatically accessible) is flagged as a discovery gap and addressed separately.
Sales Snap
Attachment
Twenty CRM
Not migrated
1:1File attachments linked to Sales Snap Contacts or email templates are not included in the standard CSV export. We do not migrate attachment binaries. We inventory the count and types of attachments referenced in the Sales Snap export and deliver this as a separate Attachment Gap Report so the customer can assess reconstruction needs. Attachments stored in a linked cloud storage service (if configured) may be retrievable separately; this requires a dedicated discovery step with the customer.
Sales Snap
Owner/User
Twenty CRM
Workspace User
1:1Sales Snap Owners referenced on Contact, Company, and Deal records map to Twenty CRM User records provisioned during workspace setup. Owner resolution uses the owner name from the Sales Snap export matched to a User record created in Twenty by the customer's admin. Any Sales Snap Owner without a matching Twenty User is placed in a reconciliation queue. User provisioning is a manual prerequisite step; we cannot create Twenty User records without admin credentials and SSO configuration.
| Sales Snap | Twenty CRM | Compatibility | |
|---|---|---|---|
| Contact | Person1:1 | Fully supported | |
| Company/Account | Company1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Sequence | Workflow (documented for rebuild)lossy | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Engagement: Email Open / Click / Reply / Call | Comment or Note1:many | Fully supported | |
| Custom Field | Custom Field1:1 | Fully supported | |
| Attachment | Not migrated1:1 | Fully supported | |
| Owner/User | Workspace User1: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.
Sales Snap gotchas
No public API for automated migration
Attachment binaries not exported in standard CSV
No documented rate limits or API quotas
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 CSV export coordination
We audit the Sales Snap account for record counts across all visible objects: Contacts, Companies, Deals, Tasks, and engagement history. Because Sales Snap has no API, we provide the customer with a detailed CSV Export Guide specifying which views to export, in what order, and how to handle pagination across large datasets. We estimate the manual export effort based on record volume and include it as a tracked workstream in the project plan. We simultaneously begin Twenty CRM workspace provisioning, inviting the migration team and confirming admin credentials for schema design.
Twenty CRM schema design and lifecycle stage mapping
We design the destination schema in Twenty CRM. This includes creating the lifecycle_stage__c custom field on the Person object, setting up the Company workspace structure, configuring Opportunity pipeline stages mapped from the Sales Snap deal stage values, creating custom fields on Person and Opportunity to receive migrated Sales Snap custom field data, and provisioning User records matched to Sales Snap owners by name. We build a field mapping document during this phase that the customer reviews and approves before any data is loaded.
Data validation and deduplication planning
We validate the exported CSVs against the record counts the customer documented in Step 1. We identify and deduplicate company records (Sales Snap exports companies per-contact which can duplicate the same company across multiple rows), flag any records with missing required fields for the Twenty schema, and separate orphaned records (Contacts without a company, Deals without a linked Contact) into reconciliation queues. This step produces a Data Readiness Report that must be resolved before import begins. We cannot import records with missing required fields into Twenty without schema adjustments.
Staged import in dependency order
We import data into Twenty CRM in dependency order: Companies first (Twenty Company records), then Persons (with lifecycle_stage__c populated and Company link resolved), then Opportunities (with Person and Company lookups resolved), then Tasks (with Person lookup resolved). Engagement history aggregates are loaded as Comment records on each Person. Each phase emits a row-count reconciliation report. If any phase fails validation (record count mismatch, required field gap), we halt and resolve before proceeding to the next phase. Twenty's REST API handles the import with rate-limit handling and retry logic for transient failures.
Sequence inventory and rebuild handoff
We deliver the Sequence Rebuild Document: a written inventory of every Sales Snap Sequence with its email templates, step order, wait durations, and personalization tokens. Each sequence is mapped to a recommended Twenty Workflow configuration or flagged as a cadence workflow requiring a dedicated sales engagement tool. We do not build the workflows in Twenty. The customer's admin uses the document to configure outreach sequences post-migration. We also deliver a Workflow Inventory covering any automation rules (auto-task creation, stage-change triggers) discovered in the Sales Snap export.
Cutover, validation, and hypercare
We freeze Sales Snap write access during cutover and run a final delta import of any records modified during the migration window. Post-migration, we validate record counts in Twenty against the final reconciled CSVs, spot-check 25-50 records for field-level accuracy, and confirm that Person-to-Company and Person-to-Opportunity links resolved correctly. We deliver a Validation Report and a Data Gap Summary (covering any records not migrated and the reason for exclusion). We support a five-business-day hypercare window to resolve import discrepancies. Post-migration admin support, user training, and workflow rebuild are outside standard scope and can be scoped as a separate engagement.
Platform deep dives
Sales Snap
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 Sales Snap 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
Sales Snap: No public API.
Data volume sensitivity
Sales Snap 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 Sales Snap to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Sales Snap 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 Sales Snap
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.