CRM migration

Migrate from X2CRM to Salesforce Sales Cloud

Field-level mapping, validation, and rollback between X2CRM and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.

X2CRM logo

X2CRM

Source

Salesforce Sales Cloud

Destination

Salesforce Sales Cloud logo

Compatibility

69%

9 of 13

objects map 1:1 between X2CRM and Salesforce Sales Cloud.

Complexity

BStandard

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from X2CRM to Salesforce Sales Cloud is a structural migration that changes how your data is organized, how automation is managed, and how your team accesses the CRM ecosystem. X2CRM's flat eight-module architecture (Contacts, Accounts, Deals, Products, Services, Marketing, Actions, Workflows) maps to Salesforce's Lead-and-Contact split model, Opportunity stages, Product2 catalog, and Case object. We extract data via the X2CRM REST API using application/json payloads, negotiate the Platinum-tier rate-limit gate before bulk export begins, and sequence parent-record creation so that Account lookups are resolved before Contact inserts and Opportunity lookups are resolved before Activity imports. X2Flow workflows do not export as portable data; we deliver a Workflow Reconstruction Document listing every trigger, condition, and action for your Salesforce admin to rebuild in Flow. We do not migrate workflows, sequences, forms, landing pages, or reports as code—those require manual rebuild by your admin or a Salesforce partner.

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

X2CRM logo

X2CRM

What's pushing teams away

  • Customer support quality is frequently criticized as underwhelming and slow to respond, with users citing difficulty reaching knowledgeable staff for technical issues.
  • The platform lacks the ecosystem depth of larger CRMs—no extensive marketplace of third-party integrations, and fewer pre-built connectors than HubSpot or Salesforce.
  • Documentation and community resources are thin compared to competitors, making self-service troubleshooting difficult for non-standard use cases.
  • Scaling to larger teams reveals UI performance issues and limited reporting depth, with users noting the analytics dashboard feels basic for enterprise forecasting needs.

Choosing

Salesforce Sales Cloud logo

Salesforce Sales Cloud

What's pulling them in

  • The AppExchange marketplace with 5,000+ prebuilt apps gives enterprises integrations for nearly every business workflow without custom development.
  • Native Einstein AI for lead scoring, opportunity insights, and predictive forecasting adds intelligence without a separate platform purchase.
  • Territory management, multi-currency support, and advanced forecasting satisfy the needs of complex B2B sales organizations with structured revenue teams.
  • Slack, Tableau, and CPQ are deeply integrated into the core platform, keeping the sales stack unified for teams already in the Salesforce ecosystem.
  • Organizations with a large, established Salesforce implementation choose it because switching costs — integrations, custom code, trained admins — are prohibitive.

Object mapping

How X2CRM objects map to Salesforce Sales Cloud

Each row shows how a X2CRM object lands in Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

X2CRM

Contact

maps to

Salesforce Sales Cloud

Lead and Contact (split required)

1:many
Fully supported

X2CRM Contacts with no associated Deal or with a status indicating pre-qualification map to Salesforce Lead. X2CRM Contacts linked to an Account with an active or won Deal map to Salesforce Contact attached to an Account. We compute the split during scoping using X2CRM's Contacts module fields (lifecycle stage tag, associated account link, deal association). The original X2CRM contact record ID is preserved in a custom field x2crm_contact_id__c on both Lead and Contact for audit and cross-reference.

X2CRM

Account

maps to

Salesforce Sales Cloud

Account

1:1
Fully supported

X2CRM Accounts map directly to Salesforce Account. The X2CRM Account website field maps to Account Website, industry and type map to standard Account fields, and the annual revenue and employee count map to corresponding custom or standard fields. Account is created before any Contact import so that AccountId lookups are satisfied at the moment of Contact insert.

X2CRM

Deal

maps to

Salesforce Sales Cloud

Opportunity

1:1
Fully supported

X2CRM Deals map to Salesforce Opportunity. The deal stage property maps to Salesforce StageName using a stage-mapping table defined during scoping. If X2CRM uses a custom stage label not present in Salesforce's standard stage set, we add it to the active Sales Process before migration. Closed-Lost reason and probability percentages migrate from X2CRM custom fields to Salesforce LossReason and DefaultProbability.

X2CRM

Pipeline

maps to

Salesforce Sales Cloud

Record Type + Sales Process

lossy
Fully supported

X2CRM's single deal pipeline maps to a Salesforce Record Type on Opportunity with a corresponding Sales Process. If the customer has configured multiple pipeline views in X2CRM using custom module workarounds, each unique pipeline intent becomes a separate Salesforce Record Type with its own stage values and Page Layout.

X2CRM

Product

maps to

Salesforce Sales Cloud

Product2

1:1
Fully supported

X2CRM Products map to Salesforce Product2 records. The product name, SKU (productCode), and description migrate directly. We create Standard Pricebook entries during migration so that migrated Deals can reference products without requiring a separate pricebook setup step. Product2 is created before any Deal with line items migrates.

X2CRM

Service

maps to

Salesforce Sales Cloud

Asset or Case

lossy
Fully supported

X2CRM Services (recurring service contracts or subscriptions linked to Accounts) map to Salesforce Asset if the destination org has Service Cloud and the customer tracks contractual assets. If the customer uses Cases for service tracking, Services map to Case with the associated Account linked via AccountId. The mapping decision is made during scoping based on the customer's post-migration service model.

X2CRM

Marketing Campaign

maps to

Salesforce Sales Cloud

Campaign

1:1
Fully supported

X2CRM Marketing Campaigns map to Salesforce Campaign. Campaign name, type, status, and start/end dates migrate directly. Linked Contact associations migrate as CampaignMember records with Status derived from the X2CRM contact-campaign association status. Email campaign templates migrate as static HTML content stored in a custom field or attached Document for the customer's email team to reassign to Salesforce Email Template or Marketing Cloud.

X2CRM

Activities (Calls, Meetings, Tasks)

maps to

Salesforce Sales Cloud

Task and Event

1:1
Fully supported

X2CRM Activities split by type: call activities migrate to Salesforce Task with TaskSubtype=Call and CallDurationInSeconds preserved in a custom field; meeting activities migrate to Salesforce Event with StartDateTime, EndDateTime, and Location preserved; standalone task activities migrate to Salesforce Task with Status, Priority, and ActivityDate preserved. All Activity records resolve their related Contact or Deal lookup at migration time using the X2CRM association record to set WhatId and WhoId on the Salesforce record.

X2CRM

Actions (notes, comments)

maps to

Salesforce Sales Cloud

Note

1:1
Fully supported

X2CRM Action records of type Note or Comment migrate to Salesforce Note linked via ContentDocumentLink to the parent Contact, Account, or Opportunity. Note body migrates as plain text; any embedded file references are resolved by the attachment migration process. Note ordering is preserved by setting CreatedDate to the original X2CRM timestamp.

X2CRM

Tag

maps to

Salesforce Sales Cloud

Custom field (multi-select picklist)

lossy
Fully supported

X2CRM Tags are standalone label records applied across multiple module types. We inspect all unique tag values during discovery, create a custom multi-select picklist field on the relevant Salesforce objects (typically Contact and Account), and reapply tag associations during the post-import reconciliation phase. If tag count exceeds the 500-value limit for multi-select picklist, we use a custom tag junction object instead.

X2CRM

Users

maps to

Salesforce Sales Cloud

User

1:1
Fully supported

X2CRM User records map to Salesforce User by email match. We extract every user referenced as an owner on Contacts, Accounts, Deals, and Activities and match against the destination Salesforce org's User table. Any X2CRM user without a matching Salesforce User is flagged in the reconciliation queue for the customer's admin to provision before record migration resumes. Inactive X2CRM users map to inactive Salesforce Users so historical assignment is preserved.

X2CRM

Custom Fields (module builder)

maps to

Salesforce Sales Cloud

Custom fields

1:1
Fully supported

X2CRM custom fields added via the module builder vary by module and require field-level mapping during scoping. We inspect the X2CRM field schema via API discovery (field name, data type, required flag) and align each custom field to a typed Salesforce custom field (__c API name). Lookup relationships between custom modules resolve through parent-record lookup resolution. Custom module schema must be pre-created in Salesforce before data migration begins.

X2CRM

Attachments

maps to

Salesforce Sales Cloud

ContentDocument (Chatter Files)

1:1
Mapping required

X2CRM attachment records linked to Contacts, Accounts, Deals, and other modules migrate as Salesforce ContentDocument records attached via ContentDocumentLink. We download files from X2CRM's attachment storage (REST API for SaaS; local disk path for self-hosted) and upload to Salesforce via the Connect API. For self-hosted X2CRM, we coordinate with the customer's IT team during discovery to expose the upload directory via admin panel or SSH access before attachment migration begins.

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.

X2CRM logo

X2CRM gotchas

High

Rate limiting is gated behind Platinum Edition

High

Workflow automation (X2Flow) does not export as portable data

Medium

API requires Content-Type: application/json on all write requests

Medium

Data validation errors return HTTP 422 and may halt batch imports

Low

Self-hosted attachment storage may require manual file extraction

Salesforce Sales Cloud logo

Salesforce Sales Cloud gotchas

High

Workflow Rules and Process Builder are retired

High

Bulk API batch quota exhaustion during large imports

Medium

Storage overage billing is non-obvious

Medium

Account-Contact many-to-many relationship mapping

Low

Territory and team member import ordering dependencies

Pair-specific challenges

  • X2CRM Platinum rate limiting can throttle bulk export mid-migration

    The X2CRM REST API returns HTTP 429 (Too Many Requests) only when rate limiting is explicitly enabled in API settings, and this feature is gated behind the Platinum tier. Non-Platinum instances have no documented rate limit, meaning bulk export proceeds without throttling. Platinum-tier instances with rate limiting enabled can interrupt bulk extraction mid-migration without warning. We negotiate a dedicated API token with a raised or disabled rate-limit window before migration begins, monitor for 429 responses during the export phase, and adjust batch pacing dynamically. If 429 is encountered mid-export, we log the cursor position and resume from the interruption point rather than restarting the full export.

  • X2Flow workflows do not export as portable automation logic

    X2Flow stores automation as trigger-action pairs with UI configurations that are not accessible via the REST API in a machine-readable format. Every migration from X2CRM must treat workflow logic as a manual rebuild task. We extract every X2Flow rule during discovery—trigger type, condition criteria, action sequence, and associated module—and produce a Workflow Reconstruction Document mapping each rule to an equivalent Salesforce Flow (record-triggered Flow, Scheduled Flow, or Screen Flow). The customer's admin or a Salesforce partner rebuilds them post-migration. We do not migrate workflows as code.

  • Self-hosted X2CRM attachment storage requires manual file extraction

    X2CRM deployments on self-hosted infrastructure may store file attachments as local disk paths rather than in a cloud object store. SaaS-hosted X2CRM exposes attachments via the REST API. For self-hosted instances, the customer's IT team must expose the upload directory (via admin panel, SSH, or NFS mount) before we can extract and re-upload files. We identify the attachment backend during discovery. If the file store is not accessible, attachments are flagged in the migration inventory and re-uploaded manually or via a separate file-migration engagement after the database migration completes.

  • Salesforce field-level security and validation rules can block record inserts

    Salesforce orgs enforce validation rules (required formats, conditional required fields, picklist whitelists) and field-level security that block records with unexpected values. X2CRM custom fields may contain values that fail Salesforce picklist validation or required-field checks in the destination org. We implement per-record error capture: records returning 422-style field errors are logged with the specific validation failure, corrected, and retried. We coordinate with the customer's Salesforce admin to grant the migration user Modify All Data, temporarily disable overly broad validation rules during the load window, or add migration-context bypass logic to validation rules before production migration begins.

  • Data quality from X2CRM may require pre-migration deduplication

    X2CRM's open-source deployment flexibility means data quality varies widely between instances. Self-hosted deployments in particular may have accumulated duplicate Contacts, inconsistent address formatting, and missing required fields (email, phone) that are not enforced at the X2CRM level. Salesforce's duplicate rules and required field enforcement are stricter. We run a data profiling phase during discovery that identifies duplicate Contact and Account records, missing required fields, and malformed values. The customer decides whether to deduplicate before migration (clean source) or migrate duplicates and resolve in Salesforce post-migration (preserving a complete audit trail).

Migration approach

Six steps for a successful X2CRM to Salesforce Sales Cloud data migration

  1. Discovery and deployment assessment

    We audit the source X2CRM instance across deployment type (SaaS vs self-hosted), tier (Starter/Business/Platinum), module count, custom field inventory, active X2Flow workflows, and attachment volume. For self-hosted instances, we coordinate with the customer's IT team to confirm the REST API endpoint, authentication method, and attachment storage backend accessibility. We produce a written migration scope listing every object to migrate, every custom field requiring mapping, every X2Flow workflow to document, and a rate-limit configuration note for Platinum-tier instances.

  2. Schema design and Salesforce destination setup

    We design the destination schema in Salesforce. This includes creating custom objects for X2CRM custom modules (with __c API names matched to the source module names), custom fields on standard objects for X2CRM custom fields, Salesforce Record Types and Sales Processes for Deal migration, and custom picklist fields for Tag migration. Schema is deployed via metadata API or change set into a Salesforce Sandbox first for validation. We coordinate with the customer's Salesforce admin to confirm validation rules that may need temporary relaxation during the load window.

  3. Sandbox migration and reconciliation

    We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using representative data volume from production. The customer's RevOps or admin lead reconciles record counts for every object (Contacts in, Leads in, Accounts in, Opportunities in, Activities in), spot-checks 25-50 records against the X2CRM source, and validates tag application and attachment presence. Sign-off on the Sandbox run authorizes the production migration. Any mapping corrections and data quality flags are resolved here, not in production.

  4. Owner reconciliation and User provisioning

    We extract every distinct X2CRM User referenced as an owner on Contacts, Accounts, Deals, and Activities and match by email against the destination Salesforce org's User table. Any X2CRM user without a matching Salesforce User is flagged in a reconciliation queue. The customer's Salesforce admin provisions missing Users (active for current users, inactive for departed users with historical assignments). Migration cannot proceed past this step because OwnerId references are required on standard objects.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Accounts (from X2CRM Accounts), Contacts (with AccountId resolved, split applied for Lead vs Contact), Leads, Opportunities (with AccountId, OwnerId, and RecordTypeId resolved), Products and Pricebook entries, Service or Asset records, Campaign records, Activities (Tasks and Events via Bulk API 2.0 with parent-record lookup resolution), Notes, Tags (applied via custom field after record insert), Custom Objects (last, because they often have lookups to standard objects), and Attachments. Each phase emits a row-count reconciliation report before the next phase begins.

  6. Cutover, delta sync, and Workflow Reconstruction handoff

    We freeze writes to X2CRM during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce as the system of record. We deliver the Workflow Reconstruction Document listing every X2Flow rule with its trigger, conditions, and actions mapped to an equivalent Salesforce Flow type. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's sales team. We do not rebuild X2Flow workflows as Salesforce Flow inside the migration scope; that is a separate engagement or an internal admin task. Reports, dashboards, forms, and landing pages are similarly excluded from migration scope and delivered as a written inventory for manual rebuild.

Platform deep dives

Context on both ends of the pair

X2CRM logo

X2CRM

Source

Strengths

  • Drag-and-drop X2Flow workflow builder accessible to non-developers for basic automation sequences.
  • All-in-one platform includes marketing, sales, and service modules without requiring separate product purchases.
  • Self-hosted and cloud deployment options give organizations control over where their CRM data resides.
  • Open-source codebase with modern language implementation for teams that need code-level customization.

Weaknesses

  • Thin third-party integration ecosystem limits connectivity to tools outside the core CRM modules.
  • Limited review volume on G2 and Capterra (17 reviews) makes it difficult to assess long-term reliability compared to higher-volume competitors.
  • Support responsiveness issues documented across multiple review sources raise risk for teams needing reliable escalation paths.
  • Smaller market presence means fewer certified implementation partners and less community-generated content, tutorials, and troubleshooting guides.
Salesforce Sales Cloud logo

Salesforce Sales Cloud

Destination

Strengths

  • Largest enterprise app ecosystem in CRM with 5,000+ AppExchange integrations covering nearly every vertical workflow.
  • Native Einstein AI delivers lead scoring, opportunity insights, and predictive forecasting without a third-party layer.
  • Advanced territory management, multi-currency, and flexible forecasting satisfy complex B2B revenue structures.
  • Deep platform extensibility: Custom Objects, Apex, Flow, and the Metadata API allow full schema customization.
  • Well-documented REST API, Bulk API, and Composite API with published rate limits for programmatic migration.

Weaknesses

  • Pricing model is layered and opaque in practice: per-seat fees plus storage overages, add-on subscriptions, and annual uplifts compound to 30–40% above sticker price.
  • Workflow Rules and Process Builder are deprecated, forcing all orgs onto Salesforce Flow — a migration task that catches many teams by surprise.
  • Steep administrative complexity: meaningful configuration requires a dedicated Salesforce admin or consultant.
  • API rate limits are edition-gated (100k/day base for Enterprise) and easily exhausted by large historical imports without throttling.
  • Data export is exportable via Data Loader but preserving relationship integrity across 30+ objects requires careful ETL sequencing.

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 X2CRM and Salesforce Sales Cloud.

  • 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

    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

    B

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

Estimator

Estimate your X2CRM to Salesforce Sales Cloud 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 X2CRM to Salesforce Sales Cloud data migrations

Answers to the questions buyers ask most during X2CRM to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your X2CRM to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Migrations from hosted X2CRM under 20,000 Contacts, 5,000 Deals, and no custom modules land between four and eight weeks and complete in that window. Migrations from self-hosted X2CRM with local attachment storage, custom-built modules, large activity histories (over 200,000 activity records), or parallel Salesforce Service Cloud destinations move to twelve to eighteen weeks because of file extraction coordination, custom schema pre-creation, X2Flow documentation scope, and extended Sandbox reconciliation. Data-only migrations without custom objects and under 10,000 records can sometimes complete in as few as three weeks.

Adjacent paths

Related migrations to explore

Ready when you are

Move from X2CRM.
Land in Salesforce Sales Cloud, 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