Reminders are sending and no-shows are flat: finding the step that fails
In short
A reminder fixes exactly one cause of non-attendance: forgetting. Join your send logs to actual attendance and test 4 gates in order — the message arrived, it was read, the patient still intended to come, the patient was able to come. A flat rate almost always fails at the last 2, where wording cannot reach.
Key takeaways
- Delivery and attendance are usually stored in 2 systems that have never been joined, so nobody can say which gate is failing.
- A confirmation reply proves the message was read. It proves nothing about the patient's ability to attend 3 days later.
- Contact data decays continuously, and a clinic with no bounce handling is sending a growing share of its reminders to nobody.
- If the reply path is one-way, every reminder that reaches a patient who cannot come turns into a no-show instead of a released slot.
- Some of the residual rate is capacity design, not messaging: the correct response is a release rule and controlled overbooking.
Before anyone rewrites a message, join the send log to attendance and measure the funnel. A reminder fixes one cause of non-attendance — forgetting — and nothing else. A number that reaches no handset, a message delivered into an ignored folder, an intention that dies when a shift changes, a bus that does not run: each sits behind a gate a better sentence cannot open. Clinics reporting a flat rate after a reminder rollout almost never know which gate is closed, because the messaging platform holds delivery, the practice system holds attendance, and the 2 have never met.
The second thing to accept is that the rate you are watching is a blend. New patients, follow-ups the patient privately thinks are unnecessary, procedures whose preparation was never completed, and slots booked so far ahead that the reason has resolved itself all sit inside one percentage. They fail for different reasons and respond to different fixes.
Put the send log and the attendance record in one table first
The confirming check is a join, not a survey: one row per appointment, carrying every message sent against it and the outcome of the visit. Most clinics find they cannot do it at all, because the reminder platform keys on a phone number, the practice system keys on a patient identifier, and nobody kept the appointment identifier on the message. That inability is the first finding.
- Take one closed month, all sites, every appointment. Not a sample of the ones you remember, and not the current month, which is still moving.
- Attach every outbound message to its appointment, with the send timestamp and the delivery status the channel returned. Undelivered, unknown and delivered are 3 values and must not collapse into sent.
- Attach inbound replies to the same row. Confirmation, cancellation, reschedule request and unparsed text are 4 outcomes, and the last usually means no human ever saw it.
- Add the appointment attributes that split the blend: new versus follow-up, visit type, lead time in days between booking and appointment, provider, and site.
- Compute attendance by delivery status, then by reply status, then by lead time. Read them in that order — a difference at the first cut makes the later cuts meaningless until it is fixed.
- Count the rows where no message was sent at all. On most first runs this is larger than anyone expects, and it is a configuration finding rather than a behavioural one.
4 gates a reminder has to pass, and how each one fails visibly
| Gate | What must be true | Signature when it fails | Where the evidence sits |
|---|---|---|---|
| Arrival | The message reached a device the patient uses | Undelivered or unknown status, hard bounces clustered on older records | Channel delivery reports, joined per appointment |
| Attention | The patient noticed and read it | Delivered with no reply and no behaviour change, worst on unknown sender numbers | Reply rate and portal open events by cohort |
| Intent | The patient still means to attend | Confirmed then absent, concentrated in long lead times and low-value follow-ups | Confirmation replies joined to attendance |
| Ability | The patient can physically get there and be seen | Cancellations inside 24 hours, absences clustered by time of day, site and season | Cancellation reasons, appointment time, travel distance |
Read the table as a sequence, not a menu. A clinic losing a meaningful share of messages at arrival knows nothing about the other 3 gates, because those failures are not randomly distributed: undeliverable numbers cluster on the patients least engaged with the practice, which is the same group most likely to miss.
5 reasons the number does not move, in the order to check them
- The contact data is stale or belongs to someone else. Numbers change, families share handsets, and a record taken at registration 4 years ago has decayed ever since — the same class of failure that makes an eligibility check unable to find a covered patient, with the same fix: verify at a defined event, not once.
- The message is delivered and filtered. An unfamiliar sender, an unbranded shortcode, a message that reads like marketing, or a channel the patient has muted. The signature is a high delivery rate with almost no replies from a cohort that replies to other clinics.
- The patient confirms and then cannot come. Confirmation is a reflex answered in 2 seconds; the appointment is 3 days away. Confirmed-then-absent is the row in your join that proves messaging is not the constraint.
- The reminder offers no way to change anything. A one-way message tells a patient who now cannot attend that they are about to be a no-show, and gives them nothing to do about it. The slot dies rather than returning to the pool.
- The appointment is no longer wanted. The symptom resolved, the patient was seen elsewhere, or the follow-up was booked by protocol rather than need. No reminder converts an appointment the patient does not value; a shorter booking horizon and a recall queue do.
Two of those are messaging problems. Three are not, which is why reminder projects so often deliver a clean dashboard and an unchanged rate. The join tells you which of the 5 you are looking at, and it usually implicates 3, 4 and 5 together.
The reply that arrives and lands in nobody's queue
The single highest-yield fix in most clinics is not the reminder at all — it is the return path. When a patient answers a reminder with a request to move the appointment, that message has to reach a queue with an owner and a clock on it. Where it lands in a shared inbox that the desk reads when the phones go quiet, the request ages past the appointment and the clinic records a no-show it was explicitly warned about. This is the same structural failure as studies sitting unread past their target: work exists, has no age, and therefore has no owner.
A useful return path does 3 things. It reads a free-text reply rather than demanding a keyword, because patients answer in sentences. It offers 2 or 3 real slots in the same exchange, held briefly while the patient chooses, instead of asking them to ring back. And it releases the original slot only once the new one is committed, which needs the same hold-and-commit discipline that stops a booking agent writing into slots that were already taken. That exchange — reply reader, slot offer, commit, exception queue — is the bounded scope we mean by AI agents and automation.
A reminder that cannot be answered with a change is a notification that the patient is about to fail. Every one you send to somebody who cannot attend converts a reschedule into a no-show.
The constraints that were never going to yield to a better sentence
Once arrival and the return path are sound, what remains is mostly ability — a scheduling and access problem wearing a communications costume.
- Work that cannot be left. A shift worker offered 11:00 on a Tuesday will confirm and then not come. The fix is early, late or weekend capacity, not a third reminder.
- Transport and distance. Absences clustered by site and by the first appointment of the morning are a travel signature. Read the earliest slots separately.
- Dependants and care. A patient who cannot leave a child or a relative needs a different time, not a different message.
- Preparation that failed. Fasting, stopping a medication, bringing a sample: the patient stayed away because they knew they would be turned away. It shows up as a late cancellation on specific visit types, and the fix is to track preparation as its own step and confirm completion rather than attendance.
- Cost and coverage. A patient expecting to be asked for money they do not have will not appear. Resolving coverage days ahead, not at the desk, removes the surprise.
Preparation is the one item on that list a system can genuinely carry. A pre-visit link that collects history, confirms the preparation and returns a completion state gives the desk a signal 48 hours out that a reminder never will — the method in pre-filling intake from records the patient already gave someone else.
Turning the join into one of 4 decisions
- Arrival failures above a few per cent? Fix contact data and nothing else. Mark bad numbers on bounce, force re-verification at the next contact, and stop counting undeliverable sends as coverage.
- High delivery, near-zero replies? Fix identity and channel. A named sender, a consistent number, and a first line that says which clinic and which appointment.
- Confirmed-then-absent dominating? Build the return path and shorten the booking horizon. Stop booking routine follow-ups 5 months out when a recall queue would do.
- Absences still concentrated by time, site or visit type? This is capacity design. Publish a release rule so a cancelled slot is offered onward automatically, and consider deliberate overbooking on the sessions your data implicates.
Overbooking is the honest ending to a lot of these investigations. If a session reliably loses 2 of 20 slots and the return path is already sound, the residue is not a defect to be messaged away — it is a known rate the template can absorb. That is a workload judgement about waiting times and staff load, and it belongs to the people who run the clinic, not to the software.
None of this argues against reminders — only for knowing what they are doing, which is why timing and wording belong in what published evidence supports about reminder timing and attendance rather than being guessed at here. The surrounding territory sits in front desk, intake and patient access, inside our healthcare operations work, and if you are weighing building the return path with an outside team, the questions to ask are in choosing an AI development partner.
Frequently asked questions
Short answers to the follow-ups this page tends to raise.
Why do patients still miss appointments after receiving reminders?
Because most non-attendance is not caused by forgetting. Once memory is handled, the remaining absences are patients who never received the message, patients who read it and could not change a shift or arrange transport, and patients who no longer want the appointment. Joining delivery data to attendance separates those groups; until the join exists, any explanation is a guess.
Patients confirm and then do not attend. What does that tell us?
That messaging is no longer your constraint. A confirmation proves the message arrived and was read, which closes the first 2 gates in the funnel. Confirmed-then-absent points at intent or ability: the appointment was booked too far ahead to still matter, the patient could not leave work, transport failed, or preparation was not completed. Adding a third reminder to that cohort changes nothing.
How do we tell an undelivered reminder from an ignored one?
Keep the channel's delivery status as 3 distinct values — delivered, undelivered, unknown — against each appointment, and never collapse them into sent. Undelivered and hard bounces are a contact-data problem. Delivered with no reply and no attendance change is an attention problem, and it concentrates on unfamiliar sender identities and on patients who have never interacted with the clinic by message before.
Should a reminder let the patient cancel or reschedule?
Yes, and it is usually the highest-yield change available. A one-way reminder to somebody who cannot attend converts a recoverable reschedule into a lost slot. Offer 2 or 3 real alternatives in the same exchange and release the original slot only once the replacement is committed.
How long should we run the measurement before deciding anything?
One full closed month across all sites is enough to find arrival and reply-path failures, which are the 2 causes worth fixing first. Judging a change in the residual rate needs longer, because absences vary by season, by holiday weeks and by clinic mix. Fix the gates that are provably closed on a month of data, and treat the slower comparison as its own exercise.
- no-shows
- reminders
- patient access
- front desk
The work behind this page
Builds from our portfolio that this page draws on.
Read next
- Recall, waitlist and hold: three different queues everyone calls one thingRecall fires on a clinical due date, waitlist fires on a cancellation, hold waits for the patient. Merge them and every automated message is wrong for two of the three.definition
- Double-booked by the booking agent: where the slot lock went missingTwo channels writing into one slot is not a scheduling bug. It is a missing reservation step between offering a time and committing it, and it is reproducible on demand.diagnostic
- Eligibility returns 'patient not found' for a clearly covered patientNot found is a statement about matching, not about coverage. Re-run the lookup with fewer identifiers, find which field broke the match, and stop retyping the member number.diagnostic
- Referrals come in by fax, email and portal, and none of them get bookedReferrals do not get lost because staff are careless. They get lost because a referral has no state, and something with no state has no age and no owner.diagnostic
- The provider schedule template: slots, blocks, holds and release rulesA template is 4 objects and the rules connecting them. A booking system that cannot read all 4 looks either too eager or too restrictive, and both cost real capacity.definition
- Visit type: the one field that decides duration, room, provider and prepVisit type is not a label on a calendar entry. It is the key every scheduling rule joins to, and where it is unmodelled no booking automation has anything to reason with.definition
Working on something in this space?
Tell us where you are in a sentence or two. We'll tell you honestly whether we're the right team, and what a sensible first slice of the work looks like.
Start the conversation