CRM migration
Field-level mapping, validation, and rollback between Close and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Close
Source
Freshsales
Destination
Compatibility
5 of 10
objects map 1:1 between Close and Freshsales.
Complexity
BStandard
Timeline
1-3 weeks
Overview
Moving from Close to Freshsales requires reconciling two different data models. Close runs a Lead-and-Contact schema where both coexist as separate record types with their own fields; Freshsales uses a traditional Leads module with an explicit Convert action that produces a Contact, an Account, and optionally a Deal. We resolve that difference during scoping by defining a Close Lead status to Freshsales Lead mapping and a Freshsales lead conversion field-mapping template before import begins. Close's unified activity stream (calls, emails, SMS, tasks) must come via JSON export because CSV silently drops every activity record. We collapse Custom Activities into typed Tasks with a custom activity_type field so that the timeline survives the migration intact. We do not migrate Workflows or Custom Objects as code; we deliver a written inventory of both for the customer's admin to rebuild in Freshsales Workflows or Custom Modules 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 Close 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.
Close
Lead
Freshsales
Lead
1:1Close Leads migrate to Freshsales Leads with all standard fields (name, email, phone, status, owner) and all Lead-scoped Custom Fields preserved. We resolve Close lead status labels to Freshsales Lead Status values during the transform. A close_lead_id__c field stores the original Close Lead ID for audit and reconciliation. The mapping excludes any Custom Activity fields that are scoped to Lead in Close; those require the Custom Activity collapse described below.
Close
Contact
Freshsales
Contact + Account
1:manyClose Contacts that carry an organisation name split into a Freshsales Account (the company record) and a Contact linked to it. The Contact-Account relationship is resolved at migration time: we create the Account first using the organisation name from Close, then create the Contact with AccountId pointing to the resolved Account. Contacts without an organisation name in Close migrate as standalone Freshsales Contacts with no Account association.
Close
Opportunity
Freshsales
Deal
1:1Close Opportunities map to Freshsales Deals. The Close pipeline_stage maps to Freshsales Deal stage. We create a Freshsales Sales Flow (pipeline) matching the Close Pipeline name and recreate all stage values in order before importing Deals so that the stage reference is satisfied at insert time. Closed-Lost and Closed-Won status from Close map directly to Freshsales deal_status values.
Close
Pipeline
Freshsales
Sales Flow
lossyEach Close Pipeline becomes a Freshsales Sales Flow with the same name and stage ordering preserved. Stage probability percentages from Close migrate to Freshsales stage weights. The Sales Flow must exist in Freshsales before any Deal referencing it is imported; we create all Sales Flows in the schema setup phase before any record-level migration begins.
Close
Pipeline Stage
Freshsales
Sales Flow Stage
lossyClose pipeline stages map to Freshsales Sales Flow stage values with display order preserved. If a Close pipeline stage has a probability weight set, we create a corresponding Freshsales stage with the probability value. Custom stage columns from Close (such as required_fields_on_entry or custom_probability_override) are noted in the migration scope but cannot be replicated in Freshsales without manual configuration by the admin.
Close
Activity (Calls, Emails, SMS, Tasks)
Freshsales
Task + Event
1:1Close's activity stream is only complete via JSON export; CSV export silently omits all activity records. We extract the full activity array from Close's JSON export, transform each entry by type, and import into Freshsales. Call engagements become Task records with TaskSubtype=Call and a custom call_disposition__c field. Email engagements become Task records with a notes_body field carrying the email body. SMS engagements become Task records with a custom sms_direction__c field. Meeting engagements become Event records with StartDateTime and EndDateTime preserved. All tasks link to the parent Contact or Lead via the WhoId resolution built during record creation.
Close
Custom Activity
Freshsales
Task (typed)
lossyClose Custom Activities have no Freshsales equivalent; Freshsales does not support user-defined activity type schemas. We collapse all Custom Activity instances into Freshsales Task records and set a custom field activity_type__c to the original Close Custom Activity Type name so that the activity kind is preserved in the timeline. The Custom Activity Type definitions are exported as a schema document and included in the handoff package for the customer's admin to review.
Close
Custom Fields
Freshsales
Custom Fields
1:1Close Lead Custom Fields, Contact Custom Fields, and Opportunity Custom Fields map to Freshsales Lead, Contact, and Deal Custom Fields respectively. We read the field definition (type, picklist options, required flag) from the Close API, create the equivalent typed field in Freshsales via Admin Settings before import, and preserve choice-option labels exactly. If a Close custom field type has no direct Freshsales equivalent (for example, a formula field), we flag it in the scope document and note whether the value can be replicated post-migration in Freshsales.
Close
User / Team Member
Freshsales
User
1:1Close Users map to Freshsales Users by email address match. We extract all distinct users referenced on Lead, Contact, Opportunity, and Activity records and match against the Freshsales User table. Any Close User without a matching Freshsales User goes to a reconciliation queue for the customer's admin to provision before the record migration phase begins. Role and team membership from Close are noted but do not replicate; Freshsales role-based access is configured by the admin post-migration.
Close
Smart View
Freshsales
Saved View
lossyClose Smart Views (saved Lead search filters) cannot be exported as data and have no direct Freshsales equivalent. We extract the Smart View filter configuration as a named JSON document and deliver it to the customer's admin as a step-by-step guide for recreating the same filters as Freshsales Saved Views. Filter logic translation is included: Close operator types (is, is_not, contains, etc.) map to Freshsales filter operators one-to-one.
| Close | Freshsales | Compatibility | |
|---|---|---|---|
| Lead | Lead1:1 | Fully supported | |
| Contact | Contact + Account1:many | Fully supported | |
| Opportunity | Deal1:1 | Fully supported | |
| Pipeline | Sales Flowlossy | Fully supported | |
| Pipeline Stage | Sales Flow Stagelossy | Fully supported | |
| Activity (Calls, Emails, SMS, Tasks) | Task + Event1:1 | Fully supported | |
| Custom Activity | Task (typed)lossy | Fully supported | |
| Custom Fields | Custom Fields1:1 | Mapping required | |
| User / Team Member | User1:1 | Fully supported | |
| Smart View | Saved Viewlossy | 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.
Close gotchas
CSV exports drop all activity history silently
Smart Views can only export from the Leads tab
Workflows gatekept behind Growth and Scale plans
Custom Activities require strict dependency ordering
Rate limits enforced per endpoint group
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 export
We audit the Close account for record counts (Leads, Contacts, Opportunities, Activities), Custom Fields per object, Custom Activity Types and their field schemas, Pipeline names and stage counts, and active Workflows. We request JSON export for all record types including activity history. We identify any Close plan-gated features (Workflows on Essentials will not migrate regardless of destination) and flag them in the scope document before migration begins.
Schema setup in Freshsales
We create the destination schema in Freshsales before any records import: Sales Flows matching Close Pipelines, Deal stages with probability weights, Accounts (for the Contact-Account split), Lead and Contact Custom Fields matched to Close definitions, and the Freshsales Conversion Settings mapping Lead fields to Contact, Account, and Deal fields. The conversion mapping is the critical path item; it must be complete before Leads are imported if any Lead records will be converted post-migration.
Sandbox validation and record count reconciliation
We run a sample migration using a subset of Close records into a Freshsales test account. The customer reconciles record counts (Leads in, Contacts in, Accounts in, Deals in, Activities in), spot-checks 20-30 records against the Close source, and approves the field mapping before full production migration. Corrections to Custom Field names, stage ordering, or conversion mapping happen in the test phase.
Production migration in dependency order
We run production migration in record-dependency order: Users (email-matched and reconciled), Accounts (from Close Contacts with organisation names), Contacts (with AccountId resolved), Leads, Deals (with Sales Flow stage and AccountId resolved), Activity history via JSON extract (Tasks, Events, typed by activity kind), and Custom Activities collapsed to typed Tasks last. Each phase emits a row-count report before the next phase begins.
Cutover, delta sync, and Workflow handoff
We freeze Close writes during cutover, run a final delta migration of any records created or modified during the migration window, then mark Freshsales as the system of record. We deliver the Close Workflow inventory document with Freshsales Workflow equivalents to the customer's admin team. We support a brief hypercare window to resolve post-migration reconciliation issues raised by the sales team. We do not rebuild Close Workflows or Custom Activities as Freshsales code; those are documented for the admin to complete post-migration.
Platform deep dives
Close
Source
Strengths
Weaknesses
Freshsales
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Close and Freshsales.
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
Close: Per endpoint group with a lower limit on write operations; 429 response includes rate_reset value; limits enforced at the organisation level across all API keys.
Data volume sensitivity
Close 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 Close to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Close 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 Close
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.