CRM migration
Field-level mapping, validation, and rollback between Insightly CRM and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
Insightly CRM
Source
Salesforce Sales Cloud
Destination
Compatibility
10 of 12
objects map 1:1 between Insightly CRM and Salesforce Sales Cloud.
Complexity
CModerate
Timeline
3-6 weeks
Overview
Moving from Insightly CRM to Salesforce is a schema translation project as much as a data move. Insightly ties Contacts to Organizations through explicit link records, not embedded relationships; we reconstruct those as Account-Contact lookups by sequencing Organizations first and resolving AccountId during Contact insert. Insightly's Opportunities map to Salesforce Opportunities with pipeline stages migrated as Record Types and Sales Processes. Custom fields require FIELD_NAME discovery via the /CustomFields/{objectName} endpoint before any write, or they are silently dropped. We do not migrate Workflow Automations, Projects (except as Tasks against Opportunities), or attachment binaries; we deliver written inventories of these for the customer's admin to rebuild in Salesforce Flow, a custom Project object, or a file management system respectively.
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 Insightly 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.
Insightly CRM
Lead
Salesforce Sales Cloud
Lead
1:1Insightly Leads map directly to Salesforce Lead with all standard fields preserved (FIRST_NAME, LAST_NAME, EMAIL_ADDRESS, PHONE_NUMBER, ADDRESS_STREET, CITY, STATE, POSTAL_CODE, COUNTRY). We use the FIELD_NAME lookup via /CustomFields/Leads to discover any custom fields on the Lead object before writing. Lead status values from Insightly's STATUS field map to the customer's chosen Salesforce Lead Status picklist values, which we configure during Sales Process setup.
Insightly CRM
Contact
Salesforce Sales Cloud
Contact
1:1Insightly Contacts map to Salesforce Contact. Standard fields (FIRST_NAME, LAST_NAME, EMAIL_ADDRESS, PHONE_NUMBER, ADDRESS_* fields) migrate directly. We handle the Account-Contact relationship by importing Organizations first as Accounts, then resolving AccountId during Contact insert using the pre-exported link records. Any custom fields use the FIELD_NAME reference table built during discovery. Insightly's CONTACT_FIELD_RULE_LINK records are not a Salesforce object; the relationship is embedded as Contact.AccountId at write time.
Insightly CRM
Organization
Salesforce Sales Cloud
Account
1:1Insightly Organizations map to Salesforce Account. ORGANIZATION_NAME becomes Account Name. ADDRESS_* fields map to BillingAddress fields (Street, City, State, PostalCode, Country). We preserve the Insightly ORGANIZATION_ID in a custom field insightly_org_id__c for cross-system reference. WEBTEAM becomes Account Website. Organizations are imported before Contacts to satisfy the AccountId foreign key.
Insightly CRM
Opportunity
Salesforce Sales Cloud
Opportunity
1:1Insightly Opportunities map to Salesforce Opportunity. OPPORTUNITY_NAME becomes Opportunity Name. PIPELINE_STAGE_NAME maps to StageName using the stage mapping table built during discovery. PROBABILITY migrates to Opportunity.Probability. CUSTOM_AMOUNT becomes Amount. We configure the Salesforce Record Type and Sales Process before migration so that StageName values are valid against the whitelisted stages for the matching process.
Insightly CRM
Pipeline Stage
Salesforce Sales Cloud
Sales Process + Opportunity Stage
lossyEach Insightly pipeline becomes a Salesforce Record Type on Opportunity with a corresponding Sales Process that whitelists the relevant stage values. Stage probability percentages migrate from Insightly's probability values to Salesforce StageProbability, rounded to the nearest integer allowed by the platform. The customer approves the stage name mapping table during discovery before migration begins.
Insightly CRM
Link Record (Contact-to-Organization)
Salesforce Sales Cloud
Contact.AccountId
1:1Insightly uses explicit link records to associate Contacts with Organizations. These are not embedded in the primary record objects. We export all link records separately, import Accounts first, then Contacts with AccountId resolved from the Organization mapping. This eliminates orphaned Contact records with no Account. We validate link completeness by querying Salesforce for Contacts where AccountId is null and cross-referencing against the original link set.
Insightly CRM
Project
Salesforce Sales Cloud
Task (conditional) or custom object
1:1Insightly Projects can be created from closed Opportunities. Projects that originated from closed Opportunities migrate as Tasks under the related Salesforce Opportunity (WhatId = OpportunityId). Standalone Projects or those with complex task hierarchies require a custom Project__c object that we pre-create in Salesforce during schema design. Project custom fields migrate via the FIELD_NAME approach. This is scoped during discovery and priced as a separate line item if the customer chooses the custom object path.
Insightly CRM
Task
Salesforce Sales Cloud
Task
1:1Insightly Tasks map to Salesforce Task. TASK_SEQUENCE or TITLE becomes Subject. STATUS maps to Salesforce TaskStatus (Not Started, In Progress, Completed, Waiting on someone else, Deferred). PRIORITY maps to Priority (High, Normal, Low). Due date maps to ActivityDate. Owner maps via email-to-User lookup against the Salesforce User table. Any LINK_RECORD_ID associations are noted for recreation as Task WhatId or WhoId lookups.
Insightly CRM
Note (Comment)
Salesforce Sales Cloud
Note + ContentDocumentLink
1:1Insightly Notes map to Salesforce Note records linked via ContentDocumentLink to the parent Contact, Account, or Opportunity. The NOTE_BODY becomes the Note body (Body field). CREATED_DATE becomes ActivityDate for timeline ordering. Author information is preserved in a custom field. Note-to-record link relationships (which Insightly stores as separate LINK_RECORD entries) are reconstructed as ContentDocumentLink entries in Salesforce.
Insightly CRM
Custom Object
Salesforce Sales Cloud
Custom Object (__c)
1:1Insightly Custom Objects migrate to Salesforce Custom Objects with the __c API name suffix appended to match Salesforce naming conventions. We pre-create the destination schema including all custom fields, lookup relationships to standard and other custom objects, and picklist controlled-vocabulary values before importing any data. Lookup references are resolved at migration time against the imported standard object records.
Insightly CRM
Custom Field (per object)
Salesforce Sales Cloud
Custom Field (__c)
1:1Custom fields require FIELD_NAME discovery via the /CustomFields/{objectName} endpoint before any writes that reference them. We build a FIELD_NAME-to-Salesforce-API-name reference table at the start of every migration and use it consistently across all record writes. Picklist values in Insightly custom fields are mapped to Salesforce controlled-vocabulary picklist values during schema design. Without the FIELD_NAME discovery step, writes that reference custom fields silently drop those field values.
Insightly CRM
Tag
Salesforce Sales Cloud
Multi-Select Picklist
lossyInsightly Tags are flat string labels applied to Contacts, Organizations, Opportunities, and Projects. We import them as Salesforce multi-select picklist fields on the relevant object. Tag arrays are flattened to pipe-delimited strings compatible with Salesforce's multi-select format. The customer selects which objects carry tags during scoping.
| Insightly CRM | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Lead | Lead1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Organization | Account1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Pipeline Stage | Sales Process + Opportunity Stagelossy | Fully supported | |
| Link Record (Contact-to-Organization) | Contact.AccountId1:1 | Fully supported | |
| Project | Task (conditional) or custom object1:1 | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Note (Comment) | Note + ContentDocumentLink1:1 | Fully supported | |
| Custom Object | Custom Object (__c)1:1 | Fully supported | |
| Custom Field (per object) | Custom Field (__c)1:1 | Fully supported | |
| Tag | Multi-Select Picklistlossy | 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.
Insightly CRM gotchas
Free plan record cap applies to all Insightly objects
API rate limits vary by plan and reset daily
Custom fields require FIELD_NAME lookup before writes
XML export only captures default fields for migrations out
Link relationships must be rebuilt via dedicated endpoints
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 scoping
We audit the Insightly account across plan tier, total record counts per object, active custom fields per object (using the FIELD_NAME discovery endpoint), custom object schemas and their inter-object lookups, pipeline and stage configuration, active workflow count and complexity, project count and Opportunity attachment rate, and owner email list. We pair this with a Salesforce edition decision: Professional ($80/user) covers most migrations without custom objects; Enterprise ($165/user) is required if the customer needs Salesforce Flow at scale, advanced reporting types, or full profile-based sharing rules. The discovery output is a written migration scope with a record-count estimate and Salesforce edition recommendation.
Schema design and FIELD_NAME reference build
We design the Salesforce destination schema: we provision any required custom objects with __c API names, create custom fields typed to match Insightly field types (text, date, picklist, currency, checkbox, number), and configure Record Types and Sales Processes to match the Insightly pipeline-stage structure. We simultaneously build the FIELD_NAME-to-Salesforce-API-name reference table by querying /CustomFields/{objectName} for every object that has custom fields. This reference table is the critical artifact that prevents silent custom field data loss during writes.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using production-equivalent data volume. The customer's Salesforce admin or RevOps lead reconciles record counts (Organizations in, Leads in, Contacts in, Opportunities in, Tasks in, Notes in, Custom Object records in), spot-checks 25-50 random records against the Insightly source for field-level accuracy, and verifies that Contact.AccountId is populated for all Contacts (no orphaned records). Link completeness is validated by comparing the pre-exported Insightly link count against the resolved Salesforce relationship count. Sign-off on the sandbox run authorizes production migration.
Owner reconciliation and User provisioning
We extract every distinct Insightly owner email referenced on Contacts, Organizations, Opportunities, Tasks, and Notes and match by email against the Salesforce destination org's User table. Any Insightly owner without a matching Salesforce User goes to a reconciliation queue for the customer's admin to provision. OwnerId references are required on Opportunity and Task inserts, so this step gates the production migration. We recommend provisioning inactive Users with the correct email for departed team members so that historical assignment is preserved.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Organizations), Leads, Contacts (with AccountId resolved from the link reconciliation step), Opportunities (with RecordTypeId, StageName, and probability set from the pipeline configuration), Tasks (with WhatId and OwnerId resolved), Notes (with ContentDocumentLink recreated for each linked record), Custom Objects (with all lookup references resolved at migration time). The explicit link reconciliation step is embedded in the Contact import phase. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, delta sync, and workflow rebuild handoff
We freeze Insightly writes during cutover, run a final delta migration of records modified during the migration window, then enable Salesforce as the system of record. We validate relationship completeness one final time and deliver the written Workflow Inventory document listing every Insightly Workflow with its trigger, conditions, actions, and a recommended Salesforce Flow equivalent. We deliver a separate Project and Attachment inventory noting what could not migrate and the recommended replacement path. We support a one-week hypercare window for reconciliation issues. We do not rebuild Insightly Workflows as Salesforce Flow inside the migration scope; that is a separate engagement.
Platform deep dives
Insightly CRM
Source
Strengths
Weaknesses
Salesforce Sales Cloud
Destination
Strengths
Weaknesses
Complexity grading
Moderate CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Insightly CRM and Salesforce Sales Cloud.
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
Insightly CRM: 10 requests per second; daily limit varies by plan (starting at 1,000 requests/day for free plan).
Data volume sensitivity
Insightly 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 Insightly CRM to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your Insightly 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 Insightly 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.