Daily RingCentral SMS reminders for tomorrow's appointments
Every morning at 7am, we text tomorrow's customers their appointment time from your own business number, so fewer slots get lost to no-shows.
Every morning at 7am, text tomorrow's customers an appointment reminder so we stop losing slots to no-shows. Build this as a deterministic code workflow on a cron trigger. Every step is a fixed lookup and a formatted send, so no agent reasoning is needed anywhere in the chain.
Start with Google Calendar List Events against a specific booking calendar whose calendar ID I will configure. It is not necessarily my primary calendar, so make the calendar ID an input rather than hardcoding 'primary'. Scope the window to the whole of tomorrow in the business timezone, from 00:00:00 to 23:59:59. Set singleEvents to true so recurring appointments expand into individual instances, and order by start time so reminders go out in appointment order. Page through results if there are more than one page of events.
Filter the events before sending anything. Skip all-day events, which come back with a date field instead of a dateTime on start. Skip anything already cancelled, meaning the event status is cancelled, or the title carries an obvious cancelled marker. Skip internal meetings, which for this workflow means any event where no customer mobile number can be found.
For each remaining event, pull the customer's mobile number from the event description or the location field. Accept the common ways people type numbers, strip spaces, dashes and parentheses, and normalize to E.164 using a default country code I configure. If no valid number parses out, skip that event rather than guessing or sending to a partial number. Take the customer's name from the event summary or the attendee display name, and use just the first name in the message.
Send each reminder with RingCentral Send SMS. The message is templated and includes three things: the customer's first name, the appointment date and time rendered in the customer's local timezone, and a short closing line telling them how to reply if they need to reschedule. For the timezone, use the event's own start timeZone and fall back to the calendar's default timezone. Keep the message inside a single SMS segment where possible. Something like: 'Hi Dana, reminder: your appointment is Tue Aug 12 at 2:30 PM. Reply RESCHEDULE and we will find you a new time.'
Two RingCentral constraints to build around. First, RingCentral sends SMS from the connected extension's own phone number, and even an admin cannot send on behalf of another user's extension, so this must run on the credential for the extension whose number I want customers to see and reply to. Second, if this calendar runs a high daily volume, the A2P SMS scope is the one that covers application-to-person sending at volume, as opposed to casual person-to-person texting.
Make the run resilient. Send one message per appointment, and if a single send fails, log it and keep going rather than aborting the whole run. Pace the sends so we stay inside RingCentral's per-minute rate limits instead of firing everything at once, and honor Retry-After if we get throttled. Log one line per event recording either sent, or skipped with the reason: all-day, cancelled, or no phone number. Finish by returning a count of reminders sent and reminders skipped by reason.
What does this prompt do?
- Checks your booking calendar every morning at 7am and picks up every appointment scheduled for the next day.
- Texts each customer a short reminder with their name, their appointment time in their own timezone, and a line telling them how to reply if they need to reschedule.
- Sends from your existing RingCentral business number, so replies land on the line your team already watches.
- Quietly skips all-day blocks, bookings already marked cancelled, and internal meetings with no customer number attached.
What do I need to use this?
- A RingCentral account with texting enabled on the extension whose number you want customers to see.
- A Google account with access to the booking calendar you want to read.
- Customer mobile numbers saved on the calendar event, in either the description or the location field.
- A default country code, if your customers' numbers are stored without one.
How can I customize it?
- Change the send time. The morning before is a common choice, but some teams prefer an evening send, or a second nudge a couple of hours ahead.
- Reword the message template, including the line that tells customers how to reply to reschedule.
- Point it at a different calendar, or narrow it to a single location or one practitioner's bookings.
FAQs
Which number do the reminders come from?
What happens when a customer replies to a reminder?
Will it text people about internal meetings?
Do customers in other timezones see the right time?
Can it handle a busy day with a lot of appointments?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
Every Monday, rank the week's matches by expected demand, put the big ones on your venue calendar, and post a rota-ready summary to Slack.
Every weekday at 7:30am, get a Slack message that fits today's real tasks into the gaps between your meetings, and warns you when the day is overbooked.
Every weekday morning we message tomorrow's customers on WhatsApp with their appointment time and location, so fewer bookings turn into no-shows.
When a deal is marked closed won, we set up the Smartsheet row, book the kickoff meeting, and tell the delivery team in Slack.
Every weekday morning, get a briefing that reads your recovery, flags the meetings worth cutting, and books you a recovery break before the day starts.
Stop losing slots to no-shows.
Put tomorrow's reminders on autopilot and let your calendar do the chasing.