CRM migration
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
Source
HubSpot
Destination
Compatibility
12 of 12
objects map 1:1 between Practice by Numbers and HubSpot.
Complexity
BStandard
Timeline
48–72 hours
Overview
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.
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 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
HubSpot
Contact
1:1Every 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
HubSpot
Company
1:1Each 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
HubSpot
Custom Object: Treatment
1:1Practice 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
HubSpot
Custom Object: Insurance Policy
1:1Insurance 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
HubSpot
Ticket
1:1Practice 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
HubSpot
Custom Properties on Contact
1:1Practice 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
HubSpot
Custom Object: Growth Metric
1:1Practice 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
HubSpot
Custom Properties on Company
1:1Practice 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
HubSpot
User
1:1Practice 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
HubSpot
Custom Property on Contact
1:1Practice 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
HubSpot
HubSpot Campaign
1:1Practice 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
HubSpot
HubSpot Files
1:1Practice 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.
| Practice by Numbers | HubSpot | Compatibility | |
|---|---|---|---|
| Patient / Contact Record | Contact1:1 | Fully supported | |
| Practice / Location | Company1:1 | Fully supported | |
| Treatment Record | Custom Object: Treatment1:1 | Fully supported | |
| Insurance Record | Custom Object: Insurance Policy1:1 | Fully supported | |
| Appointment / Recall | Ticket1:1 | Fully supported | |
| Production / Revenue Metrics | Custom Properties on Contact1:1 | Fully supported | |
| Growth Chart Data | Custom Object: Growth Metric1:1 | Fully supported | |
| Goal / KPI Record | Custom Properties on Company1:1 | Fully supported | |
| Provider / Staff User | User1:1 | Fully supported | |
| Referral Source | Custom Property on Contact1:1 | Fully supported | |
| Campaign / Marketing Activity | HubSpot Campaign1:1 | Fully supported | |
| Attachment / Uploaded Document | HubSpot Files1: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
HubSpot gotchas
Marketing Contacts billing model is migration-critical
Feature tier gating is not visible until onboarding
Mandatory onboarding fees inflate year-one cost
HubSpot CSV importer cannot migrate engagements or attachments
Custom objects require Enterprise and a pre-existing schema
Pair-specific challenges
Migration approach
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.
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.
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.
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.
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.
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
Practice by Numbers
Source
Strengths
Weaknesses
HubSpot
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 HubSpot.
Object compatibility
1 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 HubSpot migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave Practice by Numbers
Other ways to arrive at HubSpot
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.