CRM migration
Field-level mapping, validation, and rollback between InTouch CRM and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
InTouch CRM
Source
Salesforce Sales Cloud
Destination
Compatibility
7 of 12
objects map 1:1 between InTouch CRM and Salesforce Sales Cloud.
Complexity
CModerate
Timeline
4-6 weeks
Overview
Moving from InTouch CRM to Salesforce is a structural redesign, not a record copy. InTouch CRM stores Contacts, Companies, Deals, and Activities within user-defined Pipelines using a flat export model; Salesforce separates Leads, Contacts, Accounts, and Opportunities with a relational object model that requires schema redesign before any data loads. InTouch lacks a publicly indexed bulk API, so we extract via CSV and transform each record through a staging layer that resolves pipeline-stage labels, maps custom fields to typed Salesforce fields, and sequences parent-record creation before child-record inserts. We do not migrate InTouch automations or workflows as code; we deliver a written inventory for your admin to rebuild in Salesforce Flow. Activity timestamps migrate against the correct Contact, Account, or Opportunity using Bulk API 2.0 with chunking and parent-record resolution.
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 InTouch CRM 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.
InTouch CRM
Contact
Salesforce Sales Cloud
Lead or Contact (split required)
1:manyInTouch Contacts map to either Salesforce Lead or Contact based on qualification status. We define the split rule during scoping using InTouch properties (contact status, pipeline membership, any lead score field). Unqualified contacts map to Salesforce Lead; contacts with associated Deals or stage progression map to Salesforce Contact tied to an Account. The original InTouch contact status is preserved in a custom field intouch_original_status__c on both Lead and Contact for audit and reporting continuity.
InTouch CRM
Company
Salesforce Sales Cloud
Account
1:1InTouch Company records map directly to Salesforce Account. The company name becomes the Account Name; any domain or website field becomes Account Website. Account is created before any Contact import so that the AccountId Lookup is satisfied at the moment of Contact insert. Companies with no name are flagged during extraction for customer review before Account creation.
InTouch CRM
Deal
Salesforce Sales Cloud
Opportunity
1:1InTouch Deals map to Salesforce Opportunity. Each InTouch Pipeline maps to a Salesforce Record Type with a corresponding Sales Process. The InTouch deal stage label is remapped to a Salesforce StageName value defined in the target Sales Process. Deal amount, close date, and owner migrate directly. Closed-Lost and Closed-Won states from InTouch are preserved in custom fields for reporting continuity.
InTouch CRM
Pipeline Stage
Salesforce Sales Cloud
Opportunity Stage
lossyEach InTouch Pipeline becomes a Salesforce Record Type on Opportunity, with its stage values defined as picklist entries in a dedicated Sales Process. We preserve stage probability percentages from InTouch by mapping to StageProbability on each stage. The customer selects which InTouch Pipelines become Salesforce Record Types during scoping; Pipelines can also be consolidated into a single Record Type if the customer prefers fewer sales processes.
InTouch CRM
Pipeline
Salesforce Sales Cloud
Record Type + Sales Process
lossyInTouch Pipelines (the top-level container for stages) map to Salesforce Record Types. Each Record Type gets its own Page Layout and Sales Process. Multiple InTouch Pipelines with similar stage semantics can be consolidated into one Record Type at the customer's choice to reduce admin overhead in Salesforce.
InTouch CRM
Activity
Salesforce Sales Cloud
Task, Event, EmailMessage
1:1InTouch Activities (calls, emails, meetings, tasks, notes) are extracted via CSV and classified by type at transform time. Call activities map to Task with TaskSubtype=Call and CallDurationInSeconds in a custom field. Email activities map to Salesforce EmailMessage (body) linked to a Task (timeline entry). Meeting activities map to Event with StartDateTime and EndDateTime preserved. Task activities map to Task. All activities link to the parent Contact or Deal via WhoId and WhatId resolved through the Account-Contact lookup chain. Bulk API 2.0 handles the activity load with chunking and exponential backoff.
InTouch CRM
Custom Field
Salesforce Sales Cloud
Custom Field
lossyInTouch custom fields on Contacts, Companies, and Deals map to Salesforce custom fields on the equivalent object. Field type mapping follows the destination schema: text fields map to Text, numeric fields to Number, date fields to Date, checkbox fields to Checkbox, and picklist fields to Picklist or Multi-Select Picklist. Custom fields are pre-created in Salesforce with __c suffix and matching field-level security before migration begins. InTouch pipeline-specific custom fields are mapped to the appropriate Record Type.
InTouch CRM
Owner
Salesforce Sales Cloud
User
1:1InTouch Owners map to Salesforce User records by email match. Any InTouch Owner without a matching Salesforce User is held in a reconciliation queue. The customer's Salesforce admin provisions missing Users (active or inactive depending on whether the original InTouch user remains active). OwnerId references are required on Opportunity and Contact; migration pauses at this step if owners cannot be resolved.
InTouch CRM
Custom Objects
Salesforce Sales Cloud
Custom Objects
1:1InTouch custom fields scoped to a Pipeline map to Salesforce custom objects if the customer has defined a multi-table relationship. We pre-create the destination schema including all custom fields, lookup relationships to Account or Contact, and validation rules before any data import. Custom object naming follows the InTouch API name with a __c suffix per Salesforce convention.
InTouch CRM
Engagement Note
Salesforce Sales Cloud
Note
1:1InTouch Notes attached to Contacts, Companies, or Deals migrate to Salesforce Note records linked via ContentDocumentLink to the parent record. Note body migrates as rich text; any embedded file references are flagged for the customer to re-attach post-migration if they are stored outside InTouch.
InTouch CRM
Email Address (contact/company)
Salesforce Sales Cloud
Email fields
1:1Email addresses on InTouch Contact and Company records map to standard Salesforce email fields. Duplicate email addresses across multiple records are flagged during extraction for the customer to resolve before insert because Salesforce enforces Email uniqueness at the Contact level (configurable). The customer decides whether to allow duplicate emails or consolidate before migration.
InTouch CRM
Historical Timestamps
Salesforce Sales Cloud
CreatedDate, LastModifiedDate
lossyInTouch activity timestamps and deal close dates are preserved as Salesforce ActivityDate on Task and Event, and as CloseDate on Opportunity. CreatedDate and LastModifiedDate on migrated records reflect the migration load date by default; if the customer requires original InTouch creation timestamps, we set them via the Salesforce API before final commit, subject to admin approval.
| InTouch CRM | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (split required)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Opportunity Stagelossy | Fully supported | |
| Pipeline | Record Type + Sales Processlossy | Fully supported | |
| Activity | Task, Event, EmailMessage1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Owner | User1:1 | Fully supported | |
| Custom Objects | Custom Objects1:1 | Not supported | |
| Engagement Note | Note1:1 | Fully supported | |
| Email Address (contact/company) | Email fields1:1 | Fully supported | |
| Historical Timestamps | CreatedDate, LastModifiedDatelossy | 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.
InTouch CRM gotchas
CSV-based import is the primary documented data path
Stage and pipeline label drift across customer instances
Limited custom-object surface
All-in-one bundling means multiple modules' data must be reconciled
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Discovery and extraction planning
We audit the source InTouch CRM environment: object counts (Contacts, Companies, Deals, Activities, custom fields), pipeline definitions, owner list, and any data quality observations. Because InTouch lacks a bulk API, we map the CSV export path per object, estimate extraction time, and flag any objects requiring multi-pass extraction. We also review the target Salesforce edition (Professional at $80/user or Enterprise at $165/user) and confirm Record Type and custom object requirements. The discovery output is a written migration scope with record-count estimates, extraction sequence, and Salesforce edition recommendation.
Source extraction and staging
We extract all records from InTouch CRM via the CSV export path in dependency order: Companies first (no dependencies), then Contacts (with Company lookup), then Deals (with Contact and Company lookups), then Activities (with Contact and Deal lookups). Each extraction is validated against the source record count. Custom fields are catalogued with type, pipeline context, and target Salesforce field. The extracted CSVs are staged in a migration workspace with row counts signed off by the customer's InTouch admin before any transform work begins.
Schema design and Record Type configuration
We design the Salesforce destination schema. This includes creating custom fields on Contact, Account, and Opportunity with __c API names matched to InTouch field labels; provisioning custom objects if the migration scope includes multi-table InTouch data; defining Record Types (one per InTouch Pipeline or consolidated per customer choice); creating Sales Processes with stage picklist values and probability percentages mapped from InTouch; and assigning custom fields to Record Type Page Layouts. Schema is deployed to a Salesforce Sandbox first for validation. Validation rules and field-level security restrictions are documented for the admin to adjust before production load.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox using production-like data volume. The customer's admin and RevOps lead reconcile record counts (Accounts in, Contacts in, Opportunities in, Activities in), spot-check 25-50 random records against the InTouch source, and verify that custom fields appear on the correct Page Layouts. Any mapping corrections, missing Record Type assignments, or validation rule failures are resolved in Sandbox before production. This step typically takes one to two weeks depending on the customer's review cycle.
Owner reconciliation and User provisioning
We extract every distinct InTouch Owner referenced on Deal, Contact, and Activity records and match by email against the Salesforce destination org's User table. Owners without a matching Salesforce User go to a reconciliation queue. The customer's Salesforce admin provisions any missing Users. Migration cannot proceed to Opportunity and Activity phases because OwnerId references are required on those objects. This step is a gating checkpoint — we do not begin record migration until owner resolution is complete.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from InTouch Companies), Contacts (with AccountId resolved and Lead-Contact split applied), Opportunities (with AccountId, OwnerId, and RecordTypeId resolved), Activities (Tasks, Events, EmailMessages via Bulk API 2.0 with chunking and backoff), Custom Objects (last because they have lookups to standard objects). Each phase emits a row-count reconciliation report before the next phase begins. Validation rules are temporarily disabled or extended with a migration-context bypass for the duration of the load.
Cutover, validation, and automation inventory delivery
We freeze InTouch writes 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 automation and workflow inventory document: every active InTouch workflow or automation with its trigger, conditions, actions, and recommended Salesforce Flow equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild InTouch automations as Salesforce Flow inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
InTouch CRM
Source
Strengths
Weaknesses
Salesforce Sales Cloud
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 1 of 8 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across InTouch CRM and Salesforce Sales Cloud.
Object compatibility
1 of 8 objects need a manual workaround.
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
InTouch CRM: Not publicly documented.
Data volume sensitivity
InTouch CRM 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 InTouch CRM to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your InTouch CRM to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave InTouch CRM
Other ways to arrive at Salesforce Sales Cloud
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.