An empty chair at 3pm is not a cost you recover. Unlike unsold inventory, an appointment slot expires at the moment it passes. For most small clinics and salons the no-show rate sits somewhere between 10% and 20%, and every point of it is pure margin.
Reminders work. What usually fails is the *implementation* β one message, sent too early, from a number nobody recognizes, asking for nothing.
The cadence
| When | Message | Purpose |
|---|---|---|
| At booking | Confirmation with date, time and service | Anchors the appointment while intent is high |
| Evening before, 5β7pm | Reminder with a confirm or reschedule option | The intervention. This is the one that matters. |
| Two hours before (optional) | Short nudge with directions or parking | Only for high-value or first-time appointments |
The evening-before message does most of the work, and the timing is not arbitrary. Send it at 9am and it is buried by lunch. Send it at 9pm and it is read half-asleep. Between five and seven, people are looking at tomorrow.
Ask for something answerable
Ridge Dental
iMessage
Hi Dana β Ridge Dental. You're booked tomorrow at 2:00pm for a cleaning. Reply C to confirm or R if you need to move it.
C
Confirmed π See you tomorrow. We're at 14 Oak St, parking's behind the building.
The reply is the point. A confirmation is a small commitment, and small commitments are kept at meaningfully higher rates than unacknowledged ones. It also gives you something reminders alone never do: an early warning. A customer who replies R at 6pm the night before is a slot you can still fill.
The reschedule reply is worth more than the confirmation
A confirmed appointment was probably going to happen anyway. A reschedule twelve hours out converts a certain no-show into a filled slot β provided somebody sees the reply and acts on it. Decide who that is before you launch.
Filling the gap when it happens anyway
Cancellations still occur. A same-day waitlist message turns a two-hour warning into revenue.
Ridge Salon
iMessage
Opening today at 3:00pm with Ana β first to reply gets it.
Me! I'll take it
It's yours. See you at 3 π
Track this as its own play with utm_campaign=waitlist-fill and measure percentage of cancellations refilled. It is often the highest-return message a clinic sends. Setting up the tagging takes ten minutes.
Rebooking: the play nobody runs
Reactivating a past patient or client is dramatically cheaper than acquiring a new one, and almost no small practice does it systematically. Trigger on time since last visit and reference the specific service β a generic *we miss you* reads as bulk mail and gets treated accordingly.
Ridge Dental
iMessage
Hi Jordan β it's been about six months since your last cleaning. Want me to hold a Tuesday or a Thursday?
Thursday, later in the day if you have it
The compliance dimension, which is not optional here
Healthcare raises the bar
Appointment reminders that reference a condition, a specialty, or a treatment can constitute protected health information. If you are a covered entity, that changes which providers you can use and what your agreement with them has to say β Sendblue lists HIPAA under its enterprise tier. Keep reminder copy generic, and take this one to a lawyer rather than a blog post. More on the compliance shape.
Beyond that: consent, quiet hours, and opt-outs that respond to plain English rather than only the word STOP. In a conversational channel, a patient who replies *please stop texting me* has opted out, and treating that as an unrecognized keyword is both bad practice and legally indefensible.
Measuring it
Four numbers, tracked weekly
- No-show rate, versus the equivalent period before you started
- Confirmation reply rate on the evening-before message
- Percentage of cancellations refilled from the waitlist
- Reactivation rate by months-since-last-visit
Sector-specific versions of this playbook are worth reading if they apply to you: dental practices, chiropractic and physical therapy, and optometry each have a different revenue mechanic underneath the same reminder cadence.
If the no-show rate does not move within six weeks, the problem is the timing or the ask, not the channel. Read receipts will tell you which β delivered-but-unread points at timing; read-but-unanswered points at the ask.