Home / Dental Practices / Overdue recall and reactivation texts with a call list (Open Dental recall list)

Dental Practices problem 3: Patients fall overdue for recall and hygiene chairs sit empty

Overdue recall and reactivation texts with a call list (Open Dental recall list)

Verified with mocksLast tested 2026-10-28 · pricing checked October 2026

Each weekday morning the workflow reads Open Dental's recall list for patients who are past due and not booked, sends up to three generic reminders 14+ days apart ('it's time to book a checkup', with your online booking link) and records each one on the recall the same way Open Dental's own recall list does. Families sharing a phone get one text. Patients without text consent, and those who got three reminders and still didn't book, go on a call list.

The problem

An unfilled hygiene slot is lost production, and staffing makes it harder to fill: most practices say hygienists are hard to hire, so every booked chair counts.

Who it's for

US dental offices on Open Dental whose recall list is longer than the front desk can work by phone, and who don't already use Open Dental's automated recall messages.

Tools and monthly cost

ToolOfficial price
Twilio US SMS, sent or received$0.0083 per 160-character segment, plus carrier fees of about $0.0035-$0.005 per segment pricing page
Open Dental API (per location, paid by whoever holds the developer key)Free: Read All only (1 request per 5 s). $15 / month: adds Comm, InsuranceSimple and others (1 request per second). This recipe writes commlogs or recall status, so it needs the $15 tier pricing page
Google Workspace with the HIPAA BAA accepted (call lists and logs live in Google Sheets)Any paid Workspace edition (not the legacy free edition) can accept Google's BAA in the Admin console; Sheets is covered. You probably already pay for Workspace pricing page
n8n, self-hostedCommunity Edition is free; you pay for the server. n8n Cloud is not an option here: n8n staff said in January 2026 that n8n does not offer a BAA for Cloud pricing page
Twilio HIPAA account (only if any text could contain PHI)Requires Twilio Security Edition or Enterprise Edition plus a signed Business Associate Addendum; priced by Twilio Sales (no public price) pricing page

Example month: Illustrative arithmetic. Assume 300 overdue patients sharing 220 phone numbers with text consent, one reminder each this month: 220 one-segment texts = $1.83 plus carrier fees of $0.77-$1.10. Open Dental API $15 per location (recall status writes need the Comm permission). Twilio number shared with the missed-call recipe. About $18 a month plus your n8n server.

Setup

  1. Read the 'HIPAA, TCPA and BAAs' section on the dental hub first. Turn off Open Dental's automated recall texts (or don't use this recipe) so patients aren't reminded twice.
  2. Use the Twilio number, A2P campaign and SMS webhook from the missed-call recipe.
  3. Give the workflow an Open Dental API key with the $15 tier. Optionally set RECALL_STATUS_TEXTED_DEFNUM to the definition number of your 'Texted' recall status so it shows on the recall list.
  4. Set RECALL_MIN_OVERDUE_DAYS (default 30) and RECALL_LOOKBACK_MONTHS (default 24: older lapses are left for a personal call), plus PRACTICE_SHORT, PRACTICE_PHONE, WEB_SCHED_URL and PRACTICE_TZ.
  5. Create the call-list Sheet in BAA-covered Google Workspace and swap the mock sheet URL for n8n's Google Sheets node. The workflow also has a manual 'run now' webhook used by our tests. Delete it, or put it behind n8n's header authentication, before you go live.

Download

Download dental-overdue-recall-reactivation.zip

Contains the n8n workflow, the mock data, the test runner with its last results, and the mock server we tested against. All keys in .env.example are fake.

Test result

Every workflow was imported into n8n 2.45.4 and run end to end on our test machine. Open Dental's API, Twilio, Stedi, Google Sheets and the email sender (Resend) were replaced by a local mock server built from their official API docs: it checks the same request shapes and required fields, enforces Open Dental's request throttle (HTTP 429) and records every call. We also compared the mock's field names with Open Dental's public test database (read-only GET requests with the test key Open Dental publishes, no writes). These recipes use no AI model; every decision is a written rule. Patients, plans and phone numbers are invented. Verified with mocks; no real patient data used, and nothing was sent to a real phone, patient, payer or account.

4/4 scenarios passed (run 2026-10-28)

PASSR1Overdue recalls: one text per family phone (two kids, one number), call list for no-consent / 3-reminder patients, booked and recently reminded skipped
PASSR2Next day: nothing new (14-day gap, daily cap)
PASSR3Two weeks on: family texted STOP (Open Dental TxtMsgOk = No) -> call only; patient who replied -> call only; 2nd reminder to others
PASSR4Patient books (appointment added): drops off the list; 429 from Open Dental handled

Actual output from the test run

Scenario R1: the reminder text and the first call-list rows (invented patients). Names and numbers are invented.

R1: Maple Grove Dental: it's time to book a checkup. Pick a time: https://example.com/maple-grove/book or call +15555550100. Reply STOP to opt out.

Call list:
[
 {
  "run": "2026-11-09",
  "patient": "Leo Lopez",
  "PatNum": 112,
  "phone": "+15555550201",
  "recall": "Prophy",
  "due": "07/15/2026",
  "reminders_before": 0,
  "action": "Covered by family text"
 },
 {
  "run": "2026-11-09",
  "patient": "Frank Odum",
  "PatNum": 106,
  "phone": "+15555550206",
  "recall": "Prophy",
  "due": "09/20/2026",
  "reminders_before": 0,
  "action": "Call (opted out of texts)"
 },
 {
  "run": "2026-11-09",
  "patient": "Grace Kim",
  "PatNum": 107,
  "phone": "+15555550207",
  "recall": "Prophy",
  "due": "09/01/2026",
  "reminders_before": 0,
  "action": "Texted (reminder 1 of 3)"
 }
]

Verified with mocks

  • Overdue, unbooked recalls: one generic text per phone number (two children on one parent's number get one text), under 160 characters, ending 'Reply STOP to opt out'.
  • Patients with TxtMsgOk = No, and those who already had 3 reminders, go to the call list instead; booked and recently reminded patients are skipped.
  • Next-day re-run sends nothing new; the 2nd reminder goes out 14+ days later.
  • A family that texted STOP (TxtMsgOk = No in Open Dental) and a patient who replied become call-only.
  • A patient who books drops off; Open Dental 429 replies are retried; each text is written to the recall with PUT recalls/Status.
  • Verified with mocks; no real patient data used.

Documented from official API docs only

Built to the vendor's documentation but not run against a live account. Check these on yours.

  • Open Dental API v1 recalls/List (and its date and string formats, compared with the public test database), recalls/Status PUT, patients and appointments (from Open Dental's API docs).
  • Twilio Messages API (from Twilio's docs).

Limitations

  • Reactivation texts to patients who have not been in for a long time may be closer to marketing than to a treatment reminder. Your compliance officer should decide the lookback window.
  • Built for Open Dental only. Dentrix, Eaglesoft, Curve and NexHealth versions are not built, and we make no claim that this works with them.
  • Business associate agreements are your job: self-host n8n on infrastructure covered by a BAA (n8n does not offer one for n8n Cloud), accept Google's Workspace BAA before any patient name goes into a Sheet, and ask your compliance officer whether your texting setup needs Twilio's HIPAA offering (Security or Enterprise Edition plus a BAA, sales-quoted). Patient replies can contain health details even when our texts do not.
  • Not a compliance guarantee. We designed around HIPAA and the TCPA (generic texts with no treatment, fee or name; consent from Open Dental; staff lists kept in BAA-covered Google Workspace), but whether your setup is compliant depends on your contracts, your server and how your staff use it. Check with your compliance officer or counsel and your state dental board before you turn it on.