The Unaccepted Treatment Plan: The $6,000 Follow-Up Nobody in Dentistry Automates
A $6,000 implant case that goes quiet after the consult beats twenty new leads — here's how to automate the follow-up nobody in dentistry runs.
In short
Every dental practice you market for is sitting on a pile of presented-but-unaccepted treatment plans — implant cases, ortho starts, full-arch and cosmetic work — where the patient sat in the chair, heard the diagnosis, said "let me think about it," and was never contacted again. A single stalled $6,000 implant case is worth more revenue than twenty new leads at a $150 cost per lead, yet the front desk has no time to chase it and the practice-management software has no cadence to run it. This is the highest-value follow-up in dentistry and almost nobody automates it. In GoHighLevel it is completely solvable — a consult-to-case pipeline with explicit stages, a 90-day nurture cadence built around the two real objections (money and fear), financing and insurance-question sequences that remove the friction stalling the booking, and per-practice reporting that ties a recovered case back to the campaign that produced it. Build it once as a dental snapshot and it deploys to every practice client you sign, which is how a seven-person agency recovered $214,000 in treatment revenue across sixteen practices in a single quarter.
Key takeaways
- An unaccepted treatment plan is a diagnosed, priced, patient-aware opportunity — it is the warmest revenue in the practice and the only pipeline stage that requires no new ad spend to work.
- A single recovered $6,000 implant case is worth roughly twenty new leads at a $150 cost per lead, which makes unaccepted-case nurture the highest return-per-hour automation you can build for a dental client.
- Case acceptance stalls on two objections and only two — affordability and fear — so the follow-up cadence should alternate financing and reassurance rather than repeating the same "just checking in" message.
- Practice-management software tracks the treatment plan but does not run a multi-touch cadence against it, which is exactly the gap GoHighLevel fills through a nightly sync or an operatory-side export.
- Reporting on booked and accepted cases rather than raw leads is what changes an agency's retainer conversation from a cost line to a revenue line.
There is a number sitting inside every dental practice you market for that nobody looks at. It is not cost per lead. It is not cost per new patient. It is the total dollar value of treatment that has been diagnosed, priced, presented to a patient's face, and never scheduled.
In a single-doctor general practice that number is usually somewhere between two hundred thousand and half a million dollars. In a group practice with an implant or ortho focus it can be well over a million. It accumulates quietly, month after month, one "let me think about it" at a time. And in the overwhelming majority of practices, absolutely nothing happens to it.
Meanwhile the practice is paying you to run ads to find new strangers.
This post is about closing that gap. Not with better ads, better landing pages, or a smarter offer — those matter, and you probably already do them well. This is about the single highest-value automation available in dental marketing and the one almost nobody builds: a systematic, patient, multi-channel follow-up engine for unaccepted treatment plans, running inside GoHighLevel, deployable to every practice client you sign.
Why is the unaccepted treatment plan the most valuable thing you are ignoring?
Run the arithmetic honestly, because it is genuinely lopsided.
A dental practice running paid acquisition in a competitive metro — Dallas, Atlanta, Phoenix, Los Angeles — is realistically paying somewhere between $80 and $250 per lead depending on the vertical and the season. Call it $150 for a general-dentistry offer. Of those leads, maybe 60% get contacted at all if speed-to-lead is unmanaged. Of those contacted, maybe half book. Of those booked, maybe 70% actually show. So a hundred leads at $150 is $15,000 of spend producing roughly twenty patients in a chair. That is $750 per patient in the chair, before you count the practice's cost of your retainer, staff time, and chair time.
Now take one patient who was already in that chair six weeks ago. She was examined. She was diagnosed as needing a single implant with a crown. She was presented a plan at $6,000. She said what everyone says — "let me talk to my husband," or "let me check what my insurance covers," or nothing at all beyond a polite nod on the way out.
That case is worth eight times the revenue of a new lead's expected value, and it costs nothing to work. No ad spend. No new chair time until she says yes. The diagnosis is done. The relationship exists. The only missing ingredient is a decision, and decisions in dentistry are almost never a hard no — they are an indefinite postponement that hardens into a no through silence.
Here is the part that should make you uncomfortable as the agency: that silence is a marketing failure, and it is happening inside the funnel you are being paid to manage. You are optimizing the top of the funnel while the richest section of the middle leaks unattended.
The reason it goes unattended is not laziness. It is structural, and it comes down to three things.
The front desk is the busiest role in the building. A treatment coordinator or front office lead is fielding inbound calls, checking patients in, handling insurance verification, managing the schedule, chasing outstanding balances, and rebooking hygiene — all while people stand at the counter waiting. "Call back the lady who didn't accept the implant" is a task with no deadline, no alarm, and no consequence for skipping. It loses every single time to a task with a person standing in front of it.
The practice-management software does not chase. Open Dental, Dentrix, Eaglesoft and the rest will happily produce a report of presented-but-unscheduled treatment. That report is real and useful. But a report is not a cadence. Nothing in the software says "it has been fourteen days since this plan was presented, send touch three, and if she replies with a question about cost, branch her into the financing track." The software knows; it does not act.
And nobody owns the number. The doctor owns clinical. The office manager owns operations. You own marketing. Unaccepted treatment sits precisely in the seam between clinical and marketing, so it belongs to nobody — which is exactly why it is available to you.
What are the real reasons a high-value case stalls after the consult?
If you write follow-up copy without understanding why cases stall, you will produce a sequence of "just checking in" messages that get ignored, and you will conclude the whole idea doesn't work. It does work. But it only works if the messages address the actual objection.
Across implants, ortho, full-arch, and cosmetic work, stalled cases collapse into two root objections. Everything else is a surface expression of one of these.
Objection one is money. Not "it costs too much" in the abstract — almost every patient believes the treatment is worth it. The blocker is that the number was presented as a lump sum and the patient has no mental model for how to pay a lump sum they did not budget for. $6,000 is a car repair, a roof, a family holiday. It has to compete against those. When the same case is presented as $187 a month, it stops competing against the roof and starts competing against a phone bill. The patient did not change their mind about the dentistry; the frame changed.
Sitting underneath money is insurance confusion, which deserves separate treatment because it is not really a money objection at all. It is an uncertainty objection. The patient does not know what their plan covers, does not know their remaining annual maximum, does not know whether waiting until January resets anything, and does not want to commit to a number that might be wrong. Faced with uncertainty, humans default to delay. Every day the practice does not resolve that uncertainty is a day the case stays frozen — and a genuinely enormous proportion of stalled cases are stalled here, not on affordability. This is the cheapest objection in dentistry to resolve and the most commonly left unresolved.
Objection two is fear. Dental fear is real, widespread, and rarely stated out loud, because adults find it embarrassing to admit. It never presents as "I'm frightened." It presents as "I'm really busy right now," or "let me get through the holidays," or simply a patient who stops replying. Fear responds to exactly one thing — evidence that other people like them went through it and were fine. Not clinical explanation. Not reassurance from the practice. Social proof, ideally from a patient with a similar case.
There is a third, weaker factor worth naming: time and life logistics. Some patients genuinely have a wedding, a house move, a sick parent, or a work crunch. This objection is not persuadable and should not be pushed. It should be parked, respectfully, with an explicit date to come back — which is a capability your automation must have, because a system that cannot gracefully park a case will burn the relationship on cases that were going to convert three months later.
The practical consequence for your build is this: a single linear follow-up sequence cannot work, because it cannot address two different root objections. The cadence has to branch. That branching logic is most of the value in what follows.
What does the consult-to-case pipeline actually look like in GoHighLevel?
Most dental sub-accounts you inherit have one pipeline called something like "New Patient Leads" with stages named New, Contacted, Booked, Show, and Won. That pipeline is fine for acquisition and useless for case acceptance, because it treats "showed up" as the end state. In high-value dentistry, showing up is roughly the halfway point of the revenue journey.
You need two pipelines, and they need to be genuinely separate objects in the sub-account, not stages bolted onto the end of one another. The reason is reporting: mixing acquisition and case acceptance in one pipeline makes it impossible to report clean conversion rates on either, and clean reporting is the whole point of the exercise.
Pipeline one — New Patient Acquisition. This is your existing funnel and it ends where it should. Stages: New Lead, Attempting Contact, Contact Made, Consult Booked, Consult Confirmed, Consult Attended, No-Show. When an opportunity hits Consult Attended, this pipeline's job is finished and it hands off.
Pipeline two — Treatment Case Pipeline. This is the one nobody builds. Stages, in order:
Consult Completed. The patient has been seen and examined. No plan presented yet, or the plan is being prepared. Cases sit here for hours or a day at most.
Plan Presented. The specific treatment and the specific price have been put in front of the patient. This is the moment that matters and the moment that must be captured accurately, because everything downstream is timed from it. This stage requires an opportunity value — the dollar amount of the plan — and a custom field recording the procedure category and the presentation date.
Accepted — Scheduled. The patient said yes and has an appointment on the books. This is your won-adjacent stage, though for revenue-recognition honesty you may want to keep it separate from completed treatment.
Pending Decision. The patient did not say yes and did not say no. This is where the money is. Every case here is live. Most practices have never had a stage like this exist as an explicit object, which is precisely why these patients evaporate.
Financing Discussion. Branched out of Pending Decision when the stall is money. The patient is engaged on how to pay, not whether to proceed. Cases here have a materially higher close rate than undifferentiated pending cases and deserve their own cadence and their own coordinator attention.
Insurance Verification. Branched out of Pending Decision when the stall is coverage uncertainty. This stage has a hard operational requirement — someone at the practice must actually produce an answer. Automation cannot resolve an insurance question; it can only make sure the question does not sit for eleven days.
Nurture — Long Term. For cases where the patient has explicitly said "not now, but later," or where the 90-day cadence has completed without a decision. This is a slow drip, not a chase. Monthly at most.
Declined. Explicit no. Suppressed from active nurture, retained for annual reactivation only. You must have this stage and you must actually use it, because a system that never lets a patient out is a system that generates complaints.
Won — Treatment Completed. Closed, with the value recorded.
Two things about this pipeline are non-obvious and both matter enormously.
First, the opportunity value must be populated at Plan Presented, not at Won. If you only record dollars when a case closes, you can never report on dollars at risk, dollars recovered, or recovery rate — the three numbers that make your monthly report indispensable. Make the value a required field in whatever mechanism creates the opportunity.
Second, entry into Plan Presented has to be near-automatic or it will not happen. If it depends on a busy treatment coordinator remembering to create an opportunity, you will get sixty percent capture on a good week and the whole system will underperform for reasons that look like the automation's fault. The three workable approaches, in order of preference: a direct sync from the practice-management system's unscheduled-treatment report where an integration exists; a scheduled CSV export the office manager runs on a fixed weekday and drops into a watched location for import; or a thirty-second internal form the coordinator completes on a tablet before the patient leaves the operatory. The third option sounds fragile but works surprisingly well when the form is genuinely short — patient, procedure category, value, presented date, and a single dropdown for perceived objection. That last field is worth more than the other four combined, because it drives the branch.
What does the follow-up cadence look like, day by day?
Here is a 90-day cadence that works. Treat it as a starting architecture rather than gospel — the intervals are more important than the exact copy, and the practice's own approved language and compliance process plugs into the system in place of anything clinical you might be tempted to write yourself.
All timing is measured from the Plan Presented date. All messages come from the practice's own number, signed by the treatment coordinator by name.
Day 0, within two hours of the patient leaving. SMS. Not a sales message — a summary. The patient has just absorbed a lot of information and remembers about a third of it. Send a short recap of what was discussed and a link to a page with the plan details, financing options, and the practice's own written explanation of the procedure. This single touch does more work than the next five combined, because it prevents the number from becoming vague and frightening in the patient's memory over the following week. Use a merge field like {{contact.first_name}} and keep the tone conversational.
Day 2. Email. The financing frame, delivered without pressure. This is where the lump sum becomes a monthly figure for the first time in writing. If the practice offers third-party financing, this email carries the application link. If they offer in-house membership or payment plans, it carries those terms. The subject line should not mention money — it should reference the treatment conversation.
Day 5. Phone call, as a task assigned to the treatment coordinator inside GoHighLevel, not a message. This is the highest-value human touch in the whole cadence and it is the one most likely to be skipped, so make the task unmissable — assign it, set a due date, and build an internal notification if it goes uncompleted for 24 hours. The call has one job: find out which objection is live. The coordinator is not selling; she is diagnosing. Whatever she learns gets recorded in the objection field, and that field triggers the branch.
Day 8, branched. From here the cadence splits.
Money branch. Day 8 is a case study — an anonymized story of a patient with a similar treatment, what it cost per month, and what changed for them. Day 14 is a direct, plain offer to run the numbers together, with a booking link for a fifteen-minute financial conversation that is explicitly not a clinical appointment. That distinction matters more than it sounds; patients who will not book a treatment appointment will happily book a conversation about money because it does not commit them to anything. Day 21 is the pre-approval nudge — most third-party dental financing offers a soft-pull pre-qualification that does not affect credit, and telling the patient this removes the last friction point.
Fear branch. Day 8 is social proof — a short video from the doctor or, far better, a patient testimonial from someone who describes having been nervous. Day 14 addresses the specific process in the practice's own approved language, particularly around comfort options. Day 21 offers the lowest-commitment next step available, which is usually a no-obligation conversation with the doctor rather than any procedure. Never push a fear-branch patient toward booking treatment directly; you push toward a conversation, and the conversation converts.
Insurance branch. This branch runs on a different clock because it depends on the practice acting. Day 8 is an internal task, not a patient message — verify the patient's remaining benefit and produce a written breakdown. Day 10 is the patient message delivering that breakdown, in specific numbers. If the patient has unused annual maximum, say so plainly and note the date it resets. That single message closes cases at a rate that surprises people the first time they run it, because it converts an unknown into a number and gives a real deadline that the patient did not invent.
Day 30. All branches reconverge. One thoughtful email from the doctor, not the coordinator, referencing the clinical reason the treatment was recommended — again in the practice's own approved language. This touch is not a sales message and should not contain a booking link in the first paragraph.
Day 45. A single SMS with a genuinely low-friction question. Something close to "Are you still thinking about moving forward this year, or should I check back after the new year?" This message has the highest reply rate in the entire cadence, because it offers the patient a graceful exit, and offering a graceful exit is what makes people answer honestly. Both answers are useful. "Still thinking" keeps them active. "Check back later" moves them to Nurture — Long Term with a scheduled return date, which is a far better outcome than silence.
Day 60. Value-first content. A seasonal angle works well here — benefits expiring at year end, or a new-year framing in January. No hard ask.
Day 90. The final active touch, followed by an automatic move to Nurture — Long Term. Monthly practice-newsletter cadence from here, plus a re-entry trigger if the patient ever books a hygiene visit, at which point they should re-enter the active cadence because they are physically back in the building and the coordinator has a live opportunity.
Three rules that govern the whole thing.
Reply detection must pause everything, immediately. The moment a patient sends an inbound SMS or email, all automated touches stop and a task fires for the coordinator. Nothing torches a relationship faster than an automated message arriving twelve hours after a patient sent a real reply.
Channel mix should be roughly forty percent SMS, forty percent email, twenty percent phone, and phone must never be dropped as "the automation handles it." The calls are what close.
And the cadence must decay. Days 0 through 21 are dense. Days 30 through 90 are sparse. A cadence with constant frequency reads as harassment by week four.
How do you handle insurance questions without them freezing the booking?
This deserves its own treatment because it is the most common friction point in the entire dental funnel, and it does not only affect unaccepted cases — it blocks new patients at the booking stage too.
The pattern is identical in both places. The patient asks a coverage question. The question requires a human to check something. The human is busy. The patient waits. The patient's motivation decays. The case freezes. Nobody at the practice experiences this as a lost case, because nothing visibly happened.
The fix has three parts and none of them are clever.
Capture the question the moment it appears. Build insurance questions into your forms as an explicit field rather than leaving them to arrive as free text. On the new-patient funnel, ask for the carrier as a dropdown of the practice's most common plans plus an "other" option. On any inbound SMS containing insurance-related keywords, trigger a workflow that tags the contact and creates a task. The point is that an insurance question should never exist only as a sentence in a conversation thread that someone has to notice.
Answer the answerable automatically, and only the answerable. There is a genuine class of questions that has a fixed, correct, practice-approved answer — which plans are in network, whether the practice files claims on the patient's behalf, what happens if a plan is out of network, whether financing exists for the uncovered portion. Those answers belong in an auto-response library that fires within seconds, using the practice's own approved wording. There is a second class — this specific patient's remaining benefit, their exact out-of-pocket for this specific plan — that no automation should ever attempt to answer. Route those to a human task with a service-level target, and make the automated acknowledgment honest about it: confirm receipt, give a timeframe, and hold the patient's attention while the human works.
Put a clock on the human step. A task with no deadline is a task that ages. Set an internal SLA — four business hours is realistic for verification — and build an escalation notification when a verification task exceeds it. Then report on it monthly. Average verification turnaround is one of the most quietly persuasive numbers you can put in front of a practice owner, because they have never seen it measured and it always turns out to be worse than they assumed.
One more piece worth building because it converts unusually well: the annual maximum expiry campaign. Most dental plans have an unused annual benefit that vanishes on December 31. Every patient sitting in Pending Decision with unused benefit has a real, non-manufactured deadline. A campaign that runs from mid-October through early December, segmented to exactly those patients, with a specific dollar figure of benefit at risk where the practice can supply it, routinely produces the single best month of case acceptance in the year. Build it once into the snapshot and it fires annually with no further work.
How do recall and reactivation fit into the same machine?
Unaccepted treatment plans are the headline, but they sit inside a larger truth about dental practices: the patients who are already in the database are worth more than the ones outside it, and almost none of that database is being worked.
Two adjacent systems belong in the same snapshot.
Recall and hygiene reminders. Every practice has patients overdue for a hygiene visit. Most practice-management systems can generate a recall list; few run a persuasive multi-touch sequence against it. Build a straightforward cadence — a reminder at the due date, a follow-up at two weeks overdue, a warmer message at six weeks with a direct booking link, and a final touch at three months that frames it as reconnecting rather than nagging. Route it through the online booking calendar so the patient can self-schedule without a phone call, because the phone is a friction point for exactly the patients who have been avoiding the practice.
This matters to your case-acceptance system for a reason that is not obvious: a returning hygiene patient is a case-acceptance opportunity. A patient with a stalled implant plan who comes in for a cleaning is sitting in a chair, in the building, in front of a clinician. That is the single best moment to revisit the plan, and your automation should make sure the coordinator knows it is coming. Build a trigger so that when a patient with an open opportunity in Pending Decision books any appointment, an internal notification fires to the coordinator with the case details attached. That one trigger is close to free and converts better than anything else in the build.
Reactivation of the dormant. Patients who have not been seen in eighteen months or more are a different population — they need a reason to come back, not a reminder. A four-touch reactivation campaign over six weeks, ideally carrying a genuine reason such as new technology, a new provider, or a new-patient-equivalent offer where the practice permits it, will typically reactivate a low single-digit percentage of a dormant list. On a list of two thousand dormant patients that is twenty to forty patients back in the chair, some fraction of whom carry diagnosable treatment.
No-show rescue belongs here too, because a no-show on high-value chair time is the most expensive single event in a practice's day. An implant consult slot that goes empty is not just lost revenue — it is unrecoverable time. Build a three-stage system: confirmation sequence at 72 hours, 24 hours, and 2 hours before the appointment with a one-tap confirm; an immediate rescue workflow that fires within fifteen minutes of a missed appointment with a warm, non-judgmental rebooking link; and an internal alert so the front desk can attempt to fill the slot from a short-notice list. The rescue message tone matters — patients who no-show are usually embarrassed, and a message that sounds like a reprimand converts at a fraction of one that sounds like a genuine offer to reschedule.
Post-appointment review requests round out the snapshot, and they feed the top of the funnel in a way that compounds. Fire a review request 24 hours after a completed appointment, gated so it only goes to patients whose visit was routine, and route it to the practice's primary review platform. Reviews mentioning specific high-value procedures are disproportionately valuable because they are exactly what a patient researching implants searches for — and because they become the social proof your fear-branch nurture sequence needs.
How did a seven-person agency recover $214,000 in a quarter?
Bright Harbor Dental Marketing is a seven-person agency serving sixteen dental practices, mostly general dentistry with implant and cosmetic focus, spread across three metros. Standard structure — two account managers, an ads buyer, a designer, two coordinators, and a founder still doing sales.
Their problem was not lead generation. Their ads worked. Their problem was that three of their sixteen practices had quietly started questioning the retainer, because the practices could not connect what they were paying to anything that showed up in their bank account. The practices saw leads. They did not see revenue. And when a practice cannot see revenue, the retainer becomes the easiest line item to cut.
The founder ran an experiment with a single practice — a two-doctor general practice in a Phoenix suburb doing a meaningful volume of implants. He asked the office manager for a report of presented-but-unscheduled treatment going back twenty-four months. The report came back with 312 patients and just over $1.4 million in presented value.
Nobody had ever pulled that report before.
The build took about three weeks in one sub-account. They created the Treatment Case Pipeline with the stages described above, imported the 312 cases with values and presentation dates, and had the office manager add a perceived-objection value to as many as she could remember — she managed about 140 of them, which was enough to seed the branching. Everything without an objection tag went into a generic track that started with the day-5 diagnostic call.
They ran the backlog in three waves, forty to sixty cases at a time, deliberately staggered so the practice's single treatment coordinator was not buried in replies. This staggering was the operational decision that made the whole thing work; the first version of the plan had been to load all 312 at once, and it would have generated more inbound conversation than one person could handle, which would have looked like the automation failing when it was actually the automation succeeding too fast.
Results from that first practice over roughly ninety days: 312 cases worked, 187 patients engaged in some form (replied, called back, or clicked through), 34 cases moved into an active stage of Financing Discussion or Insurance Verification, and 19 cases accepted and scheduled. Total recovered value $147,000. The single largest was a full-arch case at $31,000 from a patient who had been presented eleven months earlier and, in her own words on the phone with the coordinator, "assumed they'd forgotten about me."
The insurance branch was the surprise. Of the 19 accepted cases, 7 came out of Insurance Verification — patients who had frozen on coverage uncertainty and unfroze the moment somebody gave them an actual number. Those seven cases required no persuasion whatsoever. They required an answer to a question that had been sitting unanswered for months.
Bright Harbor then did the thing that made this a business change rather than a one-off win: they turned the whole build into a snapshot and deployed it to the other fifteen practices over the following six weeks. Deployment per practice ran two to four hours — mostly spent on the practice-specific message library, the financing options that practice offered, and the export process from whichever practice-management system they ran.
Across the full portfolio in the following quarter, recovered treatment revenue came in at $214,000. Not evenly distributed — three practices produced more than half of it, and two produced almost nothing because their office managers never reliably ran the export. That variance is worth stating plainly, because it is the honest lesson: the system's performance is capped by the quality of the case data going into it. Where the practice fed it, it worked. Where the practice did not, it sat idle.
Two commercial outcomes followed. The three at-risk practices stopped questioning the retainer, because the monthly report now had a recovered-revenue line on it. And Bright Harbor raised prices on new practice contracts, positioning case recovery as the headline deliverable and lead generation as the supporting act. Their close rate on new business went up, not down — because "we recover the treatment revenue you already diagnosed" is a fundamentally more compelling pitch to a practice owner than "we run your Facebook ads."
What should a solo dental SMMA operator build first?
If you are a one-person operation with two or five practice clients, everything above is correct and most of it is more than you should attempt in month one. The failure mode for solo operators is not building the wrong thing — it is starting five things and finishing none, then concluding the approach does not work.
Here is the order.
Week one — get the number. Pick your best client relationship, the practice where the office manager will actually take your call. Ask for the unscheduled treatment report. Do not pitch anything yet. Just get the number and put it in front of the practice owner. In most cases the conversation ends with the owner asking you what can be done about it, which is a materially better position to sell from than any deck you could build.
Weeks two and three — build the pipeline and the money branch only. One pipeline, the stages listed earlier. One nurture branch, the money objection, because that is where the largest share of recoverable dollars sits. Skip the fear branch. Skip the insurance branch. Skip recall, reactivation, no-show rescue, and reviews entirely for now. You are building the smallest thing that can produce a recovered case.
Run it semi-manually at first. Let the automation send day 0, day 2, and day 8, and handle the day-5 call yourself or with the coordinator on a shared task list. You will learn more from twenty real replies than from any amount of sequence planning, and the copy you write in week four will be much better than the copy you would have written in week two.
Weeks four through six — add the insurance branch. It is the highest-yield addition per hour of work, for the reason Bright Harbor found: it converts patients who require no persuasion at all, only information. It also requires the least copywriting, because most of it is internal task routing plus one template that delivers a number.
Weeks six through eight — template it. Save the sub-account as a snapshot. This is the step that converts your effort from a client deliverable into an asset. Everything you build after this point should be built once and pushed, never rebuilt.
Month three onward — layer in the rest in this order: no-show rescue (fastest visible win, and practice owners feel no-shows viscerally), review requests (feeds the fear branch and the ad funnel simultaneously), recall (steady volume), then reactivation (largest list, slowest payoff).
A few things specific to operating solo that are worth saying directly.
Do not offer to run the practice-management export yourself. You will end up as the bottleneck for every client, and it does not scale past three practices. Train the office manager to run it on a fixed weekday, and build your process around the assumption that it will sometimes be late. A weekly cadence with occasional gaps beats a daily cadence that depends on you.
Price the build, not the hours. A dental snapshot build in the range of a thousand dollars as a one-time setup, with three hundred to eight hundred a month ongoing depending on scope, is defensible to a practice that has just been shown a $400,000 unscheduled-treatment figure. It is not defensible as an hourly rate, and you should not present it that way.
Sell the second client with the first client's report. The recovered-revenue number from practice one is the only sales asset you need. Anonymize it and lead with it. Practice owners talk to each other, and a specific dollar figure from a comparable practice in a comparable market outperforms any general claim about marketing.
Resist the urge to customize per practice. Every practice will ask for something bespoke. Say yes to the message library — that genuinely must be theirs, in their approved language — and default to no on structural changes to pipelines, stages, and workflow logic. The moment your sixteen sub-accounts have sixteen different structures, you have sixteen products and no leverage.
How do you prove which marketing produced an actual booked case?
This is the question that decides whether your retainer survives a bad quarter, and it is worth building for deliberately rather than assembling at report time.
The core problem is that dental marketing attribution usually stops at the lead. You can tell a practice how many leads a campaign produced and what they cost. You typically cannot tell them how many of those leads became patients who accepted treatment, and what that treatment was worth. So the practice evaluates you on cost per lead — a metric that has almost nothing to do with their profitability — and you have no defense when a competitor quotes a lower one.
Fixing it requires that source data survive the entire journey. Three mechanics do most of the work.
Stamp the source at capture and never let it be overwritten. Set custom fields for source, campaign, and first-touch date on the contact record at the moment of form submission or first inbound call. Use a tracked number per campaign so phone leads carry attribution too — phone is a large share of dental inbound and losing its attribution guts the report. Configure your workflows so these fields write only if empty, otherwise a later touch will overwrite the original source and every long-cycle case will appear to have come from whatever channel touched it last.
Carry the attribution across the pipeline handoff. When an opportunity moves from the acquisition pipeline into the Treatment Case Pipeline, the attribution fields must come with it. This is the step most commonly missed, and its absence is why so many agencies can report on booked consults but not on accepted cases.
Report on dollars, not counts. Your monthly practice report should lead with four numbers, in this order: treatment presented this period, treatment accepted this period, treatment recovered from the nurture system, and recovery rate. Then a segment showing recovered value by original source. That segment is the argument for next year's budget, because it demonstrates that some channels produce patients whose cases are recoverable and others produce patients who never accept anything.
Underneath, show operational metrics — speed to first contact, average insurance verification turnaround, no-show rate, and rebook rate on rescued no-shows. These are the numbers that show the practice you are running an operation and not just buying media.
Build the report once as a dashboard in the snapshot and every practice you deploy to inherits it. The compounding effect over a portfolio of sixteen practices is that your monthly reporting burden approaches zero while the perceived value of your reporting goes up — which is a rare combination and worth engineering for deliberately.
What does this look like as a productized dental offer?
Assembled, the deliverable is a single reusable dental snapshot containing: a new-patient funnel with an insurance-question field built in; speed-to-lead call and SMS so a new enquiry gets contacted in under five minutes rather than the next business day; a consult booking calendar with confirmation and reminder sequences; the Treatment Case Pipeline with all stages configured and opportunity values required; the branched unaccepted-case nurture with money, fear, and insurance tracks; the annual maximum expiry campaign; recall and hygiene reminders; a dormant-patient reactivation campaign; no-show rescue with pre-appointment confirmations and post-miss recovery; post-appointment review requests; and a per-practice reporting dashboard built around presented, accepted, and recovered dollars.
Setup lands around a thousand dollars per practice. Ongoing management runs three hundred to eight hundred a month depending on the number of sub-accounts and how much campaign work sits alongside it.
The reason this productizes well is that the build is genuinely identical across practices at the structural level and genuinely different only at the message level. Pipelines, stages, triggers, timing, task routing, and reporting are the same for a Dallas implant practice and a Manchester cosmetic clinic. What differs is the copy library, the financing options, the review platform, and the practice's own approved language and compliance process — all of which plug into the system as configuration rather than as rebuild.
That is the whole leverage argument. If every practice client is rebuilt from scratch, your sixteenth client costs the same to onboard as your first and you have built a services business with no assets. If the structure is a snapshot and only the language changes, your sixteenth client onboards in an afternoon and every improvement you make to the cadence propagates across the portfolio.
And the entry point into that conversation is not a pitch. It is a question you can ask any practice owner in your pipeline tomorrow: how much treatment did you diagnose last year that never got scheduled?
Most of them will not know. Getting them the number is the beginning of the engagement.
If you want the dental snapshot built, configured, and deployed across your practice clients — pipeline, cadence, insurance handling, recall, and per-practice case reporting — that is exactly what GHL Spark does. Book a build call and we will scope it against your current client roster.
Frequently asked questions
What exactly counts as an "unaccepted treatment plan" and how is it different from a lead?
Doesn't the practice-management software already handle treatment plan follow-up?
How do we handle the list of unaccepted cases without getting into compliance trouble?
What is a realistic recovery rate on unaccepted treatment plans?
Should the follow-up messages come from the agency or from the practice?
How do we prove the recovered revenue actually came from our system?
I am a solo operator with three practice clients. Is this too much to build?
What does this typically cost to have built and run?
About the author

Farhad
Founder, GHL Spark
Farhad is the founder of GHL Spark, where he builds and white-labels GoHighLevel SaaS platforms for agencies and SaaS operators. He writes about the parts of GoHighLevel that actually break in production — A2P registration, onboarding, support load and automation.