If you run a salon, clinic, repair shop, or any business that lives on booked time, no-shows are a tax on your calendar. Most service businesses solve this by bolting on a dedicated reminder tool -- something like SimpleTexting or a scheduling add-on -- that talks to their CRM through a fragile integration. That's one more subscription, one more login, and one more place data can fall out of sync. If your appointment data already lives in a CRM, the reminders and the rebooking logic should live right next to it, triggered by the same record. That's the whole case for building this inside ViibeStack instead of layering on another tool -- it's the same logic behind replacing your stack piece by piece rather than stacking more point solutions on top of each other.
Start with two triggers on your Appointments table (or object, if you're using a custom-built CRM): 'Record Created' and 'Record Updated where status or start_time changes.' These are the two events that matter. A booking trigger kicks off your reminder sequence. A change trigger -- someone reschedules, cancels, or a staff member moves the slot -- needs to cancel any pending reminders tied to the old time and either queue new ones or stop the sequence entirely. Skipping this second trigger is the most common mistake we see: businesses build a reminder flow off 'booking created' only, then customers get a text reminding them of an appointment that no longer exists. That erodes trust fast. In ViibeStack's Workflow Automation, you set this up as a single automation with a branch: new booking goes down one path, and any update to an existing booking's time or status re-evaluates whether scheduled messages still apply.
A single reminder isn't enough, and three is overkill and starts to feel like spam. The 24-hour-plus-2-hour combination works because they solve two different problems. The 24-hour reminder (email or SMS, your call) gives people enough runway to actually reschedule if something's come up -- which matters more than it sounds, because a cancellation with 24 hours' notice is a slot you can still refill. The 2-hour reminder is a pure no-show deterrent: it's close enough to the appointment that 'I forgot' stops being an excuse, but far enough out that someone stuck in traffic still has time to call ahead. For appointments booked same-day or with less than 24 hours' notice, just send the 2-hour one and skip the first -- don't force a reminder that's already past its useful window. Build both as delayed actions off the booking trigger: 'wait until 24 hours before start_time' and 'wait until 2 hours before start_time,' each with a condition check that the appointment is still active before sending.
SMS open rates crush email for time-sensitive messages -- most texts get read within minutes, while email reminders can sit unopened in a crowded inbox. But SMS costs money per message and some customers genuinely prefer email. The practical answer is to default to SMS for the 2-hour reminder, where speed of read matters most, and let the 24-hour reminder go out on whichever channel the customer gave you at intake. If you built your booking flow around a client intake form that creates the CRM record itself, you likely already captured a channel preference field -- use it as a condition in the automation rather than hardcoding one channel for everyone.
The no-show sequence is where most reminder tools stop and ViibeStack keeps going, because it's not just a messaging trigger -- it's a status change that should touch your whole record. Add a staff action (or an automated check against a check-in field) that marks an appointment 'No-Show' if it's not marked complete within, say, 30 minutes of the start time. That status change is itself a trigger: it fires a follow-up message within the hour, not the next day, while the missed appointment is still fresh. Keep the first message short and judgment-free -- 'Looks like we missed you today, want to grab another time?' with a direct rebooking link works better than anything that sounds like a scolding. If there's no response in 48 hours, send a second message, and if the customer has two or more no-shows on their record, branch the sequence to flag the account for a staff follow-up call instead of another automated text -- some situations need a human. All of this logic lives as conditions on the same automation, referencing the customer's no-show count field on their CRM record, so the sequence gets smarter about repeat offenders without anyone building a second system.
Once this is running, the numbers that matter are no-show rate before and after, and rebooking rate from the follow-up sequence specifically -- not just overall booking volume, which can mask a reminder system that's doing nothing. Pull these as a simple report in Analytics & Reporting filtered by appointment status and the automation's tag, and check it monthly. If no-shows aren't dropping, the fix is usually timing or tone, not more messages -- try moving the second reminder to 3 hours instead of 2, or softening the no-show follow-up copy, before adding a third touchpoint. For businesses coming from booking-specific tools, this is also worth comparing against what you were paying before; our breakdown of replacing Calendly or replacing Vagaro walks through what else you give up by running scheduling, reminders, and your customer records as three separate tools instead of one.