CRM migration

Migrate from Practice by Numbers to Freshsales

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 logo

Practice by Numbers

Source

Freshsales

Destination

Freshsales logo

Compatibility

85%

11 of 13

objects map 1:1 between Practice by Numbers and Freshsales.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Practice by Numbers logo

Practice by Numbers

What's pushing teams away

  • Limited public API documentation makes automated data extraction difficult, forcing practices to rely on manual CSV exports which restrict field selection and historical depth.
  • No free tier or low-cost entry point means the full feature set requires a significant commitment before the practice can validate fit with their specific workflow.
  • The breadth of features creates a steep onboarding curve, and some practices report that staff adoption lags during the first months after implementation.

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 Practice by Numbers objects map to Freshsales

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

maps to

Freshsales

Contact

1:1
Fully supported

Patient 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

maps to

Freshsales

Lead

1:many
Fully supported

Patients 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

maps to

Freshsales

Account

1:1
Fully supported

Each 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

maps to

Freshsales

User

1:1
Fully supported

Providers 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

maps to

Freshsales

Event

1:1
Fully supported

Scheduled 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

maps to

Freshsales

Custom Object (Treatment)

1:1
Fully supported

Treatment 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

maps to

Freshsales

Custom Object (Payment)

1:1
Fully supported

Payment 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

maps to

Freshsales

Task

1:1
Fully supported

Recall 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

maps to

Freshsales

Custom Fields on Contact + Custom Object

many:1
Fully supported

Insurance 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

maps to

Freshsales

Note

1:1
Fully supported

Patient 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

maps to

Freshsales

Deal (Opportunity)

1:1
Fully supported

Treatment 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

maps to

Freshsales

Campaign

1:1
Fully supported

Marketing 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

maps to

Freshsales

Custom Field on Contact

1:1
Fully supported

Any 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.

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.

Practice by Numbers logo

Practice by Numbers gotchas

High

No publicly documented API for automated migration

High

Dental EHR data is inherently messy during extraction

Medium

Goal management metrics require explicit field mapping

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

  • Dental clinical data requires custom objects with no native Freshsales equivalent

    Practice by Numbers stores treatment records, tooth-specific procedures, recall intervals, and insurance details that have no matching standard object in Freshsales. We create custom objects (Treatment__c, Payment__c) with lookup relationships to the Contact record, but these must be configured in Freshsales before data lands. Freshsales custom modules (available on Pro and Enterprise plans) provide a cleaner structure than individual custom fields — if your team is on the Growth plan, some clinical data may need to live as Notes or multi-select pick-lists. We surface the required plan tier during discovery and deliver a schema setup plan before migration begins.

  • Patient-to-contact split requires appointment history evaluation

    Practice by Numbers patients who have never had an appointment are not yet 'customers' in the Freshsales lifecycle model. We evaluate appointment history count to route records — zero completed appointments become Freshsales Leads, while patients with at least one completed appointment become Contacts. This split ensures your Freshsales pipeline accurately reflects the patient funnel from first inquiry through active treatment. If your practice uses a different definition for lead vs. customer (e.g., consultation-only patients), we apply your specified rule during the split logic.

  • Freshsales API rate limits affect large-volume migration windows

    Freshsales REST API enforces rate limits per plan tier — Growth plan limits batch import volume compared to Enterprise. For practices with over 50,000 patient records, we paginate the migration across multiple API windows to stay within Freshsales limits. If your Freshsales plan is Growth, we may need to schedule migration runs during off-peak hours. We identify the applicable rate limit during discovery and structure the migration accordingly — this is included in the pre-migration scoping document.

  • Insurance data requires merge of multiple fields into custom contact fields

    Practice by Numbers stores primary insurance carrier, secondary carrier, policy number, group number, and coverage percentages per patient. Freshsales Contacts do not have native insurance fields. We migrate primary insurance data as custom fields on the Contact record (Insurance_Carrier__c, Insurance_Policy_Number__c, Coverage_Percentage__c). Secondary insurance carriers require a separate Insurance_Plan__c custom object with a lookup to Contact, which adds complexity for practices that regularly track dual coverage. This approach preserves complete insurance history but requires additional schema setup in Freshsales before migration.

  • Recall and reactivation workflows must be rebuilt in Freshsales

    Practice by Numbers recall intervals (e.g., 6-month hygiene, annual exam) are tied to the patient record with automated reminders. Freshsales has no native recall concept — reactivation reminders must be rebuilt as Freshsales Workflows triggered by a date field on the Contact record. We export your recall interval configuration from Practice by Numbers as a reference document so your Freshsales admin can recreate the logic using Workflow Rules and Tasks.

Migration approach

Six steps for a successful Practice by Numbers to Freshsales data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

Practice by Numbers logo

Practice by Numbers

Source

Strengths

  • Bi-directional integration with major dental PMSs (Open Dental 15.4+, Dentrix, Dentrix Ascend, EagleSoft, Practice-Web) — PbN writes SMS, email, call and note activity back into the PMS CommLog so the PMS remains the system of record.
  • Dentist-founded product with a 9.8/10 G2 support rating and 99.99% advertised uptime — reviewers consistently call out responsive support and quick feature delivery.
  • Real-time Practice IQ dashboards cover production, collections, case acceptance, new-patient, hygiene reappointment and other dental KPIs that horizontal BI tools do not pre-build.
  • PbN Voice native phone system (call tracking, recording, analytics) plus payments, digital forms and insurance verification consolidate vendors small practices would otherwise stitch together.
  • Modular plan structure lets practices add Voice, Payments or specific modules incrementally rather than paying for everything in tier 1.

Weaknesses

  • Only the Core plan ($249/month) has publicly listed pricing — higher tiers (Flow, Scale, Thrive) require sales contact, complicating self-serve evaluation.
  • Reports are not customisable enough for some practices — granular per-practice metric configuration often requires support involvement.
  • Single-location practices report PbN can feel expensive relative to features they actually use — pricing is more competitive at multi-location and DSO scale.
  • Some digital-form and online-scheduling flows have reliability gaps — reviewers cite forms occasionally failing to send and patients struggling to open them.
  • PbN is a layer on top of the PMS, not the PMS itself — practices migrating need to plan PMS-side data extraction (Open Dental, Dentrix) in parallel.
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 Practice by Numbers 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

    Practice by Numbers: Not publicly documented.

  • Data volume sensitivity

    B

    Practice by Numbers doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Practice by Numbers 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 Practice by Numbers to Freshsales data migrations

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

Can't find your answer?

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 consultation

Most migrations complete in 48–72 hours of clock time for under 50,000 patient records. Larger practices with over 200,000 records or practices requiring extensive custom object configuration extend to 5–7 days. The longest planning step is setting up Freshsales custom objects and custom fields — that work runs in parallel with data extraction and does not add to the migration window. Sample migration and validation typically take one business day.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Practice by Numbers.
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