PMS integrations
Connect a practice management system, map its sites, review patient matches, and monitor automatic polling.
Use Settings → Integrations to connect a practice management system (PMS), request a planned integration, and monitor sync health. Dentally, CareStack and Open Dental support live data connections; every other listed PMS is request-only until its adapter and provider partnership are available.
The page has four tabs:
- Practice system — your PMS connection, the systems that sync today under Two-way sync, and the rest of the catalogue under Coming soon.
- Connected apps — Zapier, plus every app your practice authorised over OAuth.
- Inbound webhooks — the endpoints your own forms and systems post leads to (owners and managers only).
- Outbound webhooks — the endpoints SmileLine delivers events to (owners and managers only).
A practice can run one active PMS connection at a time. If you are moving between systems, disconnect the old one before connecting the new one.
For a single view of every external account SmileLine is signed in to — ad platforms, Google, your inbox channels, your phone provider and this PMS connection — with the health of each, see Connected accounts.
Owners and managers can create, pause, resume, map, and disconnect PMS connections. The front desk sees connection details read-only and can review suggested patient matches. Telesales see the same read-only connection details. Analysts do not have access to PMS connections.
Connect Dentally
Go to Settings → Integrations, find Dentally under Two-way sync, and click Connect.
Review the supported capabilities, then click Connect.
Wait for the connection to move from Awaiting activation to Active after the Dentally partnership is approved. No further credential step appears in SmileLine.
Connect CareStack
CareStack needs credentials from your practice, so the connection has one extra step. Ask CareStack support for your API details before you start — you need the account subdomain from your CareStack web address, an Account ID, and an Account Key.
Go to Settings → Integrations, find CareStack under Two-way sync, and click Connect.
Enter the account subdomain, Account ID, and Account Key, then click Connect. SmileLine checks the credentials against CareStack before saving them.
Map each CareStack location to a SmileLine location. Appointments for an unmapped location wait until you map it.
Open Sync detail on the connection and check Clinicians. CareStack has no directory of its providers, so SmileLine learns them from the appointments it imports and adds each one as an inactive practitioner named after its CareStack id.
Go to Settings → Practitioners, give each of those a real name, and make them active.
An unnamed clinician is not bookable. Their CareStack appointments still import and still block that column of the diary, so you cannot double-book them — but they will not be offered for new bookings until you name and activate them.
What CareStack syncs
The connection imports patients, appointments, surgeries, and appointment types, and it writes new bookings, cancellations, and confirmations back to CareStack.
It does not import treatment plans, invoices, or payments, and CareStack does not send SmileLine live updates — changes arrive on an hourly poll rather than instantly. Availability always comes from your SmileLine rota, not from the CareStack diary, so keep your practitioner rotas accurate.
Bookings SmileLine sends to CareStack carry a short reference tag in the appointment notes. It is how SmileLine recognises its own bookings if a request is interrupted. Leave it in place; removing it means a booking may need manual review.
Connect Open Dental
Open Dental needs one credential from your practice: the customer API key SmileLine issues for it. Open Dental charges the practice directly for API access (free for many practices, a small monthly fee per location for others) and your practice must run the Open Dental eConnector, which most already do.
Go to Settings → Integrations, find Open Dental under Two-way sync, click Connect, then Continue. SmileLine creates the connection, shows Awaiting credentials, and opens the credentials form. If you do not have your customer API key yet, close the form — SmileLine issues the key for your practice and passes it to you, and Enter credentials on the card reopens the form later.
In Open Dental, open Setup → Advanced Setup → API Setup, enter the key and tick Enabled. The eConnector must be running on the practice server.
Back in SmileLine, paste the Customer API key and, if you want live updates sent from one machine only, the Open Dental workstation name (the Windows computer name of the machine running OpenDental.exe or OpenDentalAPIService.exe). Click Save credentials. SmileLine checks the key with Open Dental before saving it.
If your practice uses Open Dental's Clinics feature, map each clinic to a SmileLine location. A practice without clinics gets one site called Practice; map it to your location. Appointments for an unmapped site wait until you map it.
Open Dental sends live updates from the workstation you name, so that machine must be running Open Dental (or the Open Dental API service) for changes to arrive between polls — a workstation that is switched off sends nothing, and SmileLine cannot tell that apart from "no changes". Leave the name blank if you are unsure: every workstation then sends updates, and the connection works either way because changes also arrive on the hourly poll. If live updates could not be registered, the connection says so beneath its status and SmileLine retries the registration on each hourly sync until it succeeds.
What Open Dental syncs
The connection imports patients, appointments, providers, operatories and appointment types. Both the dentist and the hygienist on an appointment are carried across, so each one's column is blocked in the SmileLine diary. It writes new bookings, confirmations and cancellations back to Open Dental; a cancellation sends the appointment to Open Dental's unscheduled list, and SmileLine never adds a missed- or cancelled-appointment fee procedure to the patient's account.
Availability comes from Open Dental's own diary: SmileLine asks Open Dental for free slots, so keep your provider schedules in Open Dental accurate. Live updates are delivered by Open Dental as changes happen; a full poll runs every hour as well.
It does not import treatment plans, invoices or payments, and it does not update patient details in Open Dental — SmileLine creates a patient there only when an online booking arrives for someone who has no chart yet, after checking by email and phone that they do not already have one.
Open Dental records a missed appointment and a cancelled one the same way from SmileLine's point of view, so both appear as Cancelled here. Record no-shows in Open Dental itself. Times are read in the Practice timezone set under Settings → Practice details; check it is right before connecting.
The customer API key belongs to one Open Dental database. To connect a different practice, disconnect first — reusing the connection with another practice's key would attach its records to the wrong charts. Bookings SmileLine sends carry the same short reference tag in the appointment note as CareStack bookings do; leave it in place.
Request another PMS
Coming soon lists the most widely used systems for UK and US practices. Use the market filter on the section rule to narrow it, then click Request on your PMS and confirm with Request. SmileLine records one request per PMS for the whole practice and marks that tile Requested. Click Cancel if the practice no longer needs it.
Requesting a PMS does not start a data connection or grant SmileLine access to the provider. The tile stays under Coming soon until an adapter has passed the same activation, security, and reliability checks as a live integration.
The connection imports patients, appointments, treatment-plan summaries, invoices, and payments from Dentally. You can also book against the Dentally diary from a linked patient record, and open a new patient's chart in Dentally from the same link dialog — see practice management system actions.
The initial historical import is silent to outbound webhook endpoints. It builds the SmileLine record without sending one integration event for every historical patient, appointment, treatment plan, invoice, or payment. After activation, live provider changes and polling updates can emit the configured events. Exact provider retries are ignored. If only the provider's revision timestamp changes, SmileLine advances that marker without rewriting the record or sending another event. A conflicting change at the same revision, or one without a usable revision, is held for review instead of overwriting the existing record.
PMS financial and clinical mirrors remain read-only in SmileLine. Two-way patient conflict resolution remains design-only and is not an enabled product mode.
For an appointment the PMS owns, cancelling it in SmileLine is sent on to the provider so both diaries agree. Chairside outcomes — arrived, in chair, attended, no-show — are recorded in the PMS instead: SmileLine cannot send them, and setting one locally would contradict the provider's own record. If the two views do disagree, the incoming record is held for review rather than overwriting what staff recorded.
Webhook receipts
Every signed webhook the provider delivers is recorded as a receipt, and its
raw body is captured before SmileLine reads it — on the successful path as
well as on failures. The API lists a connection's receipts newest first
(GET /settings/pms/connections/{id}/receipts) and can replay a completed
one from its captured body
(POST /settings/pms/connections/{id}/receipts/{receiptId}/replay): the
events are re-parsed and re-staged (rows that still exist are left alone)
and processing runs again. Receipts that were held or refused are replayed
from the review queue instead.
Review appointment corrections
When a provider update would move an appointment backwards or replace a completed, cancelled or no-show fact, the connection card shows a banner naming how many appointment corrections are waiting, with a Review button. SmileLine keeps the local appointment unchanged and stops any reminder that reaches its final provider boundary while that correction is pending.
Open the review sheet to compare the current and provider status, time, location, status timestamp and note. The provider side also lists the clinicians it proposes, which may be more than one where the PMS records a combined visit. A team member with appointment-edit permission can then choose:
- Keep SmileLine — retain the local fact and resume each interrupted reminder that is still relevant.
- Use PMS correction — apply the reviewed PMS projection, recompute time-anchored reminders and create an urgent follow-up task. The task asks staff to check patient messages, deposits and other external effects that may already have happened. SmileLine does not invent a retrospective booking, move, cancellation or no-show message from this decision.
One correction immediately releases at most twenty due reminders. If recompute produces more, the remaining reminders stay durably scheduled for the next bounded reminder sweep instead of blocking the correction decision.
The decision is version-fenced. If the appointment changed after the sheet was opened, reload and compare it again. Repeating the same completed decision is a write-free replay. If a later provider update resolves the contradiction on its own, SmileLine supersedes the pending review. A live webhook or poll re-arms each still-relevant interrupted reminder. A historical backfill remains silent: it marks that frozen occurrence as not sent but leaves its ledger eligible for a later live appointment change. While a correction is still pending, a newer provider revision carrying the same material is re-evaluated if the local appointment changes. The stale review is then superseded by one tied to the new appointment version.
A patient the PMS marks as declining marketing is opted out in SmileLine, and a patient it marks inactive is archived. Neither is reversed by a later provider update: an opt-out or an archive recorded in SmileLine is never lifted automatically. Patients who have declined SMS or email in the PMS are not contacted on that channel, including by appointment reminders.
Map provider sites
Provider sites appear under the active connection. Map each site to one SmileLine location so imported records land in the correct practice context.
- Select Not mapped when a site isn't ready.
- Click Park to stop processing a site temporarily, then Resume when it should participate again.
- Records from unmapped or parked sites wait; SmileLine does not guess a location or discard them.
Waiting records keep waiting until you act: there is no retry limit and no expiry, so nothing the practice management system sent is ever discarded on a timer. Map or resume the site, or resolve the record from the review queue, to have it processed.
An appointment can arrive before the clinician it names has been imported — Dentally sends no practitioner event, so a new clinician is picked up on the next hourly poll. SmileLine records that appointment against a placeholder clinician straight away so the time is still counted as busy and cannot be double-booked online, then renames it automatically once the real practitioner arrives. The placeholder is inactive, so it is never offered to patients.
Review patient matches
When an imported PMS patient resembles an existing SmileLine patient, the connection card shows a banner naming how many matches are waiting, with a Review button.
Open the review sheet and compare the name, date of birth, email, and phone on both sides. Choose Accept to link the records or Reject to keep them separate. A suggested match never authorizes a link or provider write by itself.
Monitor automatic polling
Dentally has a provider-managed polling cadence of 60 minutes. Open Sync detail on the connection card for the cadence and its read-only scheduling diagnostics:
- Next due — when the connection is eligible for its next poll.
- Poll claimed until — another worker currently owns the bounded poll lease.
- Last started and Last completed — the most recent poll timestamps.
- Waiting for activation — polling will begin after the connection becomes active.
SmileLine also consumes provider webhooks when available. Polling closes gaps without starting overlapping work: a claimed poll carries a fenced lease, and a stale worker cannot complete over a newer claim.
Pause or disconnect
Pausing, disconnecting and replacing credentials live in the ⋯ menu on the connection card.
- Pause syncing stops new sync work while keeping the connection, mappings, links, and history. Click Resume syncing to schedule it again. Use Pause for a temporary stop — it is fully reversible.
- Disconnect permanently ends the connection and its record links. In-flight bookings and pending writes for that connection stop and are marked for review rather than left hanging. Existing CRM records and imported history remain available.
- Cancel connection removes a connection that is still waiting for provider activation.
Disconnecting is final for that connection: reconnecting the same provider later creates a fresh connection that re-imports and re-links records. Patients converge onto their existing CRM records, and recent appointments that are unchanged reconnect to the same entries; other records are imported again. If the provider needs clean-up on its side (Open Dental webhook subscriptions), the disconnected connection stays visible in the list until that clean-up completes, with any error shown on it.
If a connection reports an error, inspect its message and the affected patient. Failed PMS writes are called out on the connection and patient record instead of being hidden.
System of record
The System of record card at the top of the tab says which system holds the clinical record: Smileline, or the connected practice system while the practice still charts there. Moving the record to Smileline is an adoption — a series of recorded steps, never a switch:
- Start — an owner or manager opens the adoption against the active connection. One adoption at a time.
- Freeze provider writes — nothing new is sent to the practice system. A confirmation, cancellation or booking that would reach it is refused with a clear message until the adoption completes or is aborted.
- Approve as owner — the practice owner approves, entering their password again.
- Drain in-flight work and Reconcile — outstanding sync work finishes and the two records are compared. The drain step is refused, with the counts, while any provider write or booking operation is still outstanding.
- Complete adoption — Smileline becomes the system of record and every signed-in member is refreshed. Any provider work still carrying the old authority generation parks for review instead of posting.
Abort ends an adoption that has not completed; nothing already flipped is undone. Every step is kept in the audit trail.
Connected apps
The Connected apps tab opens with Zapier: what it can trigger on, what it can create, and where a connection starts. Once the Smileline integration is listed in Zapier's App Directory, owners and managers also get Zapier's builder in the tab and create, edit and switch Zaps without leaving the page; opening it passes their name and email address to Zapier so it can sign them in. See the Zapier guide.
Beneath it, Authorised connections lists what already holds access.
A PMS connection is one kind of integration. The other is an app your practice connects itself — Zapier, or anything built on SmileLine's OAuth connections. These hold a credential that belongs to the practice rather than a personal API key, which is what makes them listable and revocable in one place.
- Only owners and managers can authorise a connection, and each one is bound to a single practice. Connect again for each practice you run.
- A connection acts as the person who authorised it: it can see and change exactly what their role allows, and its changes appear in the activity log under their name with an API key marker.
- Every role that can open Settings → Integrations can see the Connected apps tab. Owners and managers can remove any of them; anyone can remove a connection they authorised themselves.
- Disconnecting takes effect on that app's very next request, not when its token would have expired. It also switches off the webhook endpoints the connection created, releasing their share of the practice's 20 endpoints.
- Disconnecting removes access, not data. Records the app created stay; anything already copied into that app has to be deleted there.
Connected apps are listed with GET /connected-apps and removed with DELETE /connected-apps/{id} — see the Connected apps group in the API reference.
Inbound webhooks
The Inbound webhooks tab lists every Custom endpoint form: the URLs your own quizzes, forms, backends or third-party tools post leads to. Each row shows the endpoint path, whether it accepts a public browser form or signed JSON, its status and when its last lead arrived; click a row to open the form's page.
New inbound webhook starts the three-step setup (basics, one test submission, confirm the mapping). The steps, the two delivery modes and how to post are covered in Custom integrations. Forms built in SmileLine and forms detected on your website stay under Settings → Website.
Outbound webhooks
The Outbound webhooks tab lists the endpoints SmileLine delivers events to. Owners and managers see the tab; other roles do not.
Each endpoint shows its name, the host it delivers to, how many event types it carries, whether it is active, paused or not delivering, and when it last succeeded or failed. Only the host is shown in the list, never the full address, because a subscriber's URL often carries its own secret in the path. The full URL is visible when you edit the endpoint.
Create an endpoint
Click New endpoint. Give it a Name, an HTTPS URL, and tick the Events it should receive. Each group has its own tick box to select every event in it.
Save the signing secret from Save the signing secret. SmileLine shows it once and never again. Your endpoint uses it to check the X-SmileLine-Signature header on every delivery (see Verify the signature).
Click Send test. SmileLine posts a test delivery and watches for the response. When it succeeds the endpoint switches on by itself. If it fails, the card shows the HTTP status and error so you can fix the receiver and send another test.
A new endpoint stays Not delivering until one test succeeds. Real events are not queued while an endpoint is off or paused.
Manage an endpoint
- Edit changes the name, URL or events. Changing the URL clears verification and stops delivery until a new test succeeds.
- Pause holds real deliveries; Resume switches them back on. SmileLine also pauses an endpoint by itself after 20 failures in a row and says why on the card.
- Rotate secret issues a new signing secret and shows it once. The previous secret keeps working for 24 hours so you can deploy the new one; click Revoke previous as soon as your receiver has switched over.
- Deliveries opens the delivery log: every event sent to the endpoint with its status, attempts, HTTP status and any error. Replay queues the same payload again as a fresh delivery.
- Remove stops delivery and frees the endpoint's place among the practice's 20.
The same lifecycle is available through the webhooks API for teams that automate their setup.
An endpoint a connected app created is managed by that app: it cannot be edited or rotated here. Removing it frees its place among the practice's 20, but the app will create it again on its next subscription, so turn the trigger off in the app instead.