CRM migration
Field-level mapping, validation, and rollback between Concord CRM and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Concord CRM
Source
Freshsales
Destination
Compatibility
6 of 9
objects map 1:1 between Concord CRM and Freshsales.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Concord CRM to Freshsales is a shift from a self-hosted, one-time-license platform to a cloud-native, per-user SaaS CRM. Concord organizes data around Contacts linked to Companies by a company_id foreign key; Freshsales uses a separate Leads module for unqualified prospects plus Contacts attached to Accounts. We extract data via Concord's REST API and CSV export tools, sequence Companies before Contacts to satisfy Freshsales' AccountId requirement, map Concord deal stages to Freshsales pipeline stage names, and carry custom field values into Freshsales custom fields. Concord workflows (Create Activity, Send Email, Trigger Webhook) do not execute during data import and cannot migrate as code. We deliver a written inventory of every active Concord workflow with recommended Freshsales automation equivalents for the customer's admin to rebuild post-migration. Attachments stored in Concord's storage/app directory do not migrate through the standard export tool and require manual file transfer.
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 Concord CRM 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.
Concord CRM
Company
Freshsales
Account
1:1Concord CRM Companies map directly to Freshsales Accounts. Concord's company name, domain, address, phone, industry, and custom fields translate to Freshsales Account fields. This object must migrate first because Concord Contacts reference company_id as a foreign key, and Freshsales Contacts require AccountId on import. We extract Companies via Concord's API (GET /api/v1/companies) or CSV export and load them before any Contact records.
Concord CRM
Contact
Freshsales
Contact
1:1Concord CRM Contacts map to Freshsales Contacts with AccountId resolved from the Concord company_id to the Freshsales Account ID. Concord contact fields (first name, last name, email, phone, title, website) map to Freshsales standard fields; Concord custom fields map to Freshsales custom fields of matching type. Contacts without a valid Concord company_id are imported with AccountId set to null, which Freshsales allows, and the customer's admin resolves these manually after migration.
Concord CRM
Contact (unqualified prospect)
Freshsales
Lead
lossyConcord CRM does not have a separate Lead object; all prospects live as Contacts. During migration scoping, we determine which Concord Contacts should become Freshsales Leads versus Contacts based on the customer's qualification criteria (status field, has_deal flag, or custom field). We create a documented split rule during scoping so unqualified prospects enter Freshsales as Leads and can be converted to Contacts tied to Accounts at the appropriate pipeline stage.
Concord CRM
Deal
Freshsales
Deal
1:1Concord CRM Deals map to Freshsales Deals with deal name, value, expected close date, owner, and stage preserved. Concord deal stage names map to Freshsales pipeline stage names via a stage mapping table created during scoping. Concord custom fields on Deals map to Freshsales Deal custom fields. Deals without a Contact association in Concord are imported without a ContactId, which Freshsales permits, and the admin can link them post-migration.
Concord CRM
Pipeline Stage
Freshsales
Pipeline Stage
lossyConcord CRM pipeline stages (stage name, probability percentage, display order) map to Freshsales pipeline stage values. If the customer uses multiple Concord pipelines, we map each to a separate Freshsales pipeline. Stage probabilities in Concord are stored as decimal values (0.00 to 1.00) and convert to Freshsales percentages (0 to 100). We configure Freshsales pipeline stages before Deal migration begins.
Concord CRM
Product
Freshsales
Product
1:1Concord CRM Products (name, price, SKU, description) map directly to Freshsales Products. Product migration has no foreign-key dependencies on other objects, so it can run in parallel with Companies. Concord product pricing (regular price, sale price) maps to Freshsales standard cost and selling_price fields.
Concord CRM
Activity
Freshsales
Task and Appointment
1:manyConcord CRM Activities (calls, meetings, tasks) split into Freshsales Tasks (calls and tasks) and Appointments (meetings). Concord activity type (call, meeting, task) determines the destination object. Concord activity notes migrate as the task or appointment description. Concord linked_resource_type and linked_resource_id allow us to reconstruct the association back to the parent Contact or Deal in Freshsales via ContactId or DealId.
Concord CRM
Custom Fields
Freshsales
Custom Fields
1:1Concord CRM custom fields (boolean, date, select, text, number) map to Freshsales custom fields of equivalent type. Boolean custom fields in Concord (stored as 0/1) map to Freshsales checkbox fields. Select (dropdown) fields map to Freshsales dropdown fields with values preserved. We pre-create Freshsales custom fields before migration begins using the Freshsales API. Concord custom field UUIDs are used only on the source side; Freshsales custom fields are created with display names matching the Concord field label.
Concord CRM
User
Freshsales
User
1:1Concord CRM Users (email, name, role) map to Freshsales Users. Concord owner_id on Contact, Company, Deal, and Activity records resolves to Freshsales User by email match. Any Concord User without a matching Freshsales User is held in a reconciliation queue; the customer's Freshsales admin provisions missing Users before record import resumes. Role assignments in Concord are documented for manual reconstruction in Freshsales permissions settings.
| Concord CRM | Freshsales | Compatibility | |
|---|---|---|---|
| Company | Account1:1 | Fully supported | |
| Contact | Contact1:1 | Fully supported | |
| Contact (unqualified prospect) | Leadlossy | Fully supported | |
| Deal | Deal1:1 | Fully supported | |
| Pipeline Stage | Pipeline Stagelossy | Fully supported | |
| Product | Product1:1 | Fully supported | |
| Activity | Task and Appointment1:many | Fully supported | |
| Custom Fields | Custom Fields1:1 | Mapping required | |
| User | User1: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.
Concord CRM gotchas
Workflows do not fire during data import
Self-hosted data export requires role permission
API pagination cap at 100 records per page
Domain transfer requires full server migration
CSRF headers cause API auth failures
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 Concord CRM installation to inventory all objects, custom fields, pipeline stages, user counts, activity volumes, and active workflows. We confirm the API token user's export permissions (Concord enforces role-based access for export) and request that the customer assign export permission to the API user before extraction begins. We identify all Concord custom fields by type and map them to Freshsales field types (text, number, date, dropdown, checkbox) during scoping. We document every active Concord workflow with its trigger, conditions, and actions for the rebuild inventory.
Destination schema setup in Freshsales
We configure Freshsales before any data loads: we create custom fields matching the Concord custom field set, configure pipeline stages mapped to Concord deal stages, set up Users matching Concord Users by email, and configure the Lead-Contact split rule based on the scoping decision. If any Concord Contacts are designated to enter Freshsales as Leads, we pre-create those Lead fields and the conversion mapping so that data lands in the correct object on first import. This step runs in parallel with Concord data extraction.
Data extraction from Concord CRM
We extract data from Concord CRM using the REST API for field-level fidelity (especially custom field UUIDs) and the CSV export tool as a fallback or validation cross-check. We extract in dependency order: Companies first (no foreign-key dependencies), then Contacts (with company_id resolved to Freshsales AccountId), then Deals (with owner and stage resolved), then Products (no dependencies), then Activities (with linked resource type and ID preserved for parent resolution). All CSV exports are converted to UTF-8 and reformatted to Freshsales template column headers before loading.
Test migration and reconciliation
We run a test migration into a Freshsales trial or sandbox environment using production-like data volume. The customer reconciles record counts (Accounts in, Contacts in, Deals in, Tasks in), spot-checks 25-50 random records against Concord source data, and reviews custom field values to confirm mapping accuracy. Any field mapping corrections, stage name adjustments, or split rule refinements are applied before production migration begins. We do not proceed to production until the customer signs off on the test migration output.
Production migration in dependency order
We run production migration in record-dependency order: Accounts (from Concord Companies), Contacts (with AccountId resolved), Leads (if the split rule designates unqualified Contacts as Leads), Deals (with OwnerId and stage resolved), Products, Activities (Tasks and Appointments with parent record IDs resolved), and custom field values. Each phase emits a row-count reconciliation report before the next phase begins. Any Concord Contacts that could not be linked to a Concord Company are flagged for manual resolution in Freshsales after migration.
Cutover, validation, and workflow rebuild handoff
We freeze Concord CRM writes during cutover, run a final delta migration of any records modified during the migration window, then mark Freshsales as the system of record. We deliver the Concord workflow inventory document to the customer's admin team with recommended Freshsales automation equivalents. We support a one-week hypercare window where we resolve any data quality issues raised by the customer's team. We do not rebuild Concord workflows as Freshsales automations inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Concord CRM
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 Concord CRM 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
Concord CRM: Per-minute limits documented in X-RateLimit-Limit and X-RateLimit-Remaining response headers; exact values vary and are not publicly specified.
Data volume sensitivity
Concord CRM 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 Concord CRM to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Concord CRM 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 Concord CRM
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.