Win back no-show and cancelled appointments every morning

Every weekday morning, every appointment that fell through yesterday gets a personal text or email inviting them to rebook, plus a task for the right rep.

Agentic Task
LeadConnectorGoogle SheetsSlackSalesOperationsMeeting WorkflowsEmail Automation
PromptCreate

Every weekday at 10am I want an agent to recover the appointments that fell through in my LeadConnector sub-account. Run it against a single sub-account (locationId) that I configure once, and use that sub-account's own timezone when working out what counts as yesterday.

Start by pulling yesterday's appointments with List Calendar Events across every calendar in the sub-account, covering the full day from midnight to midnight. Keep only the events whose appointment status came back as no-show or cancelled. Appointment status lives on the calendar event itself, so this is a status filter on the events you already pulled rather than a separate lookup. If nothing fell through, post a one line Slack note saying so and stop.

For each missed appointment, pull the person with Get Contact so you have their name, phone, email, tags and assigned user. Then read what was already said: Search Conversations scoped to that contact, and Get Messages by Conversation on their most recent thread, so you know the history and the tone before you write.

Before writing anything, check the upcoming calendar events for the next 30 days with List Calendar Events and skip anyone who has already rebooked. Also enforce a cap of one recovery message per contact per week: skip a contact who is already carrying the no-show-recovery tag from a recent run, and cross check the last seven days of rows in the tracker with Get Values so repeat no-shows do not get spammed.

For everyone left, draft a short and specific rebooking message. Name the actual service or meeting they missed and the day it was booked for, offer to get them back on the calendar, and match the tone of the existing thread, so a casual thread gets a casual message and a formal one stays formal. Keep it to a couple of sentences with one clear question, and never invent details you did not read in the thread or on the appointment. Send it with Send Message as SMS when a mobile number is on file, and as email otherwise with a plain subject line. If a contact has neither a mobile number nor an email address, skip them and call it out in the summary.

After a message goes out, tag the contact with Add Tags to Contact using no-show-recovery, and create a follow-up task due in two days for the rep assigned to the appointment with Create Contact Task. Use List Users to turn the assigned user id on the calendar event into a rep name for the task and for the tracker row.

Append one row per missed appointment to a Google Sheets tracker with Append Values: date, contact, calendar, rep, whether it was a no-show or a cancellation, the channel used, and the message that was sent. Append rather than overwrite so the sheet builds a no-show rate trend over time.

Finish by posting a short Slack summary with Send a Message: how many appointments fell through, the no-show rate versus last week (read the earlier rows out of the tracker with Get Values to work that out), how many people you reached out to and on which channel, who you skipped and why, and the highest value people you contacted so the team knows who to watch for a reply.

LeadConnector calls need the Version header and a locationId. Never send more than one recovery message to the same person in a single run, and if a send fails, report the failure in the Slack summary rather than retrying in a loop.

What does this prompt do?

  • Finds every appointment from yesterday that ended as a no-show or a cancellation, across all of your calendars
  • Skips anyone who has already rebooked, and never messages the same person more than once a week
  • Writes a short, personal message that names the visit they missed and sends it by text when you have a mobile number, or by email when you do not
  • Tags the contact, puts a two day follow up task on the rep who owned the appointment, and logs every row to a tracker so you can watch your no-show rate over time
  • Posts a morning Slack summary with the count, how you compare to last week, and the highest value people it reached out to

What do I need to use this?

  • A GoHighLevel (LeadConnector) sub-account where you book appointments on calendars
  • Text messaging and email turned on in that sub-account, so replies land where your team already works
  • A Google Sheets spreadsheet to hold the tracker, with a tab and a header row ready
  • A Slack workspace and a channel for the daily summary

How can I customize it?

  • Change the run time and which days it runs, for example every morning including weekends if you are open on Saturdays
  • Rename the tag it applies, change how far out the follow up task is due, or send the task to a front desk owner instead of the booking rep
  • Loosen or tighten the one message per person per week cap, and set the tone and length of the rebooking message

FAQs

Will it message someone who already rebooked?
No. Before writing anything it checks your upcoming appointments and quietly skips anyone who is already back on the calendar, so nobody gets an awkward "we missed you" text the day before their next visit.
Does it cover cancellations as well as no-shows?
Yes. It picks up both, and it records which one each person was so your tracker can tell late cancellations apart from true no-shows.
What happens if a contact has no mobile number?
It emails them instead. If there is no mobile number and no email address on file, it skips that person and calls them out in the morning summary so someone can pick up the phone.
Will repeat no-shows get spammed?
No. There is a hard cap of one recovery message per person per week, checked against both the tag it applies and the rows already in your tracker.
Do I need to set up the Google Sheet first?
Just create a spreadsheet with a tab and a header row. Each run adds new rows underneath rather than overwriting, so the sheet turns into a running no-show rate trend on its own.

Related templates

Call overdue Xero customers with an AI collections agent

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.

LiveKit
Xero
Deepgram
+2
Agentic Task
Local listing health board for every location you manage

See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.

Local Business Data
Google Sheets
App
Win back LiveChat visitors whose chats went unanswered

Every couple of hours we find the chats your team never answered, email those visitors a real reply, and hand the sensitive ones to a support lead.

LiveChat
Gmail
Slack
Agentic Task
Let support send one-off Loops emails without an engineer

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.

Loops.so
Stripe
Google Sheets
App
Stop cold emails to anyone with a live deal in Pipedrive

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.

Mailshake
Pipedrive
Google Sheets
Deterministic Code
iMessage campaign console with pre-flight checks and delivery board

Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.

LoopMessage
Google Sheets
HubSpot
App

Stop letting missed appointments walk away.

Every no-show and cancellation gets a personal invitation to rebook before the day even starts, without anyone on your team remembering to do it.