CRM migration
Field-level mapping, validation, and rollback between Nutshell and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Nutshell
Source
Freshsales
Destination
Compatibility
9 of 12
objects map 1:1 between Nutshell and Freshsales.
Complexity
BStandard
Timeline
2-3 weeks
Try the reverse
Overview
Moving from Nutshell to Freshsales is a schema-translation migration that starts with Nutshell's JSON-RPC API and ends with Freshsales' REST-based import layer. Nutshell's flat People-attached-to-Company model maps to Freshsales' Contacts linked to Accounts, and Nutshell's separate Leads records can either map to Freshsales Leads or merge into Contacts depending on your sales process. We use paginated JSON-RPC reads against Nutshell's API with rate-limit handling to extract all objects, then translate the schema during a staging phase before writing to Freshsales. Activities (calls, emails, meetings, tasks) migrate as Freshsales Appointments and Tasks with parent-contact resolution. Nutshell email sequences do not export via API; we document the sequence configuration for your admin to rebuild in Freshsales Workflows post-migration. Custom fields enumerate per-object and recreate in Freshsales before data import begins.
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.
Source platform
Nutshell platform overview
Scorecard, SWOT, gotchas, and pricing for Nutshell.
Destination platform
Freshsales platform overview
Scorecard, SWOT, gotchas, and pricing for Freshsales.
Data migration guide
The complete Freshsales migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
Nutshell migration guide
Understand the data you're exporting from Nutshell before mapping it.
Destination checklist
Freshsales migration checklist
Pre- and post-cutover tasks for moving onto Freshsales.
Source checklist
Nutshell migration checklist
Exit checklist for unwinding your Nutshell setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Nutshell 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.
Nutshell
People
Freshsales
Contact
1:1Nutshell People records map directly to Freshsales Contacts. Standard fields (name, email, phone, address) translate to Freshsales Contact fields. The primary_email becomes the Contact email, and we use email as the dedupe key during import to prevent duplicate Contacts. People records without an email address are flagged for manual review because Freshsales relies on email for duplicate detection and some automation triggers.
Nutshell
Company
Freshsales
Account
1:1Nutshell Companies map to Freshsales Accounts. The company name becomes Account Name, and any company-level custom fields migrate to Freshsales Account custom fields. We create the Account in Freshsales before importing linked People records so the Account-Contact lookup relationship is satisfied at insert time. Nutshell Companies without a name are held for manual naming before Account creation.
Nutshell
People
Freshsales
Contact (linked to Account)
1:1Each Nutshell Person carries a reference to its parent Company. During migration we resolve the Company-Nutshell-ID-to-Account-ID mapping so that each Freshsales Contact receives the correct AccountId lookup. This parent-record resolution is critical: without it, Contacts import as unlinked and reps lose the company context on the Contact record.
Nutshell
Lead
Freshsales
Lead or Contact (customer choice)
1:manyNutshell Leads are separate records with their own custom field definitions and lifecycle stage. During scoping we determine whether the customer's sales process uses Leads as unqualified prospects (mapping to Freshsales Lead) or whether all Nutshell Leads should merge into Freshsales Contacts. If Lead-to-Lead, we preserve Nutshell Lead status and source fields on the Freshsales Lead record. If Lead-to-Contact, we map the Nutshell Lead owner and any score fields to Freshsales Contact custom fields.
Nutshell
Pipeline
Freshsales
Deal (with Sales Process)
lossyNutshell Pipelines become Freshsales Deals scoped by Sales Process or Record Type. We extract each Nutshell pipeline definition including stage names, stage order, and win/loss status, then configure matching Freshsales Deal sales processes before migration. Probability percentages map to Freshsales Deal probability fields with rounding to the nearest whole number.
Nutshell
Deal
Freshsales
Deal
1:1Nutshell Deals map to Freshsales Deals. The deal name becomes Deal Name, pipeline maps to the pre-created Freshsales Sales Process, and stage maps to the corresponding Freshsales Deal stage. We preserve close_date as the Freshsales Deal expected_close_date and amount as the Deal Amount. Owner assignment resolves via email match against Freshsales Users.
Nutshell
Activity (Call)
Freshsales
Task (TaskSubtype = Call)
1:1Nutshell call activities map to Freshsales Tasks with task_type set to Call. Duration, disposition, and call outcome from Nutshell translate to custom Task fields. The activity timestamp preserves as Task creation date for timeline ordering. We resolve the parent-contact lookup so the call appears on the correct Contact record in Freshsales.
Nutshell
Activity (Email)
Freshsales
Task (with email body)
1:1Nutshell email activities map to Freshsales Tasks with the email body preserved in the Task notes or linked as an attachment. Email subject, sender, and recipient resolve to the appropriate Freshsales Contact. If the Nutshell account used the built-in email client, the email thread reference migrates as a linked note on the Contact timeline.
Nutshell
Activity (Meeting)
Freshsales
Appointment
1:1Nutshell meeting activities map to Freshsales Appointments with start time, end time, and location preserved. We resolve the attendee list by matching Nutshell contact references to Freshsales Contact records and create Appointment contact links for each attendee.
Nutshell
Activity (Task)
Freshsales
Task
1:1Nutshell task activities (as opposed to calls and emails) map to Freshsales Tasks with Status, Priority, and due date preserved. The task subject becomes the Task title. If the Nutshell task was assigned to a specific owner, we resolve by email to the corresponding Freshsales User.
Nutshell
Custom Field
Freshsales
Custom Field
lossyNutshell custom fields exist per object (Company, Person, Lead). We enumerate all custom field definitions during discovery, map each to a Freshsales custom field of equivalent type (text, number, date, dropdown), and create the destination field in Freshsales before any record import begins. Custom field API names translate from Nutshell's naming to Freshsales' convention during the transform phase.
Nutshell
Tag
Freshsales
Tag or Label
1:1Nutshell tags on People and Companies export as tag values and map to Freshsales Tags on the Contact or Account. Tag hierarchy (if configured in Nutshell) flattens during export since Freshsales Tags are a flat taxonomy. We apply tags in bulk after the primary record import completes.
| Nutshell | Freshsales | Compatibility | |
|---|---|---|---|
| People | Contact1:1 | Fully supported | |
| Company | Account1:1 | Fully supported | |
| People | Contact (linked to Account)1:1 | Fully supported | |
| Lead | Lead or Contact (customer choice)1:many | Fully supported | |
| Pipeline | Deal (with Sales Process)lossy | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Activity (Call) | Task (TaskSubtype = Call)1:1 | Fully supported | |
| Activity (Email) | Task (with email body)1:1 | Fully supported | |
| Activity (Meeting) | Appointment1:1 | Fully supported | |
| Activity (Task) | Task1:1 | Fully supported | |
| Custom Field | Custom Fieldlossy | Fully supported | |
| Tag | Tag or Label1:1 | 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.
Nutshell gotchas
Contact tier limits enforced on import
No bulk API endpoint requires paginated extraction
Email sequences not exportable via API
Foundation plan disables key sales features
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 Nutshell API audit
We authenticate against the Nutshell JSON-RPC API and enumerate all objects: People, Companies, Leads, Pipelines, Deals, Activities (calls, emails, meetings, tasks), and custom field definitions per object. We extract a full schema inventory including field types, required flags, and picklist values. We identify any attachments (metadata only, since binary blobs are not returned by the API) and document active email sequences for the rebuild checklist. We produce a written scope covering record counts per object, custom field inventory, and any pipeline or hierarchy gaps.
Freshsales schema pre-creation
We create the destination Freshsales schema before any data import. This includes provisioning custom fields (matching Nutshell's type definitions to Freshsales field types), configuring Deal Sales Processes matching each Nutshell pipeline, creating any required Freshsales Users to match Nutshell Owner emails, and setting up Tags to match Nutshell tag taxonomy. Schema is validated in Freshsales before the staging migration begins.
Staging migration and reconciliation
We run a full migration into a Freshsales staging environment using a representative data sample (typically 10-20% of records). We reconcile record counts per object, spot-check 20-30 records field-by-field against the Nutshell source, and validate that Activity records attach to the correct parent Contacts and Accounts. Any mapping corrections, field type mismatches, or missing custom fields are corrected before the production migration begins.
Parent-record dependency resolution
We build the Nutshell-Company-ID to Freshsales-Account-ID lookup table during the Account migration phase. This table is used to resolve AccountId on every Contact record during the People-to-Contact phase. Owner email matching resolves Nutshell Owner to Freshsales User. Lead split rules (Lead-to-Lead vs Lead-to-Contact) are applied as a transform during the Lead migration phase. All dependency resolution is validated before record import begins.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Nutshell Companies), Contacts (with AccountId resolved from the lookup table), Leads (with split rule applied), Deals (with Sales Process and Owner resolved), Activities (Tasks and Appointments via API with parent-contact resolution). Each phase emits a row-count reconciliation report. We apply tags in bulk after the primary record phases complete. We use Freshsales REST API batch endpoints where available and paginated writes for large datasets.
Cutover, validation, and automation rebuild handoff
We freeze writes on Nutshell during cutover, run a final delta migration of any records created during the migration window, then enable Freshsales as the system of record. We deliver the email sequence and automation inventory document to the customer's admin for Freshsales Workflow rebuild. We support a 72-hour post-migration validation window where we resolve reconciliation issues. We do not rebuild Nutshell sequences as Freshsales Workflows within the migration scope; that is a separate rebuild task for the customer's admin.
Platform deep dives
Nutshell
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 Nutshell 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
Nutshell: Not publicly documented in summary form..
Data volume sensitivity
Nutshell exposes a bulk API — large-volume migrations stream efficiently.
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 Nutshell to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Nutshell 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 Nutshell
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.