Front desk appointment confirmation board for the next 3 days
Open one board every morning, see every upcoming appointment with its confirmation status, and text the clients who have not replied yet.
Build me a confirmation desk app that my front desk opens first thing every morning to work the next three days of appointments. The whole point is that one person can clear the confirmation status of every upcoming booking in a few minutes instead of reading message threads one by one.
The main surface is a board of upcoming bookings. Pull events with Google Calendar List Events across the calendars I select, over a window that defaults to the next three days, sorted by start time. Show one row per appointment with the client name, the appointment time, the service (parsed from the event title or description), and a big confirmation status badge that reads Confirmed, No reply yet, Reschedule requested, or Cancelled. Use Google Calendar List Calendars to populate a calendar picker in settings so I can choose which calendars feed the board.
Calendar invites carry email addresses rather than phone numbers, so client phone numbers come from a Google Sheets client roster. Read it with Google Sheets Get Values and match the attendee email from the calendar event to the roster row to get the number. LoopMessage requires the contact to be either an iMessage email or a phone number in +E.164 international format, so normalize roster numbers to E.164 before sending, and on any row where the lookup fails show an explicit no number on file state with the attendee email offered as a fallback contact rather than silently skipping the row.
Every row has two actions: Send confirmation and Nudge. Both fire a templated text through LoopMessage Send Message. Before any send, call LoopMessage Check Contact Status and refuse to send to a contact who is unsubscribed, showing an opted out badge on the row instead. This guard applies to the manual buttons and to anything the background agent sends. Store the returned message id on the row and show the delivery state from LoopMessage Get Message Status, so staff can tell a failed send apart from a client who simply has not replied yet. Those two states must look clearly different on the row.
The piece that makes this worth opening daily is a read the replies background agent that I kick off from a button at the top of the board. It walks every appointment in the window, pulls that client's thread with LoopMessage Get Message History for Contact, interprets the latest inbound reply in plain language, and writes back a status plus a one line summary onto the row. "yeah see you then" should land as Confirmed, "can we do 4 instead" as Reschedule requested, "sorry have to cancel" as Cancelled, and no inbound reply stays No reply yet. Show progress while it runs and let staff keep using the board. If the agent sends anything in a batch, respect the LoopMessage throttle of at least two minutes between outbound messages to the same contact.
For reschedule requests the agent goes one step further: it looks across the selected calendars for open slots near the time the client asked about, and drafts a suggested reply offering two or three of them. The draft lands on the row in an editable text box. Staff edit it and hit send, which goes out through LoopMessage Send Message. The agent never sends a reschedule reply on its own.
Anything still unconfirmed inside 24 hours of its start time gets pinned to a red call list section at the top of the board. That section is the morning phone call queue, so it should be the first thing visible when the app opens, with a count in the heading.
Persist confirmation status, the one line summary, the last message id, and the last send time per calendar event id in the app's own storage, so state survives reloads and every staff member sees the same board. Also mirror the status and summary back to a Confirmations tab in the roster spreadsheet using Google Sheets Update Values, keyed on the calendar event id, so there is a record outside the app.
Settings I want to control: which calendars feed the board, how many days ahead it looks (default three), how many hours before an appointment the first confirmation goes out, and the wording of the confirmation and nudge templates with placeholders for client name, appointment time, and service. Default the reminder cadence to 72, 48, and 24 hours before the appointment, since that is the pattern that works for confirmation programs, and make the first confirmation hour setting easy to find because I will tune it.
What does this prompt do?
- Shows every appointment on your next three days as a single board, one row per booking with the client name, time, service, and a large status of confirmed, no reply yet, reschedule requested, or cancelled.
- Sends confirmation texts and nudges straight from the row, pulling each client's phone number from your roster spreadsheet because calendar invites only carry email addresses.
- Kicks off a background assistant that reads every client's message thread and files the replies for you, so 'see you then', 'can we do 4 instead', and 'sorry, have to cancel' each land in the right bucket without staff opening threads one by one.
- Pins anything still unconfirmed inside 24 hours to a red call list at the top of the board, so your morning phone calls are already prioritized.
What do I need to use this?
- A Google account with the calendars your appointments live on
- A client roster spreadsheet in Google Sheets with each client's email address and phone number
- A LoopMessage account for sending the texts
- Phone numbers stored in full international format, for example +13231112233
How can I customize it?
- Set how many hours before an appointment the first confirmation goes out, and when the follow up nudges land
- Choose which calendars feed the board and how many days ahead it looks
- Edit the confirmation and nudge message wording, including how the client name, time, and service appear
FAQs
Do my clients need an iPhone for this to work?
Where do the phone numbers come from?
Will it text someone who asked us to stop?
Does the assistant send messages on its own?
Do appointment reminders actually reduce no-shows?
Related templates
Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.
See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.
Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.
Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.
Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.
See every LinkedIn ad account's spend against the budget you committed to, catch overspend early, and rebalance without rebuilding a spreadsheet.
Stop chasing appointment confirmations one thread at a time.
Open one board each morning, see who has confirmed, and text everyone who has not in a couple of clicks.