CRM migration
Field-level mapping, validation, and rollback between CentralStationCRM and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
CentralStationCRM
Source
Freshsales
Destination
Compatibility
7 of 10
objects map 1:1 between CentralStationCRM and Freshsales.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from CentralStationCRM to Freshsales is a structural migration that resolves several schema differences at the outset. CentralStationCRM does not have a separate Lead object; unqualified prospects and qualified contacts share a single People record type. Freshsales maintains a distinct Lead object that converts to a Contact and Account. We resolve this by splitting People into Leads (unqualified) and Contacts (qualified) using a rule agreed upon during scoping, then configure the Freshsales lead-conversion mapping so that the original CentralStationCRM lifecycle data is preserved as a custom field. Deals and Offers map to Freshsales Deals and Quotes respectively, with the Freshsales pipeline and stage structure pre-created before migration to avoid import failures. CentralStationCRM's nested 1-n routes for addresses, activities, and offers require a traversal step per parent record that we implement with rate-limit-aware pagination at the 50 req/10s ceiling. Automations, workflows, and sequences do not migrate; we deliver a written inventory of these for the customer's admin to rebuild in Freshsales Flow.
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 CentralStationCRM 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.
CentralStationCRM
People
Freshsales
Contact or Lead (split required)
1:manyCentralStationCRM stores all contacts as People regardless of qualification level. Freshsales maintains a separate Lead object for unqualified prospects and Contact for qualified records. We define a split rule during scoping (typically using any CentralStationCRM lifecycle or status property as the qualifier) and migrate qualified People to Freshsales Contact with an AccountId reference, and unqualified People to Freshsales Lead with a custom field preserving the original CentralStationCRM record ID. The customer's admin confirms the split logic before migration runs.
CentralStationCRM
Company
Freshsales
Account
1:1CentralStationCRM Company records map directly to Freshsales Account. The company name becomes the Account Name field. We create Account records first, then resolve the AccountId on each Contact record during import so that the Lookup relationship is satisfied at the moment of Contact insert. Company addresses (fetched via nested routes) map to Account address fields in Freshsales.
CentralStationCRM
Deal
Freshsales
Deal
1:1CentralStationCRM Deals map to Freshsales Deals 1:1 with stage, value, assignee, and associated Person or Company preserved. We pre-create the Freshsales pipeline and stage names to match CentralStationCRM's deal pipeline structure before migration, because Freshsales requires the pipeline to exist before Deal records can be imported. Closed-won and closed-lost status from CentralStationCRM map to Freshsales Deal status values.
CentralStationCRM
Lead
Freshsales
Lead
1:1CentralStationCRM Lead records (pre-contact prospects stored separately from Deals) map to Freshsales Lead. If the customer has Lead records in CentralStationCRM, we migrate them as Freshsales Lead records and configure the lead-conversion mapping (Admin Settings > Leads module) so that the conversion action creates a matching Contact and Account. The lead_conversion mapping must be pre-configured in Freshsales before migration begins.
CentralStationCRM
Activity
Freshsales
Task and Appointment
1:manyCentralStationCRM Activities (calls, meetings, notes) attached to People or Companies are exported via nested routes (GET /api/people/{id}/activities.json). We split the activity type at migration time: call activities map to Freshsales Task with TaskSubtype set to Call; meeting activities map to Freshsales Appointment (Event) with StartTime, EndTime, and Location preserved. Each activity links to the parent Contact or Account via the WhatId field. Activity timestamps are preserved to maintain the chronological timeline in Freshsales.
CentralStationCRM
Task
Freshsales
Task
1:1CentralStationCRM Tasks attached to People or Deals map to Freshsales Task with title, due date, and completion status preserved. Completed status maps to Freshsales status values. Task assignment uses the owner email to resolve against Freshsales User records. We export task titles and due dates; completion state migrates as a status field rather than a hard delete to preserve the history of completed tasks.
CentralStationCRM
Offer
Freshsales
Quote
1:1CentralStationCRM Offers (standalone quote-like objects with line items and totals linked to People or Companies) map to Freshsales Quote. We pre-create the Freshsales product catalog entries to match the CentralStationCRM offer line items, then map offer headers and line item totals to the Freshsales Quote object. The Quote is linked to the corresponding Freshsales Deal and Contact or Account.
CentralStationCRM
Address
Freshsales
Contact address fields or Account address fields
1:1CentralStationCRM Address records exist as 1-n children of People and Companies, fetched via GET /api/people/{id}/addrs.json and GET /api/companies/{id}/addrs.json. We traverse each nested address route during export and write the data to the appropriate address fields on the Freshsales Contact (for People addresses) or Account (for Company addresses). Multiple addresses per record are handled by populating the primary address fields and storing additional addresses in a custom text field formatted as a multi-line string.
CentralStationCRM
Tag
Freshsales
Label
lossyCentralStationCRM flat tag labels applied to People, Companies, Deals, and Offers map to Freshsales Labels where supported (Contacts, Accounts, Deals). Tags applied to Leads do not have a native Freshsales equivalent; we store them in a custom multi-select text field on the Lead record. We preserve the full tag vocabulary as-is, without transformation, and apply Labels at the destination after the parent record is created.
CentralStationCRM
Custom Field
Freshsales
Custom Field
1:1CentralStationCRM tenants define their own custom fields with no fixed schema across accounts. We discover all custom fields at the source during scoping, map each to a Freshsales custom field of the appropriate type (text, number, date, dropdown, multi-select) pre-created in the destination Admin Settings, and apply the mapping in the migration transform. Freshsales requires custom fields to exist in the destination before records containing those field values are imported; we coordinate this order explicitly.
| CentralStationCRM | Freshsales | Compatibility | |
|---|---|---|---|
| People | Contact or Lead (split required)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Lead | Lead1:1 | Fully supported | |
| Activity | Task and Appointment1:many | Fully supported | |
| Task | Task1:1 | Fully supported | |
| Offer | Quote1:1 | Fully supported | |
| Address | Contact address fields or Account address fields1:1 | Fully supported | |
| Tag | Labellossy | Fully supported | |
| Custom Field | Custom Field1: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.
CentralStationCRM gotchas
50 req/10s rate limit causes 429 errors on fast exports
Nested routes required for child object exports
No OAuth — API key only with header authentication
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 API scoping
We audit the CentralStationCRM account across plan tier, object counts (People, Companies, Deals, Leads, Activities, Offers), tag vocabulary, and custom field definitions. We verify the account is on a paid plan (Small Office or above) with API access enabled, generate a fresh API key scoped to an admin-level user, and confirm the 50 req/10s rate limit is documented in the scoping report. We simultaneously review the target Freshsales account plan (Sprout through Forest) to confirm which features are available at the destination tier.
Freshsales schema pre-configuration
We pre-create the Freshsales pipeline and deal stages to match CentralStationCRM's deal structure, create all custom fields in Freshsales Admin Settings before any record import, configure the lead-conversion mapping if Lead records exist in the source, and set up the date format in CRM Settings to match the ISO 8601 standard used in our export transform. This order is critical: Freshsales rejects imports of records containing custom field values if the custom fields do not yet exist in the destination.
People split and parent record export
We export all Company records first, then People records with the split rule applied (Lead vs Contact). We traverse nested address routes per Person record (GET /api/people/{id}/addrs.json) and capture all associated Activities, Tasks, and Offers. Each export request is tracked against the 50 req/10s rate limit with a cooldown delay introduced before the limit is hit. Companies and Deals are exported in parallel with People to maximise throughput within the rate ceiling.
Delta migration into Freshsales Sandbox
We run a full migration into a Freshsales Sandbox using production-like data volumes to validate the field mapping, confirm record counts match source totals, and check that the People-to-Lead/Contact split produces the expected distribution. The customer's admin spot-checks 20-30 records field-by-field against the source and confirms the pipeline, stages, and custom field values are correct before we proceed to production.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Companies) first, then Leads and Contacts with AccountId resolved, Deals with pipeline and stage resolved, Tasks and Appointments with WhatId linking to the parent Contact or Account, and Quotes from Offers last. Each phase emits a row-count reconciliation report. The CentralStationCRM account is placed in read-only mode during the production cutover window to prevent new records from being created mid-migration.
Cutover, validation, and automation handoff
We run a final delta pass to capture any records modified during the cutover window, then enable Freshsales as the system of record. We deliver a written automation handoff document noting that no CentralStationCRM workflows or automations exist to migrate, and recommending that the customer's Freshsales admin begin building Workflows using the Freshsales Workflow builder (Blossom tier or above) to replicate any manual sales processes previously managed outside the CRM. We provide a one-week hypercare window for reconciliation issues raised by the sales team.
Platform deep dives
CentralStationCRM
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 CentralStationCRM 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
CentralStationCRM: 50 requests within 10 seconds; returns HTTP 429 with Retry-After header when exceeded.
Data volume sensitivity
CentralStationCRM 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 CentralStationCRM to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your CentralStationCRM 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 CentralStationCRM
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.