How to Integrate with Dentrix: A Developer's Guide
Step-by-step instructions for accessing patient records, appointments, and billing data from the most widely used dental PMS in North America.
Introduction: Dentrix in the Dental Market
Dentrix, developed by Henry Schein One, is the most widely installed dental practice management system in North America. With more than 35,000 practices running the software, it holds a dominant position in the market — particularly among mid-size private practices and single-location offices. For any developer building dental software, Dentrix compatibility is not optional. It is table stakes.
However, integrating with Dentrix is not straightforward. The system was originally designed as a desktop application with a local database, and while Henry Schein One has introduced cloud-adjacent offerings, the core product still operates as an on-premises installation. This architecture creates unique challenges for developers who are accustomed to working with cloud-native APIs.
This guide walks through the available integration paths, the data you can access, practical code examples, and the Dentrix-specific quirks you need to know about before writing your first line of integration code.
Dentrix Integration Options
The Dentrix API Exchange Program
Henry Schein One operates the Dentrix Developer Program (formerly API Exchange), which provides a sanctioned path for third-party integration. Approved partners receive access to the Dentrix API layer, which exposes endpoints for reading and writing core data types. The approval process involves an application review, a fee structure, and ongoing compliance requirements.
The program is geared toward established software vendors. Independent developers and startups often find the application timeline (typically 3 to 6 months), cost, and partnership requirements to be significant barriers. Each integration must be individually certified, and API access is tied to your partner status.
Direct Database Access
Dentrix stores its data in a local database (historically a Sybase/SQL Anywhere instance, with more recent versions using Microsoft SQL Server). Some developers bypass the official API entirely and query the database directly. While this provides raw, unrestricted access, it carries considerable risk.
- Schema changes between Dentrix versions can silently break your queries
- Write operations without proper transaction handling can corrupt practice data
- Direct access may violate Henry Schein One's terms of service
- You must deploy and maintain database connectivity infrastructure at each practice
- There is no change notification mechanism — you must poll constantly or accept stale data
Third-Party API Platforms
API integration platforms like CRMBridge provide an abstraction layer over Dentrix (and other PMS systems). These platforms handle the on-premises connectivity, data normalization, and API management, exposing a clean REST API that your application can call without worrying about the underlying Dentrix infrastructure. This is the approach that lets you move fastest while maintaining a supportable, production-grade integration.
What Data Can You Access in Dentrix?
Dentrix contains rich practice data spanning clinical, administrative, and financial domains. Here is what is available through a properly scoped integration:
- Patient Demographics: Name, address, phone, email, date of birth, Social Security number (restricted), employer, responsible party, guarantor relationships, preferred name, and language preference.
- Appointments: Scheduled and completed visits with date, time, duration, provider, operatory, appointment type, reason codes, confirmation status, and production estimates broken down by procedure.
- Treatment Plans: Proposed procedures with ADA CDT codes, tooth and surface designations, fee amounts, insurance estimates, treatment phases, and case acceptance status.
- Insurance Information: Subscriber details, carrier name, plan type (PPO, HMO, indemnity), group and ID numbers, benefit percentages by category, annual maximum, deductible amounts, and eligibility verification history.
- Billing and Ledger: Charges, patient payments, insurance payments, adjustments, insurance claims with tracking numbers, and aging balances.
- Clinical Procedures: Completed procedure history with CDT codes, provider, date of service, tooth/surface, fee, and associated notes.
- Imaging Metadata: References to images stored in Dentrix Image (or DEXIS), including image type, capture date, and associated tooth numbers.
Scope matters:
Always request the minimum data access your application needs. If you are building a recall reminder system, you need patient contact info and appointment history — not insurance details or clinical notes. Limiting scope simplifies your HIPAA compliance obligations and reduces risk.
Step-by-Step: Connecting to Dentrix via the CRMBridge API
The following examples demonstrate how to connect to a Dentrix practice using CRMBridge's unified API. The same endpoints work across all supported PMS systems, but we will use Dentrix-specific context throughout.
1. Authenticate
All API calls require a Bearer token obtained via OAuth2 client credentials flow.
POST https://api.crmbridge.ai/v1/auth/token
Content-Type: application/json
{
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"grant_type": "client_credentials",
"scope": "patients:read appointments:read appointments:write"
}
# Response
{
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "patients:read appointments:read appointments:write"
}
2. Retrieve Patients
Query patients from a connected Dentrix practice. Results are returned in CRMBridge's normalized format regardless of the underlying PMS.
GET https://api.crmbridge.ai/v1/practices/{practiceId}/patients?status=active&limit=25
Authorization: Bearer {access_token}
# Response
{
"data": [
{
"id": "pat_d7f2a1",
"pms_id": "10234",
"pms_type": "dentrix",
"first_name": "Michael",
"last_name": "Torres",
"date_of_birth": "1975-03-22",
"email": "[email protected]",
"phone_mobile": "+15559876543",
"status": "active",
"primary_provider": {
"id": "prov_001",
"name": "Dr. Rebecca Liu",
"npi": "1234567890"
},
"recall_due_date": "2026-04-01",
"balance": 125.00
}
],
"pagination": { "total": 3421, "page": 1, "per_page": 25 }
}
3. Get Appointments
Retrieve appointments for a specific date range. This is useful for building scheduling tools, daily huddle dashboards, or confirmation systems.
GET https://api.crmbridge.ai/v1/practices/{practiceId}/appointments?date_from=2026-03-21&date_to=2026-03-21
Authorization: Bearer {access_token}
# Response
{
"data": [
{
"id": "apt_x9k2m",
"patient_id": "pat_d7f2a1",
"patient_name": "Michael Torres",
"provider_id": "prov_001",
"start_time": "2026-03-21T09:00:00-05:00",
"duration_minutes": 60,
"operatory": "Op 3",
"type": "prophy_adult",
"status": "confirmed",
"procedures": [
{ "code": "D1110", "description": "Prophylaxis - Adult", "fee": 135.00 },
{ "code": "D0120", "description": "Periodic Oral Eval", "fee": 65.00 }
],
"estimated_production": 200.00
}
]
}
4. Create an Appointment
Write operations allow your application to book appointments directly into the Dentrix schedule. This requires the appointments:write scope.
POST https://api.crmbridge.ai/v1/practices/{practiceId}/appointments
Authorization: Bearer {access_token}
Content-Type: application/json
{
"patient_id": "pat_d7f2a1",
"provider_id": "prov_001",
"start_time": "2026-04-15T14:00:00-05:00",
"duration_minutes": 90,
"operatory": "Op 2",
"type": "crown_prep",
"procedures": ["D2740"],
"notes": "Crown prep #14 - PFM. Patient prefers nitrous."
}
# Response: 201 Created
{
"id": "apt_new123",
"pms_id": "87452",
"status": "scheduled",
"created_at": "2026-03-21T10:30:00Z"
}
Handling Dentrix-Specific Data Quirks
If you work directly with Dentrix data (or need to understand how CRMBridge normalizes it), there are several platform-specific patterns to be aware of.
Patient ID Systems
Dentrix assigns patients an internal numeric ID (the "PatNum") that is unique within a single practice database. These IDs are sequential integers starting from 1. If your application serves multiple Dentrix practices, you cannot use PatNum as a globally unique identifier — patient 1042 in Practice A is a completely different person than patient 1042 in Practice B. Always scope patient IDs by practice, or use a normalized identifier like CRMBridge's pat_ prefixed IDs.
Date and Time Formats
Dentrix stores dates in various formats internally depending on the field. Appointment times are stored in the practice's local time zone without explicit time zone information. When converting to your application's time representation, you must know the practice's time zone and apply the offset yourself. CRMBridge handles this by returning all timestamps in ISO 8601 format with the appropriate time zone offset.
Provider Mappings
Dentrix uses a short alphanumeric provider code (typically 3 to 5 characters) as its primary provider identifier. These codes are configured by each practice individually, so "DRS" might mean Dr. Smith in one office and Dr. Stevens in another. For multi-practice applications, always map provider codes to a canonical provider record using NPI numbers or another universal identifier.
Appointment Status Values
Dentrix appointment statuses are stored as single-character codes with practice-configurable meanings. The defaults include common states like scheduled, confirmed, complete, and broken, but practices can customize these. Your integration should handle unknown status codes gracefully rather than assuming a fixed set of values.
Real-World Use Cases
Patient Engagement Applications
Recall reminder systems, appointment confirmation tools, and patient communication platforms all rely on Dentrix data. By pulling patient contact information, recall due dates, and appointment schedules, these applications automate outreach that front desk staff would otherwise handle manually. A typical engagement app reads patient and appointment data from Dentrix and writes back confirmation status changes.
Insurance Verification Automation
Automated eligibility verification systems pull subscriber information from Dentrix, check coverage with insurance carriers via EDI or API, and write the verification results back to the patient record. This eliminates the 10 to 15 minutes per patient that staff typically spend on manual phone-based verification.
DSO Analytics and Reporting
Dental Service Organizations with multiple Dentrix locations use API integrations to aggregate production data, patient volume metrics, and provider utilization across their network. Because each Dentrix instance is an independent database, these organizations need an integration layer that can pull data from dozens or hundreds of separate installations and normalize it into a single reporting schema.
Building for Dentrix? Think multi-PMS from day one.
Even if Dentrix is your primary target today, your customers will eventually ask about Eaglesoft, Open Dental, and Curve support. Using a unified API from the start means adding PMS support is a configuration change, not a rewrite.
Start Your Dentrix Integration Today
Skip the 6-month partner program. Connect to Dentrix (and 26 other dental PMS platforms) through a single REST API. Free sandbox access included.