CRM migration

Migrate from Practice by Numbers to HubSpot

Field-level mapping, validation, and rollback between Practice by Numbers and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.

Practice by Numbers logo

Practice by Numbers

Source

HubSpot

Destination

HubSpot logo

Compatibility

100%

12 of 12

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

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Practice by Numbers structures its data around dental-practice operations: patients as contacts, providers as users, treatment records, insurance verification, and practice-level analytics like production per hour and treatment acceptance rates. HubSpot has no native dental schema — it provides Contact, Company, Deal, Ticket, and custom objects as raw building blocks. We map Practice by Numbers patients to HubSpot Contacts, practices to HubSpot Companies, and treatment metrics to custom properties on both. Insurance information, growth chart data, and goal-management records that have no HubSpot equivalent migrate as custom properties so the data is preserved for reference even if your team rebuilds the workflow in HubSpot. Dental automations and recall campaigns do not migrate — we export the definitions as a rebuild reference for your HubSpot admin. Our migration runs against Practice by Numbers' export API and loads into HubSpot via the Contacts API and Companies API, with bulk import fallback for large record sets.

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

HubSpot logo

HubSpot

What's pulling them in

  • Lowest barrier to entry of any major CRM — the free tier with unlimited contacts lets teams validate fit before committing to a paid plan, according to G2 and Capterra reviewers.
  • Native integration between the CRM and sales engagement tools (sequences, email tracking, dialer) means no separate sync configuration, a theme across G2 Sales Hub reviews.
  • Pipeline visualization, deal tracking, and automated workflows are consistently praised as intuitive and easy to set up without developer involvement.
  • Strong onboarding for new team members — reviewers on Capterra and G2 highlight how quickly new reps become productive without formal training.
  • The HubSpot platform ecosystem (Marketing, Sales, Service, CMS hubs) allows growing companies to consolidate tools without building new integrations.

Object mapping

How Practice by Numbers objects map to HubSpot

Each row shows how a Practice by Numbers object lands in HubSpot, 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 / Contact Record

maps to

HubSpot

Contact

1:1
Fully supported

Every Practice by Numbers patient record maps to a HubSpot Contact. Name, phone, email, address, date of birth, and preferred contact method transfer directly. Practice by Numbers stores the patient record as the primary entity — in HubSpot, the Contact becomes the hub around which all other objects (Company, Deal, Ticket) associate.

Practice by Numbers

Practice / Location

maps to

HubSpot

Company

1:1
Fully supported

Each Practice by Numbers location or practice entity maps to a HubSpot Company. Company name, address, phone, website, and industry (dental) transfer directly. For multi-location groups, we preserve the parent-child relationship using HubSpot's Company hierarchy feature so each location is a child Company under a master group Company.

Practice by Numbers

Treatment Record

maps to

HubSpot

Custom Object: Treatment

1:1
Fully supported

Practice by Numbers treatment history — procedure codes, tooth numbers, dates, provider, and notes — has no direct HubSpot equivalent. We create a HubSpot Custom Object named 'Treatment' with fields for procedure code, description, provider, treatment date, tooth surface, and fee. Each Treatment record links to the patient Contact via a custom association.

Practice by Numbers

Insurance Record

maps to

HubSpot

Custom Object: Insurance Policy

1:1
Fully supported

Insurance carrier, plan type, subscriber ID, group number, coverage percentages, and remaining benefits from Practice by Numbers map to a HubSpot Custom Object named 'Insurance Policy'. Each policy links to the patient Contact. We preserve the effective date and termination date as custom date fields so coverage status can be rebuilt as a HubSpot property.

Practice by Numbers

Appointment / Recall

maps to

HubSpot

Ticket

1:1
Fully supported

Practice by Numbers appointment records (date, type, provider, status, recall interval) translate to HubSpot Tickets with a custom 'Appointment Type' property. Recall scheduling becomes a Ticket with subject line matching the recall interval (e.g., '6-Month Recall Due'). Open appointments map to open Tickets; completed appointments become closed Tickets with original timestamps preserved.

Practice by Numbers

Production / Revenue Metrics

maps to

HubSpot

Custom Properties on Contact

1:1
Fully supported

Practice by Numbers stores per-patient production value and treatment acceptance rate. These become custom number properties on the HubSpot Contact (e.g., Lifetime_Production__c, Acceptance_Rate__c). For provider-level production metrics, we map to custom properties on the provider's Contact record using HubSpot's owner-to-contact link pattern.

Practice by Numbers

Growth Chart Data

maps to

HubSpot

Custom Object: Growth Metric

1:1
Fully supported

Practice by Numbers tracks patient growth, reactivation, and attrition metrics over time. Each data point (month, new patients, reactivated patients, attrited patients) migrates as a record in a HubSpot Custom Object named 'Growth Metric', linked to the parent Company (practice location). This preserves the trend data for rebuilding charts in HubSpot Analytics.

Practice by Numbers

Goal / KPI Record

maps to

HubSpot

Custom Properties on Company

1:1
Fully supported

Practice by Numbers goal management (production targets, acceptance rate goals, schedule utilization targets) maps to custom properties on the HubSpot Company. Each goal becomes a name-value pair: Goal_Name__c, Goal_Target__c, Goal_Current__c, Goal_Status__c (green/yellow/red). Goals are associated with the Company representing the practice location.

Practice by Numbers

Provider / Staff User

maps to

HubSpot

User

1:1
Fully supported

Practice by Numbers staff records (dentist, hygienist, office manager, admin) map to HubSpot Users. Role information (provider type) migrates as a HubSpot User custom property (User_Type__c). Unmatched PbN staff members are flagged for manual HubSpot user creation before the migration commits.

Practice by Numbers

Referral Source

maps to

HubSpot

Custom Property on Contact

1:1
Fully supported

Practice by Numbers tracks how patients found the practice (referral, marketing campaign, organic search). This maps to a HubSpot Contact custom property (Referral_Source__c) and optionally to the built-in HubSpot original_source_data property if the value matches HubSpot's source taxonomy. Historical referral data migrates as a read-only custom property.

Practice by Numbers

Campaign / Marketing Activity

maps to

HubSpot

HubSpot Campaign

1:1
Fully supported

Practice by Numbers marketing campaigns (recall reminders, reactivation emails, seasonal promotions) have no direct HubSpot equivalent because the automation logic does not transfer. We export the campaign names, dates, and target criteria as a rebuild reference. The campaign data itself migrates as a reference document attached to the Company record.

Practice by Numbers

Attachment / Uploaded Document

maps to

HubSpot

HubSpot Files

1:1
Fully supported

Practice by Numbers file attachments (treatment plans, consent forms, insurance documents) stored on patient records re-upload to HubSpot Files and link back to the Contact record. File size limits per HubSpot apply. Inline images in treatment notes are downloaded and re-hosted in HubSpot's file manager.

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

HubSpot logo

HubSpot gotchas

High

Marketing Contacts billing model is migration-critical

High

Feature tier gating is not visible until onboarding

Medium

Mandatory onboarding fees inflate year-one cost

Medium

HubSpot CSV importer cannot migrate engagements or attachments

Medium

Custom objects require Enterprise and a pre-existing schema

Pair-specific challenges

  • Dental-specific objects require HubSpot Custom Objects that must be pre-created before migration

    Practice by Numbers treatment records, insurance policies, and growth metrics have no equivalent in HubSpot's standard object set. HubSpot's Custom Objects are available on Enterprise tiers only, and each custom object must be created with its schema (properties, associations, display name) before any records can be loaded. We deliver a custom-object creation guide as part of the migration plan — practices on HubSpot Starter or Professional tiers will need to upgrade or use custom properties on Contacts and Companies as a workaround for treatment and insurance data. Skipping this step means treatment records land as orphaned custom-property blobs instead of structured records.

  • Recall automation logic does not transfer — recall triggers must be rebuilt in HubSpot

    Practice by Numbers' recall messaging system runs automated patient outreach based on the next-recall-date field. HubSpot workflows can replicate this behavior using date-based enrollment triggers on the Next_Recall_Date__c custom property, but the automation logic itself must be authored from scratch inside HubSpot. We export the recall interval rules from Practice by Numbers (e.g., '6-month cleaning recall', 'annual exam recall') as a rebuild reference so your HubSpot admin can map each interval to a HubSpot workflow enrollment trigger. If the PbN recall logic used complex conditions (time since last visit, treatment type, insurance status), those conditions need manual re-implementation in HubSpot's workflow builder.

  • Multi-location practices create HubSpot Company hierarchy that must be planned before migration

    Dental groups running multiple PbN locations end up with one Company record per location in HubSpot. If the group uses HubSpot's native Company hierarchy (parent Account), each location becomes a child Company under a master group Company. If the group prefers flat structure, each location is a standalone Company and cross-location reporting uses HubSpot's Analytics reporting across multiple companies. We surface the recommended hierarchy approach in the migration plan before data moves — changing the hierarchy after migration requires re-association of all Contact and Deal records, which is non-trivial in HubSpot's data model.

  • PbN appointment data maps to HubSpot Tickets, but appointment-linked treatments need manual association

    Practice by Numbers links appointments to specific treatments and providers within the same record. When we map appointments to HubSpot Tickets, the treatment record (Custom Object) and the provider (HubSpot User) need to be manually linked via the Ticket's association panel after migration, because HubSpot Tickets do not natively store cross-object references beyond the built-in subject, status, and priority fields. We preserve the provider name and treatment ID in custom Ticket properties so your team can reconstruct the association using HubSpot's custom association type feature or by updating the Treatment record's owner field.

  • HubSpot's marketing contact billing model is separate from PbN's per-patient billing

    Practice by Numbers pricing is typically per-location or per-provider, not per-contact. HubSpot's pricing scales with contact count and has a separate marketing contacts tier that bills for contacts targeted with marketing emails. If your team plans to run HubSpot marketing campaigns to the migrated patient list, the marketing contact tier cost will be additive to HubSpot's base CRM subscription. We preserve the patient contact list in HubSpot as non-marketing contacts by default so you control when to designate patients as marketing contacts and trigger the associated billing tier.

Migration approach

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

  1. Extract Practice by Numbers data export and profile the schema

    FlitStack AI connects to Practice by Numbers using your export credentials and pulls a full data dump: all patient records, practice locations, treatment history, insurance records, appointment history, goal metrics, and growth chart data. We profile the export to identify custom property groups, multi-location structures, and record volumes per object. This profile becomes the migration scope document that drives field mapping, custom object creation, and pricing.

  2. Create HubSpot custom objects and custom properties before data lands

    Based on the Practice by Numbers schema profile, FlitStack AI generates a HubSpot setup plan: which custom objects to create (Treatment, Insurance Policy, Growth Metric), which custom properties to add to Contact and Company, and how to configure custom association types between Treatment records and patient Contacts. If your HubSpot account is on Starter or Professional, we recommend upgrading to Enterprise before custom object creation or provide a custom-property-only fallback that structures treatment data as read-only blobs on Contact records.

  3. Resolve Practice by Numbers staff to HubSpot users by email match

    Each Practice by Numbers staff record (dentist, hygienist, office manager) is matched to a HubSpot user by email address. Unmatched staff members are flagged with their PbN role so your team can create the corresponding HubSpot user before the migration runs. All migrated records (Contacts, Companies, Treatments) inherit the resolved HubSpot user as the owner, preserving accountability in HubSpot's activity tracking.

  4. Run a sample migration with field-level diff for review

    A representative slice of 200–500 patient records migrates first, covering each practice location, a range of appointment types, and a sample of treatment records and insurance entries. FlitStack AI generates a field-level diff report showing every mapped field, the transformed value in HubSpot, and any fields that landed in custom properties versus standard fields. You review the diff to confirm lifecycle stage routing, insurance field placement, and recall date mapping before the full run commits.

  5. Execute full migration with delta-pickup window and audit log

    The full dataset loads into HubSpot. A delta-pickup window (typically 24–48 hours) captures any new patient records or appointment updates created in Practice by Numbers during the cutover. FlitStack AI writes a complete audit log of every record created, updated, or skipped during migration, including skip reasons for records that failed validation. One-click rollback reverts all migrated records if reconciliation against the PbN export reveals discrepancies that exceed your tolerance threshold.

  6. Deliver recall automation rebuild reference and post-migration verification

    FlitStack AI exports your Practice by Numbers recall interval definitions and automation triggers as a structured document mapped to HubSpot workflow enrollment conditions. Your HubSpot admin uses this reference to rebuild recall workflows inside HubSpot. We run post-migration verification: contact count parity against PbN export, custom object record counts, owner assignment confirmation, and a sample field-level check across treatment and insurance records. The final deliverable includes the audit log, the rebuild reference, and a 30-day post-migration support window for data corrections.

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.
HubSpot logo

HubSpot

Destination

Strengths

  • Genuinely useful free CRM tier with no seat limit on contact records.
  • All-in-one sales engagement layer (sequences, email tracking, calling, dialer) embedded natively in the CRM, eliminating a separate integration.
  • Intuitive interface and fast onboarding for individual reps, per G2 and Capterra reviews.
  • Workflow automation triggers across contacts, deals, and tickets with a visual builder.
  • API coverage for all standard objects including custom objects at Enterprise tier.

Weaknesses

  • Pricing model is contact-based at the marketing layer — importing all records as marketing contacts can multiply the monthly bill by 4×.
  • Feature tier cliffs are frequent surprises: sequences, calling, advanced reporting, and quoting are all gated, often requiring plan upgrades mid-implementation.
  • Mandatory onboarding fees at Professional ($1,500) and Enterprise ($3,500) are not prominently disclosed on the pricing page.
  • API rate limits are restrictive for bulk migration — burst limits of 100-200 req/10sec and search endpoint limits of 4 req/sec require careful job queuing.
  • Custom objects, additional pipelines, and advanced forecasting are Enterprise-only, making cost projections difficult for growing teams.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 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 HubSpot.

  • Object compatibility

    B

    1 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 HubSpot 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 HubSpot data migrations

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

Can't find your answer?

Walk through your Practice by Numbers to HubSpot migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Practice by Numbers migrations complete within 48–72 hours for setups under 25,000 patient records. Multi-location practices with 50,000+ records or heavy use of PbN's custom fields extend to 5–10 business days. The longest planning step is creating HubSpot Custom Objects and custom properties before data lands — that pre-work typically takes 2–3 days and can overlap with the migration run. Practices with fewer than 5,000 records and no custom objects can sometimes complete in 24 hours of clock time after HubSpot schema is ready.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Practice by Numbers.
Land in HubSpot, 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