CRM migration
Field-level mapping, validation, and rollback between SalesCaptain and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
SalesCaptain
Source
Freshsales
Destination
Compatibility
5 of 8
objects map 1:1 between SalesCaptain and Freshsales.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from SalesCaptain to Freshsales is a structural migration that narrows a communications-first platform into a standard CRM data model. SalesCaptain uses a unified Contact object with a Leads distinction and conversation threads as first-class records; Freshsales separates Leads from Contacts and Accounts, with Deals as the pipeline unit and Activities as the timeline. We resolve the Lead versus Contact split during scoping using SalesCaptain's lead status properties, map conversation threads to Freshsales Tasks and Notes with timestamps preserved, and handle SalesCaptain's narrow custom field schema against Freshsales's broader custom field support. Workflow automation rules and communication routing logic do not migrate via API; we deliver a written inventory of active automation rules for the customer's admin to rebuild in Freshsales Workflows post-migration.
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 SalesCaptain object lands in Freshsales, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
SalesCaptain
Contact
Freshsales
Lead or Contact (split required)
1:manySalesCaptain Contacts with an active lead status property map to Freshsales Lead; Contacts without lead status map to Freshsales Contact. We compute the split at migration time using SalesCaptain's lead/contact distinction, preserve any original contact ID in a custom field for audit, and map email and phone as the primary identifiers for deduplication. If SalesCaptain does not expose a clear lead flag, we default to Freshsales Contact and flag the record for manual lead conversion review post-migration.
SalesCaptain
Company
Freshsales
Account
1:1SalesCaptain Company records map directly to Freshsales Account. The company name, domain, address, and custom properties migrate as standard and custom Account fields. Account is created before any Contact import so that the Account lookup relationship is satisfied at Contact insert. Multi-location support in SalesCaptain maps to Freshsales Account with multiple address records.
SalesCaptain
Deal
Freshsales
Deal
1:1SalesCaptain Deal records map to Freshsales Deal with deal name, amount, stage, close date, and owner preserved. The SalesCaptain pipeline stage maps to Freshsales Deal stage using a stage-mapping worksheet agreed upon during scoping. Custom properties on Deals migrate as Freshsales custom fields on the Deal object.
SalesCaptain
Conversation
Freshsales
Task and Note
1:1SalesCaptain conversation threads export as activity records with timestamps, participants, and message content. We map message threads to Freshsales Tasks (for action-oriented entries) and Notes (for conversation summaries), preserving the original timestamp as Activity Date. Channel type (SMS, voice, chat) is stored in a custom field on the Task or Note record. Long conversation threads may be condensed into a single Note with a message count summary to avoid overwhelming the activity timeline.
SalesCaptain
Custom Field
Freshsales
Custom Field
lossySalesCaptain custom field definitions export as JSON schemas alongside field values. We create equivalent custom fields in Freshsales for Leads, Contacts, Accounts, and Deals during the schema setup phase. Type coercion is applied where necessary: SalesCaptain date-only fields that import as datetime are normalized, multi-select picklist delimiters are normalized to Freshsales format, and boolean fields map to Freshsales checkbox fields.
SalesCaptain
User/Team Member
Freshsales
User
1:1SalesCaptain user records export with name, email, role, and assignment data. We match users by email against Freshsales User records. Any SalesCaptain Owner without a matching Freshsales User goes to a reconciliation queue for the customer's admin to provision before record import resumes. Owner assignment on migrated records requires mapping SalesCaptain owner IDs to Freshsales Owner IDs.
SalesCaptain
Communication Channel Profile
Freshsales
Contact Custom Field (status flag)
1:1SalesCaptain communication channel profiles (phone numbers, messaging accounts) export as metadata. Freshsales does not have a native Communication Channel Profile object, so we flag channel availability as custom properties on the Contact or Lead record (for example, sms_enabled and voice_enabled as checkbox fields) and note any channel-specific routing rules in a Migration Notes document for the customer's admin to address manually.
SalesCaptain
Workflow/Automation Rule
Freshsales
Workflow (manual rebuild)
lossySalesCaptain workflow automation rules do not export via API. We document every active rule during discovery using a Workflow Inventory worksheet that captures trigger conditions, filter logic, and actions. The customer rebuilds these rules in Freshsales Workflows post-migration. This is standard scope for all CRM migrations and is not included in the data migration deliverable as executable code.
| SalesCaptain | Freshsales | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (split required)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Conversation | Task and Note1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| User/Team Member | User1:1 | Fully supported | |
| Communication Channel Profile | Contact Custom Field (status flag)1:1 | Fully supported | |
| Workflow/Automation Rule | Workflow (manual rebuild)lossy | 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.
SalesCaptain gotchas
No public bulk export API for high-volume migrations
Workflow automation rules do not export via API
Bearer token rotation requires re-authentication during migration
Limited custom field type support on import
No public API rate limit documentation
Freshsales gotchas
Freddy AI is Pro-tier only despite heavy marketing
Post-migration emails and sequences are disabled
Bot session credits are a one-time 500-session allocation
Phone credits charged per minute with no cap
File storage limits scale with plan tier
Pair-specific challenges
Migration approach
Discovery and data audit
We audit the source SalesCaptain account across contacts, companies, deals, conversations, custom fields, users, and active workflow rules. We document record counts, custom field definitions, owner assignments, and pipeline stage values. We pair this with a Freshsales edition review to confirm that all required custom fields and deal pipelines are available at the target tier. The discovery output is a written migration scope, a field mapping worksheet, and a Freshsales configuration checklist.
Schema design and Freshsales configuration
We design the destination schema in Freshsales. This includes creating custom fields on Leads, Contacts, Accounts, and Deals to match SalesCaptain custom property definitions, configuring lead conversion field mapping in Admin Settings to prevent data loss at conversion, setting up deal pipelines and stages to match SalesCaptain pipeline data, and provisioning users to match SalesCaptain owner assignments by email match. Schema configuration happens in Freshsales Admin Settings before any data import begins.
Test migration and reconciliation
We run a test migration with a representative data sample into the configured Freshsales account. The customer reconciles record counts and spot-checks 25-50 records against the SalesCaptain source to verify mapping accuracy. Any field mapping corrections, custom field type adjustments, or stage mapping corrections happen at this stage. We do not proceed to full production migration until the customer signs off on the test migration results.
Owner and user reconciliation
We extract every distinct SalesCaptain user referenced on Contact, Company, Deal, and Engagement records and match by email against the Freshsales User table. Users without a matching Freshsales account go to a reconciliation queue for the customer's admin to provision. Owner assignment on migrated records requires mapping SalesCaptain owner IDs to Freshsales Owner IDs before record import can proceed.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from SalesCaptain Companies), Contacts and Leads (with the status split applied), Deals (with OwnerId and AccountId resolved), Tasks and Notes (from SalesCaptain conversation threads), and custom field values (applied after parent records are created). Each phase emits a row-count reconciliation report before the next phase begins. We use conservative request pacing against SalesCaptain's API to avoid triggering throttle responses given the undocumented rate limits.
Cutover, validation, and workflow rebuild handoff
We freeze SalesCaptain writes during cutover, run a final delta migration of any records modified during the migration window, then enable Freshsales as the system of record. We deliver the Workflow Inventory document to the customer's admin team for manual rebuild in Freshsales Workflows. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild SalesCaptain Workflows as Freshsales Workflows inside the migration scope; that is a separate engagement.
Platform deep dives
SalesCaptain
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 3 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 SalesCaptain and Freshsales.
Object compatibility
3 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
SalesCaptain: Not publicly documented.
Data volume sensitivity
SalesCaptain 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 SalesCaptain to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your SalesCaptain to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave SalesCaptain
Other ways to arrive at Freshsales
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.