CRM migration
Field-level mapping, validation, and rollback between X2CRM and Nutshell. We move data and schema; workflows are rebuilt natively in Nutshell.
X2CRM
Source
Nutshell
Destination
Compatibility
6 of 9
objects map 1:1 between X2CRM and Nutshell.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from X2CRM to Nutshell is a schema translation exercise, not a straight record copy. X2CRM's eight-module architecture (Marketing, Sales, Service, and supporting modules) maps across to Nutshell's four core record types (People, Companies, Leads, Pipeline) with a dependency chain that must be sequenced correctly: Accounts must land before Contacts can be linked, and Owners must be resolved before Deals can reference them. X2CRM's self-hosted deployments introduce attachment extraction complexity, and its Platinum-tier-only API rate limiting must be negotiated before bulk export begins. X2Flow automation records do not export as portable data; we deliver a written inventory of every active workflow for the customer's admin to rebuild in Nutshell. Activity history (calls, emails, meetings, notes) migrates into Nutshell's activity timeline with parent-record lookup resolution so that engagement records attach to the correct People, Companies, or Pipeline entries in chronological order.
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 X2CRM object lands in Nutshell, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
X2CRM
Account
Nutshell
Company
1:1X2CRM Accounts map directly to Nutshell Companies. The account name becomes the Company name, industry classification maps to Nutshell's Industry dropdown, and lifetime value and employee count become Company-level custom fields. X2CRM's account-level tags migrate to Company-level tags in Nutshell. Accounts must be imported first because Contact records in X2CRM carry a foreign key reference to the associated account; this lookup must be resolved before Contact insert to avoid orphaned relationships.
X2CRM
Contact
Nutshell
People (qualified) or Lead (unqualified)
1:manyX2CRM Contacts with a status indicating a qualified or active relationship (customer, sales-ready) map to Nutshell People and get linked to the corresponding Company record via the X2CRM account relationship. Contacts without an associated account or marked as early-stage leads map to Nutshell Leads. Any lead status or lifecycle indicator from X2CRM's contact record is preserved as a custom field (original_status__c) for audit and segmentation in Nutshell.
X2CRM
Deal
Nutshell
Pipeline (Opportunity)
1:1X2CRM Deals map to Nutshell Pipeline entries with the deal name as the Opportunity name, deal value as the Amount, stage mapping to a Nutshell Pipeline stage, and the probability percentage preserved as a custom field (original_probability__c). Deal owner maps to the Nutshell User by email resolution. X2CRM's deal-level notes and activity logs attached to the Deal record are linked as People activity entries under the associated Contact or Lead after parent-record lookup.
X2CRM
Custom Field (per module)
Nutshell
Custom Field (People, Company, Lead)
lossyX2CRM custom fields vary by module and installation. We inspect the X2CRM field schema via API discovery during scoping, then map each custom field to a type-matched Nutshell custom field: Text fields map to Nutshell's Text type (225 character limit), long text to Long Text, currency values to Currency, dates to Date, and multi-value text fields to Multi-Select Picklist. Custom fields must be created in Nutshell before migration; we include field creation instructions in the pre-migration setup guide and validate the destination schema against the discovered X2CRM schema.
X2CRM
Product
Nutshell
Product (Nutshell catalog)
1:1X2CRM Products (with SKU, price, and description) map to Nutshell's Product catalog. Product pricing, unit of measure, and active/inactive status migrate directly. Product associations to Deals are preserved by linking the Nutshell Product to the migrated Pipeline entry via the deal's line-item data, which we reconstruct during the Deal mapping phase.
X2CRM
Activity: Call, Meeting, Task
Nutshell
People Activity or Company Activity
1:1X2CRM Activities (calls, meetings, tasks) carry a related record type and reference (contact, account, or deal). We map call engagements to Nutshell People activities with call disposition and duration stored in custom fields; meeting engagements map similarly with location and attendee information. Task engagements map as open or completed activities linked to the corresponding People or Company record. All timestamps are preserved so the Nutshell activity timeline reflects the original chronological order from X2CRM.
X2CRM
Activity: Note
Nutshell
People Note or Company Note
1:1X2CRM Notes attached to Contacts or Accounts migrate as People Notes or Company Notes in Nutshell respectively. Note body text migrates as plain text; any rich content or attachments stored within the Note are extracted separately and reattached as file uploads to the Nutshell Note record. Note timestamps and author information (Owner) map to the Nutshell activity attribution fields.
X2CRM
Service
Nutshell
Product or Custom Field Set
lossyX2CRM Services track recurring service contracts or subscriptions linked to Accounts. We migrate Services as Nutshell Products with a custom field (service_type__c) set to 'Service Contract' to distinguish them from product catalog items, or as a separate custom field group on the associated Company record with renewal date and status fields. The customer's preference is documented during scoping.
X2CRM
X2Flow Workflow
Nutshell
No direct equivalent (manual rebuild required)
1:1X2Flow stores automation logic as trigger-action pairs with drag-and-drop UI configurations that are not accessible via the X2CRM REST API in a portable format. We extract every X2Flow workflow during discovery: trigger type, condition criteria, action sequence, and associated module. We produce a Workflow Reconstruction Document that maps each X2Flow rule to an equivalent automation logic in Nutshell's automation rules or to a manual process note for the customer to implement post-migration. Workflows do not execute or transfer as code.
| X2CRM | Nutshell | Compatibility | |
|---|---|---|---|
| Account | Company1:1 | Fully supported | |
| Contact | People (qualified) or Lead (unqualified)1:many | Fully supported | |
| Deal | Pipeline (Opportunity)1:1 | Fully supported | |
| Custom Field (per module) | Custom Field (People, Company, Lead)lossy | Fully supported | |
| Product | Product (Nutshell catalog)1:1 | Fully supported | |
| Activity: Call, Meeting, Task | People Activity or Company Activity1:1 | Fully supported | |
| Activity: Note | People Note or Company Note1:1 | Fully supported | |
| Service | Product or Custom Field Setlossy | Fully supported | |
| X2Flow Workflow | No direct equivalent (manual rebuild required)1: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.
X2CRM gotchas
Rate limiting is gated behind Platinum Edition
Workflow automation (X2Flow) does not export as portable data
API requires Content-Type: application/json on all write requests
Data validation errors return HTTP 422 and may halt batch imports
Self-hosted attachment storage may require manual file extraction
Nutshell gotchas
Contact tier limits enforced on import
No bulk API endpoint requires paginated extraction
Email sequences not exportable via API
Foundation plan disables key sales features
Pair-specific challenges
Migration approach
Discovery and schema audit
We audit the source X2CRM instance across all eight modules and any custom modules, cataloging every standard and custom field, active X2Flow workflows, record counts per module, and the attachment storage backend (cloud API or self-hosted disk path). We pair this with a review of the customer's Nutshell plan to confirm which custom field types and pipeline features are available. The discovery output is a written migration scope, a schema translation map showing how each X2CRM module maps to Nutshell record types, and a data quality pre-assessment identifying records at risk of import failure.
Attachment extraction (self-hosted X2CRM)
If the customer is on a self-hosted X2CRM instance, we coordinate with their IT team to extract the attachment storage directory before the main migration data pull begins. We use the confirmed file path to download all attachment blobs, assign each a unique file reference tied to its parent X2CRM record ID, and stage them for re-upload into Nutshell after the main record migration. This step runs in parallel with schema configuration and must complete before the People and Company import phase.
Destination schema configuration
We configure the Nutshell destination: creating custom fields on People, Companies, and Leads to match the X2CRM field schema, setting up additional Pipelines if the customer uses multiple X2CRM sales processes, and confirming User accounts for Owner resolution. Custom fields are created in Nutshell before migration data is imported so that the field identifiers exist at insert time. We run a pre-flight check confirming that all required Nutshell fields are available or have been set as optional, preventing mid-import field-not-found errors.
Dry-run migration and reconciliation
We run a dry-run migration with a representative sample (50-100 records across Contacts, Accounts, Deals, and Activities) to validate the field mapping logic, confirm attachment re-upload works for the self-hosted file set, and surface any data quality issues. The customer reviews the sample records in Nutshell and confirms the mapping before production migration begins. Corrections to field mapping, custom field type, or pipeline stage names are applied before the full migration proceeds.
Production migration in dependency order
We run the production migration in record-dependency order: first Companies (from X2CRM Accounts), then People and Leads (with the account link resolved to the Nutshell Company), then Pipeline entries (with owner, amount, and stage resolved), then Products and Services, then Activity history (calls, meetings, notes, tasks). Each phase emits a row-count reconciliation report. We use batch chunking and handle X2CRM's HTTP 422 validation errors per-record: records that fail validation are logged with the error message, corrected when possible, and retried before the migration is marked complete for that phase.
Final cutover and workflow handoff
We freeze X2CRM writes during cutover, run a final delta migration of any records created or modified during the migration window, then confirm Nutshell is the system of record. We deliver the complete migration record count report and the X2Flow Workflow Reconstruction Document to the customer's admin team. We offer a short hypercare window (up to five business days post-cutover) for reconciliation issues. We do not rebuild X2Flow workflows in Nutshell, configure Nutshell automation rules, or provide post-migration admin support as standard scope; these are separate engagements.
Platform deep dives
X2CRM
Source
Strengths
Weaknesses
Nutshell
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 X2CRM and Nutshell.
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
X2CRM: Not publicly documented. X2CRM is an open-source / self-hosted CRM, so practical throughput is bounded by the customer's PHP/MySQL deployment rather than a vendor-imposed limit. We benchmark export queries against the customer's hosted instance before the cutover sync..
Data volume sensitivity
X2CRM 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 X2CRM to Nutshell migration scoping. Not seeing yours? Book a call.
Walk through your X2CRM to Nutshell migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave X2CRM
Other ways to arrive at Nutshell
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.