Helpdesk migration

Migrate from Insightly Service to Salesforce Service Cloud

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

Insightly Service logo

Insightly Service

Source

Salesforce Service Cloud

Destination

Salesforce Service Cloud logo

Compatibility

83%

10 of 12

objects map 1:1 between Insightly Service and Salesforce Service Cloud.

Complexity

CModerate

Timeline

4-8 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Insightly Service to Salesforce Service Cloud is a service-desk upgrade with structural schema differences. Insightly uses Tickets as the primary support object with Organizations and Contacts as linked entities; Salesforce Service Cloud uses Cases with entitlements, multi-channel routing queues, and a separate Account-Contact hierarchy that must be resolved at import time. We extract ticket conversations, file attachments, and SLA timer values from Insightly and load them via the Salesforce Bulk API 2.0 to preserve the full support history. Custom field groups in Insightly use FIELD_NAME identifiers that must be looked up via the Insightly API before import; we enumerate every custom field definition per object before writing begins. Workflows, automations, and SLA policies do not migrate as code; we deliver a written inventory of every active workflow and SLA policy for the customer's admin to rebuild in Salesforce Flow and Entitlement Processes post-migration.

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

Insightly Service logo

Insightly Service

What's pushing teams away

  • Users cite expensive per-user pricing at higher tiers, with the Professional tier at $49/user/month and Enterprise at $99/user/month creating budget pressure as teams scale beyond a handful of seats.
  • Advanced automation features and custom reporting are locked behind higher-priced tiers, leading users to describe the platform as having 'limited custom reporting' and 'limited features' for their specific needs.
  • Performance issues including time delays when handling large data volumes and frequent timeouts during setup and automation configuration frustrate users with substantial record counts.
  • The platform's learning curve is steep for automating workflows and navigating the onboarding process, with users noting setup is 'time-consuming' particularly for automation scenarios.
  • Insightly does not include email sequencing on any tier — Plus, Professional, or Enterprise — forcing teams to purchase a separate outbound email tool, adding cost and complexity.

Choosing

Salesforce Service Cloud logo

Salesforce Service Cloud

What's pulling them in

  • Deep Salesforce ecosystem integration with Sales Cloud, Marketing Cloud, and custom Apex apps creates a single pane of glass for enterprise customer data and cross-functional workflows.
  • Omnichannel case routing — email, chat, phone, social, and messaging — unified under one case object means agents do not lose context when customers switch channels mid-interaction.
  • AI for customer service (Einstein AI / Agentforce) offers automated case classification, suggested replies, and chatbot routing that reduces Tier-1 ticket volume without manual rule authoring.
  • Entitlement and milestone tracking enforces SLA compliance natively, automatically calculating breach windows and surfacing violations to supervisors in dashboards.
  • Salesforce's massive AppExchange ecosystem provides pre-built connectors, industry-specific managed packages, and third-party tools that extend Service Cloud beyond its out-of-box capabilities.

Object mapping

How Insightly Service objects map to Salesforce Service Cloud

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

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

Insightly Service

Ticket

maps to

Salesforce Service Cloud

Case

1:1
Fully supported

Insightly Tickets map directly to Salesforce Cases. Ticket status maps to Case Status using a status mapping table defined during scoping (Insightly OPEN/CLOSED/PENDING to Salesforce Case Status picklist values the customer selects). Ticket priority maps to Case Priority. We preserve the original Insightly ticket number as a custom field ins_ticket_number__c for cross-reference. SLA timer values from Insightly transfer to Salesforce Entitlement Processes and Milestones if the destination org has Service Cloud with Entitlements enabled; if not, SLA elapsed time is stored as a custom field sla_elapsed_hours__c for manual entitlement setup post-migration.

Insightly Service

Ticket Conversation

maps to

Salesforce Service Cloud

EmailMessage

1:1
Fully supported

Ticket conversations (comments on Insightly Tickets) migrate to Salesforce EmailMessage records linked to the Case. Each comment becomes an EmailMessage with the author name, timestamp, and HTML body preserved. Inbound and outbound direction is inferred from the comment author (agent vs customer) using the contact lookup. EmailMessage records appear in the Salesforce Case's activity timeline, preserving the chronological conversation view that support agents rely on during case review.

Insightly Service

Organization

maps to

Salesforce Service Cloud

Account

1:1
Fully supported

Insightly Organizations map to Salesforce Accounts. The Organization name becomes Account Name, and industry classification maps to the Industry picklist. Address data transfers to the Account's billing address fields. We preserve the ORGANISATION_ID as ins_organisation_id__c for cross-reference and use it as the dedupe key during import. Account is created before any Ticket or Case import so that the AccountId lookup is satisfied at the moment of Case insert.

Insightly Service

Contact

maps to

Salesforce Service Cloud

Contact

1:1
Fully supported

Insightly Contacts map to Salesforce Contacts with name, email, phone, and address fields transferred directly. The CONTACT_ID is preserved as ins_contact_id__c for cross-reference. If the destination Salesforce org uses Account hierarchy, we link each Contact to the Account derived from the Insightly Organization during import. Custom fields on Contact use the FIELD_NAME lookup from Insightly's /CustomFields/Contacts endpoint before import to avoid silent drops.

Insightly Service

Agent

maps to

Salesforce Service Cloud

User

1:1
Fully supported

Insightly Agents (users who handle tickets) map to Salesforce Users. We resolve agents by email match against the Salesforce destination org's User table. Any Insightly Agent without a matching Salesforce User is held in a reconciliation queue for the customer's admin to provision before case import resumes. Active and inactive status is preserved via a custom field ins_agent_active__c.

Insightly Service

Team

maps to

Salesforce Service Cloud

Group or Queue

lossy
Fully supported

Insightly Teams migrate to Salesforce Public Groups if the use case is visibility-based sharing, or to Omni-Channel Routing Queues if the destination org uses Omni-Channel for case distribution. The choice is made during scoping based on whether the customer wants queue-based routing. Team member assignments are preserved as GroupMember records linking Users to the destination Group or Queue. If Salesforce Service Cloud Omni-Channel is not enabled, we default to Public Groups.

Insightly Service

Custom Field

maps to

Salesforce Service Cloud

Custom Field

1:1
Fully supported

Insightly custom field groups use FIELD_NAME identifiers (not display labels) that must be retrieved via GET /v3.2/CustomFields/{objectName} before any data is written. We enumerate every custom field definition for Tickets, Contacts, Organizations, and Projects during discovery, map the FIELD_NAME to the equivalent Salesforce API field name (with __c suffix for custom fields), and verify the field type compatibility. Type mismatches (Insightly date field vs Salesforce datetime field, for example) are flagged and corrected before migration begins. Insightly's custom field limits are Plus 50, Professional 100, Enterprise 200 per object; we validate that the destination Salesforce edition supports the migrated field count.

Insightly Service

Attachment

maps to

Salesforce Service Cloud

ContentVersion + ContentDocumentLink

1:1
Fully supported

File attachments on Insightly Tickets and Organizations are exported as metadata (filename, URL, MIME type, size) via the Insightly attachments API. Files are downloaded to a staging environment and re-uploaded to Salesforce as ContentVersion records. Each ContentVersion is linked to the parent Case or Account via a ContentDocumentLink record with the ShareType set to I (Inferred) for the case-specific view. Attachments are imported after Cases and Accounts so the parent record IDs are available for linking.

Insightly Service

Note

maps to

Salesforce Service Cloud

Note

1:1
Fully supported

Insightly Notes (standalone objects linked to Contacts, Organizations, Opportunities, or Projects) migrate to Salesforce Note records. We preserve the note body, author, and created date, and link via ContentDocumentLink to the parent Contact, Account, or Opportunity using the resolved ID from the import phase. If the destination org uses Salesforce Lightning, we map to ContentNote as well depending on the customer's preference for rich text vs classic notes.

Insightly Service

Project

maps to

Salesforce Service Cloud

Task (or Custom Object)

lossy
Fully supported

Insightly Projects are CRM-level objects linked to Opportunities or Organizations. If the destination Salesforce org does not have a native project management object, Projects migrate to a custom Project__c object that we pre-create in the destination schema with the required fields (Name, Status, StartDate, EndDate, related Account, related Opportunity). If the customer uses Salesforce Field Service or a project management AppExchange package (Monday.com, Asana), we create the mapping to the appropriate destination during scoping. Project task sets migrate as related Salesforce Tasks linked to the Project record.

Insightly Service

Knowledge Base Article

maps to

Salesforce Service Cloud

Article (Knowledge Article)

1:1
Fully supported

Insightly KB Articles (titles, body content, category assignments, and publish status) migrate to Salesforce Knowledge Articles. Category structure from Insightly maps to Salesforce Article Type and Data Category Groups. We migrate article titles, body HTML, and publish status; article view counts and feedback ratings are stored as custom fields on the Knowledge Article because they do not map to standard Salesforce Knowledge fields. KB article migration requires the Salesforce Knowledge feature to be enabled in the destination org before import.

Insightly Service

Opportunity (linked)

maps to

Salesforce Service Cloud

Opportunity

1:1
Fully supported

Insightly Opportunities linked to Organizations migrate to Salesforce Opportunities with AccountId resolved from the Organization-to-Account mapping. Pipeline stage, deal value, probability, and close date transfer directly. Opportunity Categories use FIELD_NAME identifiers in Insightly; we map these to Salesforce Opportunity StageName using a stage mapping table. Closed-Lost and Closed-Won reasons from Insightly become Salesforce Loss Reason and custom win/loss fields. If the destination org uses multiple Sales Processes, we assign the appropriate Record Type per Opportunity during import.

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.

Insightly Service logo

Insightly Service gotchas

Medium

Annual billing only — no monthly option available

Medium

Email sequencing absent across all plan tiers

High

AppConnect integration add-on has a $3,000 setup fee

Medium

Custom field FIELD_NAME lookups required for API writes

Low

Performance timeouts on large data volume operations

Salesforce Service Cloud logo

Salesforce Service Cloud gotchas

High

Data Export 512MB file size cap breaks large org exports

High

API Daily Request Limits vary by license edition

High

No automatic data backup in base Salesforce

Medium

Picklist dependencies silently break records when unmapped

Medium

Workflow rules fire unexpectedly during data load

Pair-specific challenges

  • Insightly custom fields require FIELD_NAME lookups before migration

    Insightly's API does not accept custom field display labels when writing or reading custom field values — it requires the FIELD_NAME identifier (a machine-readable string like CUSTOM_FIELD_1). We query the GET /v3.2/CustomFields/{objectName} endpoint to retrieve all FIELD_NAME identifiers for Tickets, Contacts, Organizations, and Projects before any data export. If we write custom field values without the correct FIELD_NAME, Insightly silently drops those values. This is a known source-side API constraint that affects every migration regardless of destination. We catch this during pre-migration enumeration and build the field name index before writing begins.

  • Ticket status values do not map 1:1 to Salesforce Case Status

    Insightly Ticket status values (OPEN, CLOSED, PENDING, ON_HOLD, and any custom status values) must be mapped to Salesforce Case Status picklist values, which are configurable per Record Type. We define the status mapping table during scoping with the customer's Salesforce admin. If the admin has not pre-configured the Case Status values, we create them in the destination org before migration. Skipping this step results in rejected Case inserts because Salesforce enforces picklist value whitelisting per Record Type.

  • SLA timers in Insightly do not migrate as live entitlement milestones

    Insightly SLA timers track elapsed time against a defined SLA window. Salesforce Entitlement Processes and Milestones replicate this behavior but require the entitlements feature to be enabled and configured before Cases are created. If the destination org does not have Service Cloud Entitlements enabled, we store the elapsed SLA hours as a custom field ins_sla_elapsed_hours__c on Case and deliver a written entitlement configuration plan for the admin to implement post-migration. SLA timer logic is not automatically replicated by any Salesforce API.

  • Salesforce field-level security blocks import for the migration user by default

    Salesforce enforces field-level security per profile. The migration user's profile may not have read or write access to all standard and custom fields being populated during migration. We coordinate with the customer's Salesforce admin to grant the migration user field-level edit access to all mapped fields, and either temporarily disable validation rules during load or add a migration-context bypass flag. Without this step, we typically see 5-20% record rejection on the first import attempt because required fields are protected or picklist values are restricted per profile.

  • Omni-Channel routing requires separate configuration beyond data migration

    Insightly Teams and Team Members map to Salesforce Public Groups or Omni-Channel Queues, but Omni-Channel itself (Presence Configurations, Routing Configurations, Skills-based routing, and Capacity估计) is a configuration step outside the data migration scope. We deliver the team-to-queue mapping as part of the migration handoff document, but the Omni-Channel setup, agent presence configuration, and skill assignment require the customer's Salesforce admin to configure in the destination org post-migration. Agents without Omni-Channel configuration can still receive Cases via manual assignment or Assignment Rules.

Migration approach

Six steps for a successful Insightly Service to Salesforce Service Cloud data migration

  1. Discovery and scope definition

    We audit the source Insightly Service environment across plan tier (Plus/Professional/Enterprise), ticket volume, custom field groups per object, team structure, SLA configuration, linked CRM objects (Organizations, Opportunities, Projects), attachment count, and KB article count. We pair this with a Salesforce Service Cloud edition review: Essential ($25/user) covers basic case management; Professional ($75/user) adds email-to-case, web-to-case, and Salesforce mobile app; Enterprise ($150/user) adds Omni-Channel, Entitlements, and Milestones; Unlimited ($300/user) adds 24x7 support and unlimited custom apps. The discovery output is a written migration scope with object counts, custom field inventory, and Salesforce edition recommendation.

  2. Custom field enumeration and schema pre-creation

    We query the Insightly API for all FIELD_NAME identifiers across Ticket, Contact, Organization, and Project objects before any data extraction. We pre-create the Salesforce destination schema in a Sandbox org, including all custom fields (with __c API names), custom field sets, Case Record Types, Case Status picklist values, Entitlement Processes, Milestone Types, and Public Groups or Queues. Custom field type compatibility is validated at this stage — Insightly date fields mapped to Salesforce datetime fields, Insightly dropdown fields mapped to Salesforce picklists, and multi-select fields mapped to multi-select picklists.

  3. Sandbox migration and reconciliation

    We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using production-like data volume. The customer's Service Cloud admin reconciles record counts (Tickets in vs Cases in, Contacts in vs Contacts in, Organizations in vs Accounts in), spot-checks 25-50 random Cases against the Insightly source for field accuracy and conversation completeness, and validates that SLA timer values and attachments are intact. Status mapping and custom field mapping corrections happen here, not in production. The admin signs off the sandbox validation before production migration begins.

  4. Agent and team reconciliation

    We extract every distinct Insightly Agent (user email) referenced on Ticket, Note, and Attachment records and match by email against the Salesforce destination org's User table. Any Insightly Agent without a matching Salesforce User is placed in a reconciliation queue. The customer's Salesforce admin provisions any missing Users (active or inactive depending on whether the original agent is still active). Team-to-Group or Team-to-Queue mapping is finalized at this stage, including the decision to use Omni-Channel Queues vs Public Groups. Migration cannot proceed past this step because OwnerId and Queue references are required on Case records.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Accounts (from Insightly Organizations), Contacts (with AccountId resolved), Cases (with AccountId, ContactId, OwnerId, and RecordTypeId resolved), Custom Fields (field-level writes after schema validation), Ticket Conversations (EmailMessage via Bulk API 2.0), Attachments (ContentVersion + ContentDocumentLink), Notes (Note or ContentNote), Knowledge Base Articles (Salesforce Knowledge with Data Category mapping), Opportunities (from linked CRM records), Projects (custom Project__c object if applicable). Each phase emits a row-count reconciliation report before the next phase begins. Bulk API 2.0 handles chunking and exponential backoff for large conversation histories.

  6. Cutover, validation, and handoff

    We freeze Insightly Service writes during cutover, run a final delta migration of any Cases or Comments modified during the migration window, then enable Salesforce Service Cloud as the system of record. We deliver the Workflow and SLA Policy inventory document to the customer's admin team, including each active Insightly workflow trigger, conditions, and actions with a recommended Salesforce Flow equivalent. We support a one-week hypercare window where we resolve any reconciliation issues raised by the service team. We do not rebuild Insightly workflows as Salesforce Flow or configure Omni-Channel inside the migration scope; those are separate engagements or internal admin tasks.

Platform deep dives

Context on both ends of the pair

Insightly Service logo

Insightly Service

Source

Strengths

  • All-in-one CRM, marketing automation, and helpdesk on a single platform with shared data model
  • Drag-and-drop customization including custom fields, custom field groups, and custom objects without code
  • 14-day free trial with entry-level Plus tier at $29/user/month annual billing
  • Integrated project management linked to CRM records and Opportunities
  • API supports HTTPS with gzip compression and standard JSON content-type for straightforward integration

Weaknesses

  • Email sequencing absent from all tiers, requiring a separate paid tool for outbound campaigns
  • Annual-only billing model removes monthly flexibility and increases upfront commitment
  • Marketing add-on ($499/mo) and AppConnect ($249/mo + $3,000 setup) add significant cost beyond base per-user pricing
  • Custom reporting capabilities are limited and considered a pain point in user reviews
  • Performance degrades with large data volumes; time delays and timeouts reported by users with substantial records
Salesforce Service Cloud logo

Salesforce Service Cloud

Destination

Strengths

  • Enterprise-grade security, compliance certifications, and audit logging available across all paid editions with Shield offering enhanced event monitoring.
  • Scalable multi-tenant cloud architecture supporting orgs from 5 users to 150,000+ seat enterprises without infrastructure management overhead.
  • Omnichannel contact center unifying email, live chat, phone, messaging, and social into a single Case timeline per customer interaction.
  • Rich workflow automation via Salesforce Flow, Process Builder, and Apex triggers enabling complex case escalation, routing, and field updates.
  • Native AI capabilities (Agentforce / Einstein) for case auto-routing, classification, suggested responses, and chatbot escalation without third-party add-ons.

Weaknesses

  • Per-seat pricing model with no contact limits creates unpredictable cost scaling for large organizations adding many agents over time.
  • No automatic data backup — organizations must purchase a third-party backup solution or build manual Data Loader exports to protect against data loss from human error, failed deployments, or integrations overwriting records.
  • Steep learning curve for non-technical users requiring dedicated admin resources and formal training investment before teams reach productive velocity.
  • Annual contract requirements and limited pro-ration on exit create significant switching cost friction, especially for organizations evaluating alternatives mid-cycle.
  • Add-on licensing (CPQ, Einstein Activity Capture, Shield, Data Cloud) can double effective per-seat cost without clear documentation of which features are included in base tiers.

Complexity grading

How hard is this migration?

Moderate Helpdesk migration. 1 of 7 objects need a manual workaround.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Insightly Service and Salesforce Service Cloud.

  • Object compatibility

    C

    1 of 7 objects need a manual workaround.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    7-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Insightly Service: Not publicly documented; varies by plan tier.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Insightly Service to Salesforce Service 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 Insightly Service to Salesforce Service Cloud data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most migrations land between four and eight weeks for environments under 10,000 Tickets with clean custom field definitions, no linked CRM Opportunities, and no knowledge base migration. Migrations with large conversation histories (over 100,000 email and comment records), multiple custom field groups, linked Opportunities or Projects from the Insightly CRM layer, or knowledge base article migration move to ten to sixteen weeks because of Bulk API chunking time for conversations, custom field type validation, and Salesforce Knowledge article type configuration in the destination org.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Insightly Service.
Land in Salesforce Service 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