Daily
Text appointment reminders and see confirmations in Slack
Clients get a text the day before their appointment, and the team sees in Slack who confirmed, cancelled or wants to reschedule.
- Runs
- Daily
- Apps
- Slack, Twilio
- AI
- Optional
- Access
- Twilio account SID/token; Slack chat:write
Send this to your assistant
Create a ClickRuntime automation: every day at 10am, text clients with appointments tomorrow asking them to reply YES or NO; when they reply, post who confirmed, cancelled or wants to reschedule to #front-desk.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A front desk at a clinic or salon spends much of the morning phoning tomorrow's clients to confirm. Texts are faster, but replies then land on a phone that one person holds.
Sending reminders automatically and posting each reply in Slack lets the whole front-desk team see confirmations and cancellations as they come in, so empty slots can be refilled quickly.
What you get out of it
No confirmation calls
Reminders go out by text automatically.
The whole team sees replies
Confirmations and cancellations appear in the Slack channel.
Cancellations spotted early
Freed slots are visible the day before, in time to refill.
Free-text replies understood
Replies like 'can we do Thursday instead?' are recognised as reschedule requests.
How it works
What happens, step by step
Every day it reads tomorrow's appointments from your bookings feed.
Each client gets a text asking them to reply YES to confirm or NO to cancel.
When a client replies, YES and NO are recognised directly; other replies can be read by AI.
Each reply is posted to your front-desk channel in Slack.
Before it runs live
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Connect Twilio
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Google Sheets
- Combine it with other Slack and Twilio steps into one automation
Under the hood
The code that runs this automation
from twilio.rest import Client
from clickruntime import on_trigger, on_event, credentials, http, notify, state, ai
FEED = "https://bookings.example.com/api/tomorrow"
FROM = "+15005550006"
def sms(to, body):
return Client(credentials.secret("TWILIO_ACCOUNT_SID"), credentials.secret("TWILIO_AUTH_TOKEN")).messages.create(to=to, from_=FROM, body=body)
@on_trigger
def run(event):
appts = http.get(FEED, headers={"Authorization": f"Bearer {credentials.secret('BOOKINGS_TOKEN')}"}).json()
for a in appts:
sms(a["phone"], f"Hi {a['name']}, reminder of your appointment tomorrow at {a['time']}. Reply YES to confirm or NO to cancel.")
state.set(f"appt:{a['phone']}", {"name": a["name"], "time": a["time"]})
return {"reminded": len(appts)}
@on_event
def handle(event):
f = event.json or {}
appt = state.get(f"appt:{f.get('From')}") or {"name": f.get("From"), "time": "?"}
body = (f.get("Body") or "").strip()
intent = {"YES": "confirmed", "NO": "cancelled"}.get(body.upper())
if not intent:
try:
intent = ai.generate(body[:300], system="One word: confirmed, cancelled or reschedule.", max_output_tokens=5).text.strip().lower()
except ai.AIError:
intent = "replied"
notify.slack(f":calendar: {appt['name']} ({appt['time']}) {intent}: \"{body[:200]}\"", channel="#front-desk")
return {"intent": intent}FAQ
Common questions
Where do appointments come from?
Is AI needed to read replies?
Do I need two trigger links?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Text quiet leads a follow-up and nudge sales in Slack
Leads who haven't replied in a few days get a short, friendly follow-up text, and sales gets a Slack summary of who was nudged.
See how it worksText you and alert Slack when a metric crosses a threshold
When a number you watch crosses your limit, you get a text and the team gets a Slack message, once per breach.
See how it worksQualify text-message leads and route them in Slack
When a prospect texts your number, AI pulls out what they need and how serious they are, replies, and alerts the right Slack channel.
See how it worksKeep exploring
Set up “Text appointment reminders and see confirmations in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.