A Pune-based diagnostics chain runs 12 collection centres across the city and Pimpri-Chinchwad. Roughly 1,400 bookings a day, mostly blood work and imaging. Their no-show rate was 31% — phlebotomists and CT slots sitting idle while walk-ins queued. We built them a multi-branch booking portal with a layered SMS + WhatsApp reminder cadence and ran a deposit-on-booking experiment on two branches. Six weeks after launch the no-show rate sat at 15%. Here is the architecture, the reminder timing, and the deposit trade-off that surprised us.
The Answer in 60 Words
We replaced phone-and-register booking with a web portal that shows real slot capacity per branch. Every booking fires a three-touch reminder: an SMS at T-24h, a WhatsApp card at T-3h with a one-tap reschedule, and an SMS at T-1h for morning slots. Two branches added a small refundable deposit. No-shows dropped from 31% to 15%.
Why This Matters Now
Text reminders cut missed appointments by close to 40% — an ophthalmology cohort found reminded patients were 38% less likely to no-show, and a systematic review put the weighted mean reduction near 34% across 29 studies. For a diagnostics chain, an idle CT slot is pure lost margin. WhatsApp also got cheaper to run at scale: from July 1, 2025 Meta moved to per-message pricing, and India utility templates now cost very little each. So a reminder stack that used to feel expensive now costs less than the revenue from one recovered slot per branch per day.
The Client (Specific Details)
The Architecture (What We Built)
We built the portal as a Next.js front end with a Node.js API and PostgreSQL, deployed on AWS — the same multi-portal pattern we used building Radiant Finance's agent, admin, and customer apps. The slot engine is the piece that earns its keep: a naive "30-minute slots" model breaks the moment a branch has two phlebotomists and one CT machine sharing a calendar.
The Slot Engine (Why a Calendar Grid Isn't Enough)
The single biggest mistake teams make building a clinic booking system is treating time as the resource. Time is not the resource — the machine and the person are. A branch with two phlebotomists can take two blood draws in the same 9:00 am slot, but only one of them can use the single centrifuge bay at 9:05. A CT scan and an X-ray run on different machines, so they overlap fine; two CT scans never do.
So our model has three layers: the branch, the resource (machine or staff role), and the time window. A booking reserves a resource for a window, and the engine checks resource availability, not clock availability. This is what lets one branch run blood draws, X-ray, and CT in parallel without a manager hand-tuning a spreadsheet. It is also what makes the "fill this gap" feature possible — the engine knows exactly which resource just freed up and for how long.
We added a soft buffer too. CT slots get a 5-minute turnaround buffer baked in, because a scan that runs long shouldn't cascade into three late appointments. Small detail, big difference to a branch manager's day.
What You'll Need (Prerequisites)
Before a multi-branch booking portal is worth building, get these in place. We checked each off with the client in week one.
- A DLT principal-entity registration and a registered SMS header (max 11 characters). Without it, your transactional SMS gets dropped by carriers.
- A WhatsApp Business API number (via a Business Solution Provider) with at least one approved utility template. The reminder card needs this.
- An accurate resource map per branch — machines, staff roles, peak hours. This is the input to the slot engine; garbage in, double-bookings out.
- A UPI collect or payment-link setup if you plan to run a deposit experiment. We used the client's existing Razorpay account.
- Buy-in from branch managers. The portal changes their daily workflow. We had one manager from each region in the design sessions, and it paid off at rollout.
The Reminder Cadence (The Part That Moves the Number)
Timing matters more than channel. A reminder a week out gets forgotten; one ten minutes before is useless. After two weeks of A/B testing across branches, this three-touch cadence won.
| Touch | When | Channel | Content | Why this timing |
|---|---|---|---|---|
| 1 | T-24h | SMS (DLT template) | Confirm + branch address + prep instructions (e.g. "fasting required") | Catches the "I forgot I booked" miss; fasting prep needs a full day's notice |
| 2 | T-3h | WhatsApp utility card | Slot time + one-tap reschedule + live directions link | High open rate; reschedule beats a silent no-show |
| 3 | T-1h | SMS (morning slots only) | Short nudge, no link | Morning blood-draw slots had the worst no-show; the extra touch paid for itself |
We deliberately did not add a fourth touch. In testing, a T-15min message annoyed people and drove WhatsApp blocks — which then cost us the channel for the next visit. Three is the ceiling that still feels like a service, not spam.
Template ID passed in the message payload. Per TRAI's TCCCPR rules, transactional and service-implicit templates must carry personalization variables and match the approved text exactly. We registered six templates (confirm, reminder, reschedule, cancel, deposit-receipt, slot-freed) before writing a line of sending code.
The Deposit Experiment (And the Trade-Off)
Reminders cut no-shows. But for high-value slots — CT, ultrasound — even a reminded patient sometimes skips because the booking cost them nothing. So on two branches we ran a four-week experiment: a small, fully refundable deposit on imaging slots only, paid by UPI at booking, auto-refunded on arrival.
The result was real. On the two deposit branches, imaging no-shows fell to 9% versus 16% on the reminder-only branches. But here is the trade-off, and it is the honest part: total bookings on the deposit branches dropped 7% in week one. Some first-time patients bounced at the payment step. We were trading a few cautious new bookers for far fewer wasted slots.
After week two we softened it: the deposit applied only to imaging, only after the patient's first completed visit. New patients booked deposit-free. That recovered most of the lost bookings while keeping the no-show win on repeat imaging.
The refund mechanics mattered as much as the deposit itself. We auto-refunded the deposit the moment the front desk marked the patient "arrived" — not at end of day, not on a manual batch. A patient who pays a deposit and sees it back on their UPI app within minutes of walking in trusts the system. A patient who has to chase a refund never books again. We watched the refund-latency metric closely in the first fortnight; median refund time was under 90 seconds.
The Patient Journey (End to End)
The whole flow is designed so a 55-year-old booking a fasting blood test for a parent can finish in under a minute without creating an account. Phone number is the identity; an OTP confirms it; the booking history lives against that number. We tested the flow with the client's own front-desk staff acting as first-time users before a single real patient touched it.
The Build Plan (How We Sequenced It)
The Reminder Math, Visualised
Common Mistakes (When Not to Do This)
- Over-texting. Symptom: WhatsApp block rate climbing. More than three touches reads as spam and you lose the channel for the next visit. Cap it.
- One global slot length. Symptom: double-booked CT machine. A blood draw and a CT scan are not the same slot. Model the physical resource, not a calendar grid.
- Deposits on a new branch. Symptom: bookings dip while you are trying to grow. A deposit throttles top-of-funnel — wrong tool for a branch that needs patients.
- Skipping DLT registration. Symptom: SMS silently undelivered. Unregistered templates get dropped by carriers. Register first, send second.
- No waitlist for freed slots. Symptom: a cancelled CT slot stays empty. A reschedule frees capacity — text the waitlist inside the 2-hour window and fill it.
When does a portal like this not pay off? If you run a single branch with under 40 bookings a day, a shared calendar and a WhatsApp reminder you send by hand is enough. The portal earns its build cost at multi-branch scale, where capacity is invisible across locations and no-shows compound.
Real Outcome
Six weeks in: no-shows down from 31% to 15%, CT utilisation up from 58% to 79%, and roughly ₹9.2 lakh a month in slot revenue that used to evaporate. The branch managers stopped fielding booking calls and started working the waitlist. The owner's verdict was blunt — the portal paid for itself in the first month on the imaging branches alone.
One more thing worth saying plainly: the portal did not replace the front desk. It freed it. Staff who spent half their morning answering "what time is my slot" calls now work the waitlist and handle walk-ins. The same number of people, doing higher-value work. That is the quiet ROI nobody puts in the proposal.
This is adjacent to work our web development team and CRM team do across the healthcare and services space — and it pairs with the mobile side we covered in our 7-week HIPAA-aware patient booking app build. If reminders are your bottleneck, our automation team wires the same cadence into a WhatsApp flow — see our n8n + WhatsApp Cloud API auto-reply guide for the no-code version, and the WhatsApp pricing breakdown before you budget.
Frequently Asked Questions
How much does a multi-branch patient booking portal cost to build?
It depends on scope: for a portal covering 8–12 branches with a slot engine, reminders, and a manager dashboard, the integrations drive most of the cost. The reminder stack itself is cheap to run after the July 2025 WhatsApp pricing change.
How much can SMS and WhatsApp reminders actually cut no-shows?
Studies put the reduction near 34–38%. In our Pune build, reminders alone took the no-show rate from 31% to 18%. Adding a refundable deposit on high-value imaging slots pushed it to 9% on those branches.
Do I need DLT registration to send appointment reminders in India?
Yes. Every transactional SMS must use a DLT-registered template tied to a registered header, with the Template ID in the payload. Unregistered messages get dropped by carriers. Register your confirm, reminder, and reschedule templates before you start sending.
Should a clinic charge a deposit on bookings?
Only for high-value slots, and watch your funnel. A refundable deposit cut imaging no-shows to single digits for us, but dropped total bookings 7% in week one. We applied it only to imaging, only after a patient's first completed visit, which kept the no-show win without scaring off new patients.
What reminder timing works best for diagnostics appointments?
Three touches won for us: an SMS at 24 hours (with fasting-prep instructions), a WhatsApp card at 3 hours with one-tap reschedule, and a short SMS at 1 hour for morning slots only. A fourth, last-minute touch annoyed patients and drove WhatsApp blocks.
Can the booking portal connect to our existing LIS?
Yes, but keep clinical data out of the booking layer. We sync only booking metadata and let reports stay in the existing LIS behind its own login. That keeps the portal's data footprint small and the compliance surface narrow.
Need a multi-branch booking portal?
We ship a multi-branch patient booking portal — slot engine, SMS + WhatsApp reminders, manager dashboard — for Indian clinics and diagnostics chains in 5–6 weeks. Suitable if you run 5+ branches and no-shows are eating your machine time. No slides — just your problem and our honest take. Email contact@softechinfra.com.
Book a 20-min CallRelated reading
Written by Khushi, our UI/UX designer, with input from the engineering team that built the slot engine.