CRM migration
Field-level mapping, validation, and rollback between Curve Dental and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Curve Dental
Source
Freshsales
Destination
Compatibility
11 of 12
objects map 1:1 between Curve Dental and Freshsales.
Complexity
BStandard
Timeline
3–5 days
Overview
Curve Dental is a cloud-native dental practice management system that stores patient demographics, clinical tooth charting, periodontal measurements, treatment plans, insurance records, appointment schedules, and provider assignments. Freshsales CRM (Freshworks) models the world as Contacts, Accounts, Deals, Leads, Activities, and custom fields — with no native dental clinical objects. The two platforms share a REST API and both support bulk operations, which makes the migration technically feasible for patient records and company-level data, but dental-specific fields (tooth numbers, perio depth readings, procedure codes, treatment plan phases) have no Freshsales equivalent and must be captured as custom fields on the Contact or as structured Notes. We map Curve Dental patients to Freshsales Contacts, providers to Freshsales Users (or Contacts where role differs), appointments to Events, treatment plans to Deals with custom fields, and insurance or payment records to Contact-level custom fields. Clinical charting and periodontal data go into custom text or number fields or long-text notes. The migration uses Freshsales bulk API endpoints with scoped read access on Curve Dental — your team continues working in Curve during the cutover. FlitStack AI preserves original create and modify timestamps, owner assignments, and all attachments. Workflows, automations, and appointment reminder rules from Curve Dental do not migrate; we export their definitions for manual rebuild in Freshsales.
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 Curve Dental 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.
Curve Dental
Patient
Freshsales
Contact
1:1Curve Dental patient records migrate as Freshsales Contacts. First name, last name, email, phone, address, and date of birth map directly. All other clinical fields (to be identified in discovery) become Freshsales custom fields on the Contact. Source create and modify timestamps are preserved as custom datetime fields since Freshsales CreatedDate reflects migration time.
Curve Dental
Company / Practice
Freshsales
Account
1:1The dental practice or employer organization in Curve Dental maps to a Freshsales Account. Practice name, address, and contact details become Account-level fields. If the Curve Dental record links patients to employers, those links surface as Account Contact Relationships in Freshsales.
Curve Dental
Provider / Dentist / Hygienist
Freshsales
User or Contact
1:1Curve Dental provider records require admin decision before migration: if providers should have CRM login access, they become Freshsales Users (matched by email); if they are referral sources or referral dentists, they become Contacts with a Provider_Type__c custom field set to their clinical role. User roles in Freshsales (Admin, Salesperson, Leader) do not directly map to clinical roles — mapping is admin-defined.
Curve Dental
Appointment
Freshsales
Event
1:1Curve Dental appointments migrate as Freshsales Events linked to the Contact (patient). Appointment date/time maps to Event start_time and end_time, status maps to Freshsales Event status via a value-mapping table, and the provider maps to the Event owner (resolved by email to a Freshsales User). Operatory and chair-time fields have no Freshsales equivalent — they are stored as custom fields on the Event.
Curve Dental
Appointment Type / Procedure Code
Freshsales
Custom field on Event
1:1Curve Dental procedure codes (D#### CDT codes or internal codes) are mapped to Freshsales custom pick-list or text fields on the Event. Each procedure code value is mapped value-by-value so the Freshsales UI shows readable procedure names rather than raw codes.
Curve Dental
Treatment Plan
Freshsales
Deal or Custom field on Contact
many:1Treatment plans with a billing component migrate as Freshsales Deals with a linked Contact. Treatment phases, procedure codes, fee estimates, and clinical notes become custom fields on the Deal. Simple treatment plans with no open deal become Contact-level custom fields or structured Notes, avoiding the creation of empty Deals in Freshsales.
Curve Dental
Insurance Carrier / Policy
Freshsales
Custom fields on Contact
1:1Insurance carrier name, group number, subscriber ID, and relationship (self, spouse, dependent) have no Freshsales standard field. They become custom fields on the Contact: Insurance_Carrier__c, Insurance_Group_Number__c, Insurance_Subscriber_ID__c, and Insurance_Relationship__c. Multiple insurance plans per patient require a separate Insurance Plan custom field group.
Curve Dental
Payment / Ledger Entry
Freshsales
Custom fields on Contact
1:1Outstanding balance, total paid, and last payment date migrate as custom number and date fields on the Contact record (Last_Payment_Date__c, Total_Paid__c, Outstanding_Balance__c). Freshsales has no native accounts receivable object; detailed ledger history is stored as a structured Note or referenced in an attached PDF export.
Curve Dental
Clinical Note / Progress Note
Freshsales
Note
1:1Clinical progress notes from Curve Dental migrate as Freshsales Notes linked to the Contact. Notes are stored with the original note date preserved (as Note body text) and the provider as Note owner. Rich-text formatting from Curve notes is simplified to plain text since Freshsales Notes do not support full rich-text.
Curve Dental
Tooth Chart / Clinical Examination
Freshsales
Custom fields on Contact
1:1Tooth-number charting, existing restorations, missing teeth, and perio pocket depth readings are dental-specific with no Freshsales standard equivalent. We create custom fields (Tooth_Chart__c as long-text, Perio_Readings__c as long-text) and preserve the full charting data as a structured text block. Original exam dates are stored as custom date fields.
Curve Dental
X-ray / Image Attachment
Freshsales
File attachment on Contact
1:1X-ray files and intraoral images attached to Curve Dental patient records are downloaded and re-uploaded as Freshsales file attachments on the Contact. Freshsales file storage limits apply per plan (2GB per user on Growth; 5GB on Pro; 100GB on Enterprise). We flag any files exceeding the destination limit before migration.
Curve Dental
Recall / Patient Reminder
Freshsales
Custom fields on Contact
1:1Curve Dental recall dates (6-month hygiene, annual exam) have no Freshsales standard field. We migrate the recall date as Next_Recall_Date__c custom field on the Contact and the recall type as Recall_Type__c. Freshsales workflows can then trigger off Next_Recall_Date__c to create Tasks for follow-up, but the workflow itself must be rebuilt.
| Curve Dental | Freshsales | Compatibility | |
|---|---|---|---|
| Patient | Contact1:1 | Fully supported | |
| Company / Practice | Account1:1 | Fully supported | |
| Provider / Dentist / Hygienist | User or Contact1:1 | Fully supported | |
| Appointment | Event1:1 | Fully supported | |
| Appointment Type / Procedure Code | Custom field on Event1:1 | Fully supported | |
| Treatment Plan | Deal or Custom field on Contactmany:1 | Fully supported | |
| Insurance Carrier / Policy | Custom fields on Contact1:1 | Fully supported | |
| Payment / Ledger Entry | Custom fields on Contact1:1 | Fully supported | |
| Clinical Note / Progress Note | Note1:1 | Fully supported | |
| Tooth Chart / Clinical Examination | Custom fields on Contact1:1 | Fully supported | |
| X-ray / Image Attachment | File attachment on Contact1:1 | Fully supported | |
| Recall / Patient Reminder | Custom fields on Contact1: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.
Curve Dental gotchas
Reporting timeout on large databases
Image and x-ray migration requires chunked transfer and post-migration validation
Accounts receivable balances drift after payment ledger migration
Custom form structure and Smart Forms do not export
Curve Pay dispute fee of $25 per chargeback
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 source audit
We connect scoped read access to your Curve Dental instance (or receive a data export) and inventory every patient, provider, appointment, treatment plan, insurance record, and clinical note. We identify all custom fields, value pick-lists, and any N-to-N associations (patient to multiple providers or guardians). The discovery output is a data audit report listing every object and field that will map to Freshsales, including any Curve Dental fields that have no Freshsales equivalent and will require a custom field. You approve the field map before any migration code is written.
Set up Freshsales custom fields and target schema
Before data moves, we create all required custom fields in Freshsales on the Contact, Account, Event, and Deal objects (and custom objects if your Freshsales plan supports them). We also set up the Freshsales Users for each provider, matched by email to the Curve Dental provider record. Unmatched providers are flagged for your admin to resolve — either invite them to Freshsales or assign a fallback owner. The Freshsales admin creates the pipeline and stages for Deals that correspond to treatment plan stages. We deliver a schema setup checklist so your admin can pre-create fields in the Freshsales UI if preferred.
Run a sample migration with field-level diff
A representative slice of records — typically 100–500 patients, their appointments, and a sample of treatment plans — migrates first. We generate a field-level diff comparing the Curve Dental source values against the Freshsales destination values for every mapped field. You verify clinical data decomposition (treatment plan phases, perio readings), owner resolution, and value mapping for pick-list fields. You approve the sample before the full migration runs. Any incorrect mappings are corrected in the migration plan before the next step.
Full migration with delta pickup window
All remaining records migrate using Freshsales bulk API endpoints. A delta-pickup window (typically 24–48 hours) opens at the point of cutover — any patient or appointment records modified or created in Curve Dental during the migration run are captured and applied to Freshsales. We use patient email as the primary de-duplication key and source_patient_id__c for traceability. The audit log records every create and update operation. One-click rollback reverts Freshsales to the pre-migration state if reconciliation reveals data integrity issues.
Post-migration handoff and rebuild reference package
We deliver a migration completion report with record counts by object, any records that failed to migrate (with error reason), and the final field map with transformation notes. We also provide the exported Curve Dental workflow and automation definitions as a structured reference document so your Freshsales admin can rebuild appointment reminders, recall alerts, and treatment plan notifications in Freshsales Workflows. We schedule a 30-day post-migration check-in to verify data integrity in Freshsales reports and address any data discrepancies.
Platform deep dives
Curve Dental
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 Curve Dental 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
Curve Dental: Not publicly documented.
Data volume sensitivity
Curve Dental 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 Curve Dental to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Curve Dental 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 Curve Dental
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.