- Home
- Case studies
- One place where customers can book their own appointments
One place where customers can book their own appointments
We brought scattered appointment booking into one platform: calendars for each location, a service menu, and automatic reminders.
3 min read
- Client
- Service company (appointment bookings)
- Industry
- Services / Marketing automation
- Scope
- AI voice agents and telephony
Who the client was and what was getting in the way
A service company booking appointments across several locations. Booking itself worked, but it was scattered: some appointments came in by phone, some by message, and others were written into an individualβs calendar. There was no single place to send customers and no view where the team could see every appointment at once. The result was always the same: someone added an appointment somewhere others could not see it, and two people ended up with the same time slot.
The second problem was structural. Each location has different availability, and each service has its own duration and rules. Squeezing everything into one shared calendar means a customer can book a time the business cannot actually accommodate, and someone then has to call back with an apology.
The third issue was manually sending confirmations and reminders. Someone had to remember to send a message the day before. Sometimes they remembered, sometimes they did not, and customers who received no message simply failed to show up. There was also a need for consistency: the company already had working automations and customer communications, so booking had to fit into them rather than sit alongside them as a separate system half the team would forget about.
What we built
This was not a coding project. It was a GoHighLevel configuration project, and its value came from getting the structure right the first time. Reworking calendars after customers have started booking is painful.
We started by splitting the calendars: one for each location, with its own availability and rules. On top of that, we configured a service menu where every option has its own duration and constraints, so availability is calculated accurately rather than by guesswork. A customer choosing a longer service sees only time slots that can actually fit it.
We then built a public booking page. Customers choose a location, choose a service, see the available times, and book themselves. There is no waiting for a reply from the company β that was the step where the most people were getting lost.
Finally, we connected the automations: a confirmation immediately after booking, a notification to the team, and a reminder before the appointment. Everything runs on the same platform and through the same workflows the company uses for its other communications. We tailored booking forms to each location and service so that message content matches what the customer actually booked.
How it works today
Customers receive one link. They choose a location and service, see genuinely available times, and book for themselves at any time of day. They get a confirmation immediately and a reminder before the appointment. The team sees every appointment across all locations in one view and no longer has to ask whether someone might have added one to their own calendar.
Bookings are not an isolated island: they sit on the same platform as the rest of the customer communications, so an appointment appears in the context of the full contact history. Maintenance means updating availability when opening hours change and does not require our involvement.
The outcome
All bookings now run through one central platform instead of three parallel booking methods. Calendars are separated by location and service, so the availability shown to customers is accurate. Notifications, confirmations, and reminders are automatic, with no one having to remember to send them. Customers book through self-service and do not have to wait for a callback.
What we would do differently
We collected the full availability rules from the client too late. During implementation, we found exceptions that were not in the initial description: different hours on certain days and breaks in the middle of the day. Rebuilding calendars after connecting the automations cost more than getting it right at the start. Next time, we will have a dedicated conversation about schedule exceptions before changing any configuration.
The second lesson concerns the number of services in the menu. A menu that is too large at launch overwhelms customers, so it is better to start with a few options and add the rest once we can see what people actually click.
Related projects
A voicebot that answers routine appointment calls
A bot connected to the medical system handles confirmations, cancellations, and questions about appointment times. The line stays free for patients who need a person.
An AI receptionist that answers calls people miss
A bot takes missed calls and checks the CRM to see who is calling. The team gets a ready-to-read summary instead of just a number on a list.