CRM migration

Migrate from Cordial to Freshsales

Field-level mapping, validation, and rollback between Cordial and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.

Cordial logo

Cordial

Source

Freshsales

Destination

Freshsales logo

Compatibility

70%

7 of 10

objects map 1:1 between Cordial and Freshsales.

Complexity

BStandard

Timeline

2-4 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Cordial to Freshsales is a platform-type migration: Cordial is an enterprise messaging and marketing CRM built around a flexible JSON contact model and product-centric architecture, while Freshsales is a sales-focused CRM built on the standard Contacts-Accounts-Deals-Activities object model. The primary migration challenge is schema bridging. Cordial stores contacts with unlimited custom attributes and behavioral events; Freshsales stores contacts with a defined field set and custom fields on standard objects. We map Cordial's contact attributes to Freshsales custom fields, resolve Cordial's behavioral event arrays into Freshsales Tasks and custom object records, and unpack nested product variants into individual Freshsales Product2 entries. Cordial's automation programs, segment rules, and message experiment results cannot be exported via API, so these require manual rebuild documentation and UI-based export respectively. We do not migrate Workflows, Sequences, or Forms as code; we deliver written inventories for the customer's admin to rebuild.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Cordial logo

Cordial

What's pushing teams away

  • Some users report that complex reporting and advanced analytics require workarounds, with out-of-the-box dashboards feeling insufficient for deep performance analysis.
  • Scaling large contact databases can introduce latency in segment queries and campaign execution, particularly when audiences exceed several million records.
  • The drag-and-drop interface, while easy to use for basic campaigns, can become limiting when building sophisticated multi-step automation logic that requires more programmatic control.

Choosing

Freshsales logo

Freshsales

What's pulling them in

  • Lowest barrier to entry among major CRMs — the free tier supports up to 3 users and includes core CRM functionality before committing to per-seat pricing.
  • Built-in chat, email, and phone reduce reliance on third-party integrations for basic sales communication and contact management.
  • Freddy AI contact scoring and deal insights are included on Pro plans at a lower price than comparable HubSpot tiers.
  • Kanban pipeline views across Contacts, Accounts, and Deals provide visual deal management without requiring custom configuration.
  • Integration with the broader Freshworks ecosystem (Freshdesk, Freshchat, Freshservice) reduces tool sprawl for teams already using Freshworks.

Object mapping

How Cordial objects map to Freshsales

Each row shows how a Cordial 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.

Cordial

Contact

maps to

Freshsales

Contact (or Lead)

1:1
Fully supported

Cordial Contacts map to Freshsales Contact records. The Cordial email address becomes the Freshsales email field and serves as the dedupe key. All standard Cordial fields (first name, last name, phone) map to Freshsales equivalents. Custom contact attributes from Cordial's flexible JSON schema are created as Freshsales custom fields during migration, with type mapping from Cordial string/number/geo types to Freshsales Text/Number/Picklist fields. Array-type attributes (tags, behavioral lists) are normalized to delimited strings or multi-select picklists per the normalization strategy agreed during discovery.

Cordial

Lists

maps to

Freshsales

Contact Group

1:1
Fully supported

Cordial Lists (static sub-collections within Contacts) map to Freshsales Contact Groups. List membership is preserved as a Contact Group membership record linked to each Contact. We flag any contact belonging to multiple Lists and create corresponding multiple Contact Group memberships in Freshsales.

Cordial

Channels

maps to

Freshsales

Contact Communication Preferences

1:1
Mapping required

Cordial channel preferences (email opt-in, SMS opt-in) stored as sub-attributes on contacts map to Freshsales contact-level communication preference fields. We map email subscription status to Freshsales Email Status and SMS opt-in to a custom field sms_consent__c. Any non-standard channel preferences are preserved as custom fields.

Cordial

Products

maps to

Freshsales

Product2

1:many
Fully supported

Cordial products with nested variant arrays (each containing color, size, SKU, and price attributes) are unpacked into separate Freshsales Product2 records, one per variant SKU. The parent product name is preserved in a custom field parent_product_name__c to maintain the relationship. If Freshsales Product Catalog is not enabled on the destination plan (Growth tier includes it), we flag this for customer activation before migration.

Cordial

Products (parent record)

maps to

Freshsales

Product2 (parent reference)

lossy
Fully supported

Cordial parent product records that contain variant arrays but no standalone SKU are preserved as a Freshsales Product2 entry with a custom field is_variant_parent__c set to true, serving as a grouping reference even though the primary SKU data lives in child variant records.

Cordial

Events / Contact Activities

maps to

Freshsales

Task

1:1
Mapping required

Cordial behavioral events (opens, clicks, purchases, custom event types) with timestamps map to Freshsales Task records linked to the Contact. Event type becomes the Task subject; event metadata (properties, values) is stored in Task description or custom fields. We preserve the original event timestamp in Task due_date and flag high-volume event migrations for batch processing to avoid Freshsales API rate limits.

Cordial

Orders (custom attributes)

maps to

Freshsales

Deal + custom fields

1:1
Fully supported

Cordial does not have a native Order object; order data is typically stored as custom attributes on contacts or linked via behavioral events. We identify order-related attributes during discovery and map them to Freshsales Deal records (for sales-attributed orders) or to custom fields on the Contact (for historical purchase records). Order total, order date, and order status are preserved as Deal fields or Contact custom fields depending on the customer's data model.

Cordial

Custom Contact Attributes

maps to

Freshsales

Custom Fields on Contact

lossy
Fully supported

All Cordial custom contact attributes are enumerated during discovery, typed (string, number, geo, array), and created as Freshsales custom fields before migration. Array-type attributes require normalization: tag lists become multi-select picklists, behavioral history arrays become delimited strings in a text field or a JSON blob in a long-text field. The customer chooses the normalization strategy during scoping. We flag any attribute exceeding Freshsales field type limits for manual review.

Cordial

Segments / Audiences

maps to

Freshsales

Contact Group + Saved Filter

1:1
Mapping required

Cordial dynamic segments (rules-based audiences built from contact attributes and event conditions) cannot be migrated as executable logic because segment rules have no public export API. We export the segment definition as a written rule summary and identify which contacts currently match each segment. In Freshsales, we create static Contact Groups reflecting the segment membership snapshot at migration time and document the segment rules for manual rebuild as Freshsales Saved Filters or Workflow conditions.

Cordial

Message Analytics

maps to

Freshsales

Custom Reports

1:1
Mapping required

Cordial message analytics (opens, clicks, bounces, unsubscribes) are available via the Message Analytics Export API but experiment results are explicitly excluded. We export standard message analytics to CSV and import them as Freshsales custom records or as a custom report data set. For A/B and multivariate test results, we recommend manual UI export from Cordial before cutover. Campaign attribution data is preserved in a custom report template for the customer's admin to configure in Freshsales.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Cordial logo

Cordial gotchas

Medium

Message experiment results are not API-exportable

Medium

Rate limits are method- and endpoint-specific

Low

Custom contact attribute arrays require schema normalization

Low

Products collection uses nested JSON with variants

Freshsales logo

Freshsales gotchas

Medium

Freddy AI is Pro-tier only despite heavy marketing

High

Post-migration emails and sequences are disabled

Medium

Bot session credits are a one-time 500-session allocation

Medium

Phone credits charged per minute with no cap

Low

File storage limits scale with plan tier

Pair-specific challenges

  • Cordial behavioral event arrays require normalization before import

    Cordial stores behavioral events (purchase history, content interactions, custom event properties) as arrays on contact records. Freshsales has no native event type system; behavioral data must be stored as Task records with event metadata in description fields or custom fields. High-volume event arrays (thousands of events per contact) require chunked import to avoid Freshsales API timeouts. We flag the event schema during discovery, agree on a normalization strategy (one Task per event vs. aggregated summary per event type), and batch-process the import with rate-limit handling. Skipping this step results in truncated behavioral history or API errors during import.

  • Cordial automation programs and workflows have no export API

    Cordial's Programs organize campaigns and automation sequences, but workflow logic, triggers, and delay rules are not accessible via API. We document the program structure, trigger points, and step sequence from the UI during discovery and deliver a written inventory with recommended Freshsales Workflow equivalents. The customer's admin rebuilds automation logic in Freshsales Workflows post-migration. This is a manual process that typically requires 1-2 weeks of admin effort depending on automation complexity. We do not migrate automation as code because it is not technically exportable.

  • Product variant nesting does not map directly to Freshsales

    Cordial products store variants as nested JSON arrays (color, size, SKU, price) under a single product record. Freshsales Product2 has no native variant concept; each variant SKU must be a separate Product2 record. We unpack variant arrays into individual product rows, preserving the parent product ID as a custom field for relationship mapping. If the customer uses variant-level pricing in Cordial personalization, those values must be stored as separate price book entries in Freshsales, which requires the Product Catalog feature to be active on the destination plan.

  • Message experiment results are not API-exportable from Cordial

    Cordial's Message Analytics Export API explicitly excludes experiment results for batch and automated messages. If the customer has live A/B or multivariate tests, we cannot pull those results programmatically. We flag this gap during scoping and recommend exporting experiment data from the Cordial UI before migration cutover. In Freshsales, experiment results would need to be rebuilt using Freshsales A/B testing features (available on Pro plan and above) or documented as a reporting gap to address with custom reports.

  • Freshsales custom modules require Enterprise tier

    If the Cordial migration includes custom objects beyond the standard Contact-Account-Deal model (such as subscription records, policy objects, or property records), those require Freshsales Custom Modules which are only available on the Enterprise plan at $59 per user per month. Migrations scoped for Growth or Pro tier must normalize custom Cordial objects into existing Freshsales object types (Contact custom fields, Deal custom fields, or related custom objects) or accept that those objects will require Enterprise tier activation before import.

Migration approach

Six steps for a successful Cordial to Freshsales data migration

  1. Discovery and schema audit

    We audit the source Cordial instance across contact volume, custom attribute count and types, product catalog size and variant structure, list definitions, behavioral event types, order data storage patterns, and active automation programs. We pair this with a Freshsales plan assessment: Growth ($9/user) covers Contacts, Accounts, Deals, Tasks, and basic custom fields; Pro ($39/user) adds contact scoring, sales sequences, and advanced custom fields; Enterprise ($59/user) adds custom modules if the customer has custom objects beyond standard types. The discovery output is a written migration scope and Freshsales plan recommendation.

  2. Attribute schema design and normalization strategy

    We enumerate every Cordial custom contact attribute, classify its type (string, number, geo, array), and map each to a Freshsales field type. For array-type attributes, we agree on a normalization strategy with the customer: tag lists become multi-select picklists, behavioral arrays become delimited strings in a text field, and complex nested arrays become long-text JSON blobs. We create all custom fields in Freshsales via the admin UI before any data import and validate that field limits (text length, picklist value count) accommodate the source data.

  3. Product variant unpacking design

    We analyze the Cordial product catalog for variant nesting depth and variant attribute types. Each variant SKU becomes a separate Freshsales Product2 record with the parent product ID stored in a custom field. If the customer uses variant-level pricing, we design the Freshsales price book entries to match. We validate the Product Catalog feature is active on the destination Freshsales plan before product migration begins.

  4. Sandbox migration and reconciliation

    We run a full migration into a Freshsales sandbox environment using production-like data volume. The customer's team reconciles record counts (Contacts in, Products in, Activities in), spot-checks 20-30 random records against the Cordial source, and validates that array normalization preserved the intended data. Any field mapping corrections, normalization adjustments, or schema additions happen in sandbox before production migration begins.

  5. Production migration in dependency order

    We run production migration in record-dependency order: custom fields and Contact Groups (created first), Products (unpacked variants), Contacts (with custom attributes resolved), Accounts (extracted from contact company data), Deals (for order data mapped from Cordial), and Activity history (behavioral events as Tasks via batched API calls with rate-limit handling). Each phase emits a row-count reconciliation report before the next phase begins. We flag any contacts with missing required fields and hold them in a remediation queue.

  6. Cutover, validation, and automation rebuild handoff

    We freeze Cordial 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 automation program inventory document listing each Cordial program with its trigger, conditions, and recommended Freshsales Workflow equivalent. We support a three-day hypercare window where we resolve reconciliation issues. We do not rebuild Cordial Programs as Freshsales Workflows inside the migration scope; that is a separate engagement or internal admin task.

Platform deep dives

Context on both ends of the pair

Cordial logo

Cordial

Source

Strengths

  • Flexible JSON-based data model accommodating unlimited custom contact attributes without schema migration overhead.
  • Drag-and-drop Sculpt block editor for rapid email production without requiring developer resources.
  • Product-centric architecture treating SKUs, variants, and catalog data as native objects for personalization.
  • AI agents introduced in 2026 for automated email production and data intelligence workflows.
  • SFTP, AWS S3, and Google Cloud Storage integration for automated data export workflows.

Weaknesses

  • Message experiment results are explicitly not available via the export API, requiring manual UI-based export for A/B test data.
  • Reporting and analytics dashboards are described as insufficient by some users for deep performance analysis, often requiring supplemental BI tooling.
  • Segment logic and automation workflows lack a public export API, making migration of campaign automation a manual rebuild exercise.
  • Order data is not a native first-class object, often stored as custom attributes or behavioral events, requiring careful schema discovery before migration.
Freshsales logo

Freshsales

Destination

Strengths

  • Generous free tier for small teams with core CRM functionality without per-seat costs.
  • All-in-one sales CRM with built-in telephony, chat, and email reducing third-party tool dependency.
  • Freddy AI contact scoring and deal predictions available on Pro tier.
  • Multiple pipeline views with Kanban and list options across all plans.

Weaknesses

  • Reports lack depth compared to competitors like HubSpot, with limited customization options.
  • Integration setup is poorly documented with no clear guides for connecting third-party tools.
  • AI features gated behind $39/user/month Pro tier despite marketing emphasis on Freddy AI.
  • Bot sessions limited to 500 one-time allocation with no monthly refresh.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Cordial and Freshsales.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Cordial: Method- and endpoint-specific limits; default limits vary per tier; X-Rate-Limit-* response headers exposed; Retry-After header for backoff; limits are customizable per customer contract.

  • Data volume sensitivity

    A

    Cordial exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your Cordial to Freshsales migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Cordial to Freshsales data migrations

Answers to the questions buyers ask most during Cordial to Freshsales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Cordial to Freshsales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between two and four weeks for accounts under 10,000 contacts and 2,000 products with straightforward field mapping. Migrations with high-volume behavioral event histories (over 200,000 event records), complex array normalization for custom attributes, or large product catalogs with deep variant nesting move to four to eight weeks because of batch API processing, schema reconciliation, and variant unpacking validation.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Cordial.
Land in Freshsales, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day