An appointment show-rate board for your GoHighLevel front desk

By General Input

See booked, showed and no showed counts by calendar and rep, work today's schedule, and win back the people who did not turn up.

Integrations

  • GoHighLevel

Type

App

Categories

  • Operations
  • Sales

Build me an appointment operations board for GoHighLevel that whoever runs our front desk opens first thing every morning and again at the end of the day. One main screen carries a show rate scoreboard at the top and the live appointment list underneath, and there is a second page holding the rebooking review queue.

The scoreboard covers a date range I choose, with quick presets for today, last 7 days, last 30 days and this month plus a custom range. Load the calendar list with Calendars: Get Calendars, then fan out across the calendars I have selected and pull Calendars: Get Calendar Events for each one over the window, aggregating everything in the handler. Show total booked, confirmed, showed, no-showed and cancelled counts, then break the same numbers out two ways: one table per calendar and one table per assigned team member. Compute show rate as showed divided by showed plus no-showed so cancellations do not distort it, and display a dash instead of a percentage when that denominator is zero. Alongside show rate, show a confirmation rate, meaning the share of appointments that reached confirmed before their start time, and a no-show recovery rate, meaning the share of no-shows we messaged through the recovery queue who now have a later appointment on the books, which you can check with Contacts: Get Appointments for Contact. Sort the team member table by show rate ascending and visually flag anyone under 60 percent, because the entire point of this view is to see at a glance that one rep sits at 40 percent while another is at 85 percent. Around 3 to 7 percent no-shows is healthy for a service business with reminders running, so show that band next to the no-show figure as a reference point.

Below the scoreboard, list today's and tomorrow's appointments grouped by calendar, with a toggle between the two days. Each row shows the start time, the contact name, the assigned team member and the current status. Clicking a row opens a detail panel carrying the contact's phone number and email from Contacts: Get Contact, the full appointment record from Calendars: Get Appointment, any appointment notes from Calendars: Get Notes, and the recent message history with that person: find their conversation with Conversations: Search Conversations filtered to that contact, then load the last ten or so messages with Conversations: Get messages by conversation id, newest at the bottom. Make the phone number tappable so the front desk can call from the row.

From any row, without leaving the list, I can set the appointment status to confirmed, showed, no-show or cancelled using Calendars: Update Appointment, and both the row and the scoreboard should reflect the change immediately. I can also message the contact through a compose box in the detail panel using Conversations: Send a new message, and create a follow up task for the assigned rep with Contacts: Create Task, taking a title, a due date defaulting to tomorrow morning, and assigning the task to the appointment's assigned user.

Put a Recover no-shows button above the appointment list that kicks off a background agent. The agent takes a look back window, default the last 7 days and adjustable, and collects every appointment in my selected calendars whose status is no-show using Calendars: Get Calendar Events. For each one it pulls the person with Contacts: Get Contact, reads the prior conversation with Conversations: Search Conversations and Conversations: Get messages by conversation id, and reads any appointment notes with Calendars: Get Notes so it understands what that person originally booked about. It then drafts a short rebooking message for them, two or three sentences, referencing what they came for in their own words rather than filling a template with a first name. Each draft goes back into the app's review queue with the contact, the missed appointment, a one line note on what the agent learned from the history, and the draft text. The agent drafts only, it never sends.

The review queue is its own page showing pending drafts as cards. I can edit any draft inline, send it on its own, or select several and approve them as a batch, and every send goes through Conversations: Send a new message. Sent drafts move to a sent section with a timestamp and stay visible for a few days so I can see who has already been contacted and avoid double messaging. If I have the option switched on, sending a draft also raises a follow up task for the assigned rep with Contacts: Create Task so somebody actually chases the rebooking.

Let me choose which calendars are included from a settings panel, and remember that choice per user along with my default date range, my under-performing show rate threshold and my preferred send channel of SMS or email. The appointment record gives an assigned user id rather than a readable name, so let me map friendly names onto the ids I care about in that same settings panel and use those names everywhere else in the app.

Two API details to bake in. Calendar and conversation calls need the Version header 2021-04-15 while contact calls need 2021-07-28. Calendar events are fetched one calendar at a time over a date window rather than as a single global list, so the scoreboard handler has to fan out across the selected calendars and aggregate the counts itself. Keep that fan out gentle enough to stay inside the burst limit of 100 requests per 10 seconds, and cache each scoreboard result per range so flipping between days does not refetch everything.

Related prompts

Explore more prompts
A revenue and receivables dashboard for GoHighLevelA morning pipeline board for your GoHighLevel dealsFill tomorrow's empty GoHighLevel slots before they go to wasteAlert your team when GoHighLevel messages go unansweredTurn new GoHighLevel bookings into rep-ready pre-call briefsTriage new GoHighLevel conversations and draft the replyRe-engage dormant GoHighLevel contacts with personal messagesLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesiMessage campaign console with pre-flight checks and delivery board