CRM migration
Field-level mapping, validation, and rollback between Open Dental and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Open Dental
Source
HubSpot
Destination
Compatibility
10 of 10
objects map 1:1 between Open Dental and HubSpot.
Complexity
BStandard
Timeline
2–4 weeks
Overview
Open Dental is a dental practice management system built around patients, providers, appointments, procedures, insurance plans, and claims. HubSpot is a CRM organized around contacts, companies, deals, and lifecycle stages. These are fundamentally different data models — Open Dental tracks clinical and billing workflow; HubSpot tracks marketing and sales relationships. FlitStack AI migrates Open Dental patient records as HubSpot contacts, providers as HubSpot users (matched by email), appointments and procedures as custom activity records, and PatFields (Open Dental's custom field system) as HubSpot custom contact properties. Insurance carriers, referral sources, and recall schedules become custom HubSpot properties or custom objects that your team configures post-migration. Open Dental has no native HubSpot integration — FlitStack reads from Open Dental's REST API (paginated, up to 100 records per call) and writes to HubSpot via the Contacts API and bulk import. The migration does not move Open Dental's internal workflows, e-prescriptions, imaging bridges, or billing automation logic — those require HubSpot workflow rebuilds using HubSpot's workflow builder and your clinical data as reference. A delta-pickup window captures any Open Dental changes made during cutover so HubSpot reflects your final patient state at go-live.
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 Open Dental 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.
Open Dental
Patient
HubSpot
Contact
1:1Open Dental Patient (PatNum, FName, LName, Email, Phone, Address, City, State, Zip, Birthdate) maps directly to HubSpot Contact (firstname, lastname, email, phone, address fields, date of birth). Open Dental PatStatus (patient active/inactive classification) maps to HubSpot lifecyclestage via a value-mapping table — Active patients become Subscriber, archived patients retain their original status as a custom property for reference.
Open Dental
Provider
HubSpot
User / Contact Property
1:1Open Dental Provider (ProvNum, FName, LName, Email, Specialty) maps to HubSpot User account matched by email address. HubSpot users are the owners of contact and deal records. Providers without email addresses in Open Dental receive a generated placeholder email and are flagged for your HubSpot admin to map to real user accounts before the migration commits. Provider specialty is preserved as a custom contact property (Provider_Specialty__c) for reporting segmentation.
Open Dental
PatField (custom field)
HubSpot
Custom Contact Property
1:1Open Dental's PatFields (text, picklist, date, checkbox, currency types) each require a corresponding HubSpot custom contact property. We create these properties in HubSpot before migration using the same field label and appropriate HubSpot data type. Picklist PatFields require value-by-value mapping to HubSpot picklist options. Checkbox fields map to HubSpot single-checkbox properties. Currency fields map to HubSpot number properties formatted as currency.
Open Dental
Appointment
HubSpot
Custom Object / Engagement
1:1Open Dental appointments (ApptNum, PatNum, ProvNum, AptDateTime, Confirmed, ProcDescript, Length) do not have a native HubSpot equivalent. We create a HubSpot custom object (Appointment__c) with fields for patient, provider, appointment date/time, status, and procedure description. Each appointment record is linked to the corresponding HubSpot contact via a lookup relationship. Appointment status (Confirmed, Unconfirmed, Broken) maps to a custom picklist on the custom object.
Open Dental
ProcedureLog
HubSpot
Custom Object / Engagement Note
1:1Open Dental procedures (ProcNum, PatNum, ProvNum, ProcCode, ToothNum, Surface, Fee, ProcDate) contain the clinical treatment history. These map to a HubSpot custom object (Procedure__c) with fields for procedure code, tooth number/surface, fee, provider, and date. The procedure object is associated to the HubSpot contact record so treatment history is accessible from the patient contact timeline. Original procedure codes are preserved as a custom text property for insurance and referral documentation.
Open Dental
InsPlan
HubSpot
Custom Object / Contact Property
1:1Open Dental insurance plans (InsPlanNum, CarrierName, SubscriberID, GroupNum, Benefits) contain per-patient insurance details. These map to a HubSpot custom object (Insurance__c) linked to the contact record. Fields include CarrierName, SubscriberID, GroupNumber, EffectiveDate, and BenefitSummary. Open Dental PatPlan (which links a patient to an insurance plan with subscriber relationship, relationship to subscriber, and sequence) is represented as a custom property on the Insurance__c custom object indicating subscriber role (Self, Spouse, Child, Other).
Open Dental
Recall
HubSpot
Custom Contact Property + HubSpot Workflow
1:1Open Dental's recall system tracks the next recommended hygiene appointment per patient (RecallType, DateDue, Intervals). This is a dental-specific concept with no HubSpot equivalent. We migrate recall data as custom contact properties: Recall_Type__c, Recall_Due_Date__c, and Recall_Interval_Months__c. A HubSpot workflow (to be built post-migration) triggers outreach when Recall_Due_Date__c approaches current date — this replaces Open Dental's built-in recall reminders with HubSpot automation.
Open Dental
Document / Attachment
HubSpot
HubSpot Files / Notes
1:1Open Dental documents (images, PDFs, scanned forms attached to patient records via /documents API) re-upload to HubSpot Files associated with the contact record. Document category names from Open Dental map to HubSpot file tags for organization. X-rays and radiographs are excluded from the standard migration payload and must be handled separately via your imaging software's export tools — this is documented in the pre-migration checklist.
Open Dental
Referral / ReferringProvider
HubSpot
Custom Contact Property
1:1Open Dental referral sources (referring dentist or doctor name, referral date) attach to the patient record. HubSpot has no native referral tracking field. We create Referral_Source__c and Referral_Date__c custom properties on the contact record. If your Open Dental setup tracks referring provider NPI or clinic name, those map as additional custom properties to support referral-source reporting in HubSpot dashboards.
Open Dental
Payment / PaySplit
HubSpot
Custom Object / Activity Note
1:1Open Dental payment records (PayNum, PatNum, PayDate, PayAmt, PayType, Provider) and PaySplit detail (splitting payments between insurance and patient portions) have no HubSpot equivalent. We create a Payment__c custom object linked to the contact with fields for payment date, amount, payment type, and provider. Payment splits are represented as sub-fields on the payment record (Insurance_Portion__c, Patient_Portion__c). This preserves billing history in HubSpot for front-desk and administrative reference.
| Open Dental | HubSpot | Compatibility | |
|---|---|---|---|
| Patient | Contact1:1 | Fully supported | |
| Provider | User / Contact Property1:1 | Fully supported | |
| PatField (custom field) | Custom Contact Property1:1 | Fully supported | |
| Appointment | Custom Object / Engagement1:1 | Fully supported | |
| ProcedureLog | Custom Object / Engagement Note1:1 | Fully supported | |
| InsPlan | Custom Object / Contact Property1:1 | Fully supported | |
| Recall | Custom Contact Property + HubSpot Workflow1:1 | Fully supported | |
| Document / Attachment | HubSpot Files / Notes1:1 | Fully supported | |
| Referral / ReferringProvider | Custom Contact Property1:1 | Fully supported | |
| Payment / PaySplit | Custom Object / Activity Note1: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.
Open Dental gotchas
X-ray images do not migrate between systems
Scanned documents require a separate image conversion with additional cost
Server must run MySQL with myISAM engine, not InnoDB
API pagination is limited to 100 records per request
Custom sheets use proprietary XML that only imports to Open Dental
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
Open Dental data audit and API inventory
FlitStack connects to your Open Dental database via the REST API (using your Open Dental API credentials) and inventories every object: Patient count, Provider count, Appointment volume, ProcedureLog records, PatField definitions, InsPlan and PatPlan records, Recall data, and Document attachments. We also audit data quality — duplicate patients, missing email addresses on providers, and PatField consistency across patients are flagged in a pre-migration health report that your team reviews before extraction begins.
HubSpot custom object and property creation
Before any data is migrated, FlitStack creates all required HubSpot custom objects (Appointment__c, Procedure__c, Insurance__c, Payment__c) and custom contact properties (Recall_Type__c, Recall_Due_Date__c, Recall_Interval_Months__c, Provider_Specialty__c, Source_Patient_ID__c, Original_Create_Date__c, Referral_Source__c, and all PatField mappings) in your HubSpot portal. For picklist properties, we generate a setup template listing every option value from Open Dental so your HubSpot admin can create the picklist options before the migration import runs. Provider email addresses are cross-referenced against HubSpot user accounts to identify which Open Dental providers need new HubSpot user accounts created as a prerequisite.
Provider-to-user resolution and owner mapping
Open Dental providers are matched to HubSpot users by email address. FlitStack generates an owner mapping report showing every provider, their email address (or lack thereof), and the corresponding HubSpot user status. Any provider without a HubSpot user account is flagged as a prerequisite — your team creates those accounts before the migration runs. For multi-location Open Dental setups using Clinics, FlitStack maps each Open Dental ClinicNum to a HubSpot team so contacts land in the correct team-scoped pipeline.
Test migration with field-level diff
A representative sample — typically 200–500 patient records spanning multiple providers, appointment types, and PatField configurations — is migrated to HubSpot first. FlitStack generates a field-level diff report comparing source values from Open Dental against destination values in HubSpot for every mapped property. You verify that PatField picklist values resolved correctly, recall dates landed in the right property, provider ownership assigned as expected, and custom object records linked to the correct contact. Any mapping errors are corrected in the migration plan before the full run commits.
Full migration with delta-pickup window
The full dataset is migrated using Open Dental's paginated API (up to 100 records per call) mapped to HubSpot's Contacts API and bulk import process. A delta-pickup window of 24–48 hours runs after the initial load to capture any Open Dental records modified during the cutover window. FlitStack uses PatNum and SecDateTEdit timestamps to identify changed records and re-import only the delta. An audit log captures every operation (insert, update, link) so your team can trace any record back to its source. One-click rollback reverts the HubSpot portal to its pre-migration state if reconciliation uncovers critical mapping errors.
Platform deep dives
Open Dental
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 Open Dental 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
Open Dental: Remote mode: 1,000 elements; Local/Service mode: 10,000 elements; Enterprise tier doubles Remote mode limits.
Data volume sensitivity
Open Dental 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 Open Dental to HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Open Dental 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 Open Dental
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.