CRM migration
Field-level mapping, validation, and rollback between Practice by Numbers and Freshsales. We move data and schema; workflows are rebuilt natively in Freshsales.
Practice by Numbers
Source
Freshsales
Destination
Compatibility
11 of 13
objects map 1:1 between Practice by Numbers and Freshsales.
Complexity
BStandard
Timeline
48–72 hours
Overview
Practice by Numbers is a dental-practice management platform centered on patient records, appointment scheduling, treatment plans, and practice analytics. Freshsales CRM uses a standard B2B sales model with Leads, Contacts, Accounts, Deals (Opportunities), and Activities. These models diverge significantly — Practice by Numbers tracks clinical and operational data that has no direct equivalent in a sales CRM. We map patient records to Contacts with address and contact details preserved, appointments to Events with original start/end times and assigned providers, treatment histories to custom objects or linked Notes, and payment records to custom objects. The dental-practice data domain requires custom object creation in Freshsales for treatment plans and payment records. Automations, workflows, and reporting dashboards in Practice by Numbers do not migrate — those must be rebuilt using Freshsales Workflows and Reports after migration. We use Freshsales REST API endpoints with batch operations to move data, with scoped read access during cutover and a 24–48 hour delta-pickup window for in-flight records.
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 Practice by Numbers 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.
Practice by Numbers
Patient
Freshsales
Contact
1:1Patient records map directly to Freshsales Contacts. Name, email, phone, address, date of birth, and contact preferences migrate as standard Contact fields. Patient status (active/inactive) migrates as a custom pick-list field if Freshsales lifecycle stages do not cover the distinction.
Practice by Numbers
Patient
Freshsales
Lead
1:manyPatients who have not yet had an appointment and are in early inquiry or referral status route to Freshsales Leads. Active patients who have completed treatment map to Contacts. Split is based on appointment history count — zero completed appointments routes to Lead.
Practice by Numbers
Practice Location
Freshsales
Account
1:1Each Practice by Numbers location becomes a Freshsales Account. Account Name, address, and phone map directly. Account type is set to 'Dental Practice' as a custom pick-list value. Multi-location practices generate multiple Account records linked by a Parent Account relationship.
Practice by Numbers
Provider / Staff
Freshsales
User
1:1Providers and staff members in Practice by Numbers map to Freshsales Users. Resolution is by email address — each provider must have an active Freshsales user account for OwnerId to resolve correctly. Unmatched providers are flagged before migration for team invitation or fallback assignment.
Practice by Numbers
Appointment
Freshsales
Event
1:1Scheduled appointments map to Freshsales Events. Start time, end time, provider (OwnerId), appointment type, and status migrate. Procedure codes and treatment notes attach as custom fields on the Event record. Cancelled appointments migrate as completed Events with status 'Cancelled' for historical completeness.
Practice by Numbers
Treatment Record
Freshsales
Custom Object (Treatment)
1:1Treatment history has no direct Freshsales standard object. We create a 'Treatment' custom object in Freshsales with fields for procedure code, tooth number or quadrant, materials used, provider, and date. Each Treatment record links to the patient Contact via a lookup relationship.
Practice by Numbers
Payment Record
Freshsales
Custom Object (Payment)
1:1Payment transactions (amount, date, payment method, associated treatment) map to a 'Payment' custom object. Amount and date migrate as standard fields; payment method becomes a custom pick-list. For practices using Freshsales Deals to track treatment plan proposals, payments link to the corresponding deal record.
Practice by Numbers
Recall / Reactivation
Freshsales
Task
1:1Recall intervals and reactivation reminders in Practice by Numbers become Freshsales Tasks assigned to the patient Contact. Task subject carries the recall type (e.g., '6-month hygiene recall due') and due date. Completed recalls become closed Tasks; missed recalls remain open for follow-up.
Practice by Numbers
Insurance Record
Freshsales
Custom Fields on Contact + Custom Object
many:1Insurance carrier name, policy number, group number, and coverage percentages migrate to custom fields on the Contact record. If multiple insurance plans are tracked, a separate 'Insurance Plan' custom object with a lookup to Contact handles the many-to-one relationship.
Practice by Numbers
Review / Survey Response
Freshsales
Note
1:1Patient review ratings and survey responses from Practice by Numbers migrate as Freshsales Notes attached to the patient Contact record. Rating score, platform source (Google, Facebook, internal survey), and response date store as custom fields on the Note. All reviews and survey data are preserved for future reference but do not generate new Contact or Lead records.
Practice by Numbers
Treatment Plan Proposal
Freshsales
Deal (Opportunity)
1:1Treatment plan proposals with estimated amounts become Freshsales Deals. Deal Name carries the patient name and plan type (e.g., 'Smith — Full Reconstruction'). Estimated treatment amount maps to Deal Amount. A custom 'Treatment Plan' pick-list distinguishes proposed vs. accepted plans. Stage tracks acceptance progress.
Practice by Numbers
Campaign / Marketing Source
Freshsales
Campaign
1:1Marketing campaign sources in Practice by Numbers — including referral programs, Google Ads campaigns, direct mail initiatives, and other acquisition channels — map to Freshsales Campaigns. Campaign Members link to patient Contacts to show which specific marketing source generated each patient relationship, enabling ROI tracking by acquisition channel.
Practice by Numbers
Custom Patient Property
Freshsales
Custom Field on Contact
1:1Any custom patient properties configured in Practice by Numbers, such as preferred appointment times, special needs flags, family member links, and recall preferences, migrate as Freshsales custom fields on the Contact object. Field types are preserved during migration — pick-lists remain pick-lists, text fields remain text, and date fields remain date fields.
| Practice by Numbers | Freshsales | Compatibility | |
|---|---|---|---|
| Patient | Contact1:1 | Fully supported | |
| Patient | Lead1:many | Fully supported | |
| Practice Location | Account1:1 | Fully supported | |
| Provider / Staff | User1:1 | Fully supported | |
| Appointment | Event1:1 | Fully supported | |
| Treatment Record | Custom Object (Treatment)1:1 | Fully supported | |
| Payment Record | Custom Object (Payment)1:1 | Fully supported | |
| Recall / Reactivation | Task1:1 | Fully supported | |
| Insurance Record | Custom Fields on Contact + Custom Objectmany:1 | Fully supported | |
| Review / Survey Response | Note1:1 | Fully supported | |
| Treatment Plan Proposal | Deal (Opportunity)1:1 | Fully supported | |
| Campaign / Marketing Source | Campaign1:1 | Fully supported | |
| Custom Patient Property | Custom Field 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.
Practice by Numbers gotchas
No publicly documented API for automated migration
Dental EHR data is inherently messy during extraction
Goal management metrics require explicit field mapping
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: audit Practice by Numbers data export and Freshsales plan tier
We extract a full data export from Practice by Numbers covering patients, appointments, treatments, payments, insurance records, providers, and locations. We simultaneously review your Freshsales plan tier to confirm custom object limits (Growth allows basic custom fields; Pro and Enterprise support custom modules) and API rate limits. The discovery output is a data inventory and a Freshsales readiness assessment — if custom objects are required and your plan does not support them, we flag that before any migration work begins.
Schema preparation: create Freshsales custom objects and fields
Before data moves, we create the required Freshsales custom objects (Treatment__c, Payment__c, Insurance_Plan__c) with the field definitions identified during discovery. Custom fields on Contact and Account are also created at this stage. We deliver a schema setup checklist referencing the exact Freshsales Admin UI paths so your team can configure the objects or have us do it via the Freshsales API. This step ensures the destination schema is ready before any record migration begins.
Owner resolution: match Practice by Numbers providers to Freshsales users
We run an owner-resolution pass across all provider and staff records from Practice by Numbers, matching each to a Freshsales User by email address. Any providers without a corresponding Freshsales user are flagged in a pre-migration report. Your team either invites the provider to Freshsales or designates a fallback owner before the migration window opens. No patient record, appointment, or treatment record migrates without a resolved OwnerId.
Sample migration: field-level diff across a representative record slice
We migrate a sample of 100–500 records covering patients across lifecycle stages, appointments of different types, treatment records, and payment records. A field-level diff report shows source value vs. destination field for every mapped column — we review this with you to confirm that procedure codes, insurance fields, and custom object relationships are correct before committing to the full run. This is where custom field mapping and value-mapping logic get validated.
Full migration with delta-pickup and rollback verification
The full migration runs against Freshsales using batch API operations. After the initial load, a delta-pickup window (24–48 hours) captures any new or modified records in Practice by Numbers during the cutover period. We generate an audit log of every record inserted, updated, or skipped. One-click rollback reverts the Freshsales instance to its pre-migration state if reconciliation fails — this is verified before your team marks the migration complete.
Platform deep dives
Practice by Numbers
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 Practice by Numbers 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
Practice by Numbers: Not publicly documented.
Data volume sensitivity
Practice by Numbers 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 Practice by Numbers to Freshsales migration scoping. Not seeing yours? Book a call.
Walk through your Practice by Numbers 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 Practice by Numbers
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.