Send Appointment Reminders With AI Voice Agents

Youtube Channel
Brenden Jowett

Content

        In this video, I'm going to walk you through how to build an AI voice agent that automatically calls leads before their appointments to confirm availability. This will reduce no-shows and boost your shop rates without lifting a finger. Here's a quick demo. Hey, this is Brendan speaking. Hi Brendan, I'm Emily, an AI voice agent from Inflate AI. I just wanted to remind you that you have an AI discovery call with us coming up in about 2 hours. We just wanted to check if you are still available for our call. Oh, okay. Yeah, I'm absolutely available for that. You said that was in about 2 hours. Yes, that's correct. Your AI discovery call is scheduled to take place in about 2 hours. Do you have any further questions before our call? No, that's all good. Thank you. You're welcome. If you need anything else, feel free to reach out. Looking forward to speaking with you in a bit. We used to waste hours manually following up before calls, even with automated texts and emails through Countly. But despite all of that, people still wouldn't show up. It just wasn't enough to get prospects to actually engage. We really needed something that could engage leads directly and not just be another reminder. So, we built an AI voice agent that called every lead a couple of hours before their appointment and just asks straight up if they're going to be showing up. I'm Brendan. I run Inflate AI, where I spent the last 2 years building automation workflows and AI agents for businesses. The build I'm showcasing today is something we benefit from every day, and I hope you will, too. To build this system, we'll use retail AI to create the voice agent and make.com to automate the workflow, detect new bookings, and trigger the call a few hours before each meeting. And to get access to all of the templates featured in this video, you can actually join my free school community linked in the description. We've got over 10,000 members. It's a really great place to ask questions, share insights, and connect with like-minded members. So without further ado, this right here is Retail AI and this is one of the voice agents or it's the voice agent that we're using currently within our agency for appointment reminders. And this is also the agent that you heard just earlier in the demo part of this video. So this is our outbound appointment reminder. And so this is on retail AI. Once again, if you haven't yet built a voice agent on retail, I've got a lot of other videos showcasing how to build these systems. This is going to be more of a walkthrough of this system that we've got up and running and how you can also build something similar. So, right away I'm going to dive into the prompt that I've gone ahead and built out for our appointment reminder system. Now, ultimately in the sort of scale of complex to simple prompts, this is on the more simple side of a prompt. The overall flow and structure of this agent is actually very simple. We're just asking people if they remember that they've got an appointment. Can we confirm availability and then potentially maybe reschedule them as well? And that's ultimately all the flow is going to be. That's the whole goal of it is just to call them up, check availability. We're not going to be doing too many other actions. Uh we really want to keep it nice and simple and just achieve what we're looking for. And so if you're familiar with my sort of prompt template structure, you'll see here in the prompt here the structure that I have. So I've got the role which talks about its personality, what its objectives are, what its purpose is. Underneath that I have the task. So what are we actually trying to achieve specifically? Below that we have an an initial greeting. The way that this agent is set up specifically maybe a bit different to how inbound agents are set up is that this agent will not speak first. So it's going to call through obviously an outbound call. You're going to pick up the phone. The agent's not going to say anything until you do. And the purpose of that is just to make sure that the person being called is not being spoken over with by an immediate system and it's just going to wait for them to speak. If we are going to be doing that, what we're going to have to do is put the initial greeting into the prompt directly rather than through the welcome message. So, I've pretty much just prompted it to read out the message after the first conversation that occurs, which is, "Hi, I'm Emily, an AI voice agent from Inflate AI. I just wanted to remind you that you have an AI discovery call coming up in about 2 hours. We just wanted to check if you're still available for our call." So, really super simple, and that is probably the main part of what we're trying to achieve. We just want to let them know who we are, what we're calling about, when is the meeting actually going to be, and are you going to be available for that? We've prompted it to say that, and once the caller obviously hears that, they're going to be able to say yes or no. And then we have flows for that as well. But below this, we have the reschedule/canc. So this is also capable of providing booking links to reschedule and cancel the appointment. Now, so we currently use Cali for booking appointments and doing all of our scheduling within our agency. And the easiest way to integrate Calendarly from our end is just to send them the links to do it themselves. Obviously, we've got quite a big availability time. So, we we found it easier just to send them the booking link. So, right here, if the user would like to reschedule or cancel their appointment, please text them the booking link to do so. Do not read out the link to them. Send them the link via the text and ask if they have any further questions. Now, I'll get to where these links actually come from later in the video when I walk through the automations because these links are actually going to be injected via dynamic variables. But otherwise, we have some additional context here with service information. So, we have obviously a bit of information about us, our agency, myself, and what we do. And just covering a bit of the main questions that we get through our agency. Below that, we have some notes. So, a bit more notes here as to what we do and how we work and whatnot as well, just to make sure that obviously if anybody has questions, we can answer them. And it also acts as sort of a part qualification agent, although we actually built a separate agent to do qualifications, which I will briefly run through in a little bit as well. But the main focus is just to look at this agent. But that is ultimately it for this prompt. Once again, is actually super simple. The complexity of this agent is actually not going to be in the the structure of the prompt. And it is going to come down more to the automation and how we actually intend on triggering this call and all of the dynamic variables that we're going to be sending in for it to use. And you will notice that I am using some other variables in here. Mostly it's just the name variable that I'm using. Obviously, we want to make it personalized. If we have their name, we might as well use it. So jumping in to one of the key parts of this system that really drives it and makes it work really effectively is this make.com automation right here. And so what this does is that this is our sort of calendarly sort of agent form. So we get a booking from Kali and then we've got this entire automation to trigger multiple agents for multiple different reasons and to save information and transfer information mostly to update our Google calendar so that we have more insights as to what's actually happening on these calls as well. So, if that's a little bit confusing, I'm going to walk through this step by step. So, you've got complete clarity on exactly what this does. So, right out of the gate, we're using a Calendarly watch events module. So, this is just watching for all of the appointments that are coming through my calendarly. And it's obviously going to process depending on the event type specifically. So, I've got multiple calendarly events, but obviously I've only got one or specifically booking into our agency services. So, we want to make sure that we're triggering based on that, which is what the event type is, discovery. After that, we've got a consent. So obviously you can't send any outbound calls to somebody that hasn't directly consented to receive that call. And so on our calendarly form we actually have a a question that says by checking this box you consent to receive AI generated calls and other marketing communications. So very general message there although this allows us to get the consent to be able to send the call in the first place. And so obviously based on the response they give us that's either going to be yes or that's going to be no. And based on that outcome they either consented to receive a call or they haven't consented to receive a call. And if they haven't consented to it, obviously we're not going to send them a call if they happen. If they have uh that we can go down this path. Now, we have a couple of different variables here. This is all just coming from our currently link. And this is actually used for a separate agent that we're using within our agency. So on our booking form, we're obviously going to ask for monthly revenue, their project, a little bit about their business. These are just information that's coming directly from Cali. Then right after that, we have a our first retail step, which is creating a phone call. And this is not our appointment reminder system. This is actually a separate agent that we use for lead qualification. And so this agent is purely used to call directly after they've booked an appointment. So super speed to lead system. And the whole goal of that is just to qualify exactly what they've just filled out on the form actually matches what they tell us over the phone. And usually we get more information out of them over the phone compared to obviously just getting some textbased responses on calendarly. And this can really help just for the qualification process. mostly understanding what their budget is, how they feel about that, understanding exactly what they're looking for, making sure that it aligns with exactly what we do. But otherwise, if you did want to learn more about this agent specifically, just let me know in the comments below. This video is obviously specifically going to be about that appointment reminder agent. So, once that call is sent out through retail, we've got a sleep tool right here, which is just waiting for that person to have that call, finish the call, so that we can then retrieve the transcript to then obviously do stuff with that information. So that will sleep for about 300 seconds. Then we've got a retail AI get call step. So this is actually going to get the call that's just happened. So if I just click into the get a call step, you'll see that we're using the call ID that has just come from this module right here. And it's able to retrieve everything about that call. So it's going to give us the transcript. It's going to give us a summary. Any tool functions that were ran. Everything about that call we're going to be able to use within our automation. After that, we've got a Google calendar event automation. So, what we're doing is searching for the event that was just booked. We're then going to be getting in details about the event that was booked. And then we're updating details about the event as well. And this is relevant because this is where we're really going to get all the context about these calls that are happening. It's where it really streamlines the process on our end to quickly see summaries and status updates and potential issues or red flags with those who are booking calls because we can easily quickly see it just on my calendar. To give you a real example, this right here is my Google calendar. I've pretty much blurred most of it out because there is some private information in here about clients, but otherwise just give you an example of how this information is retrieved and read on our end. Essentially, what we do is we add the exact retail AI call and we add that at the bottom of our booking. And then below that, we provide a summary as to exactly what happened on that call. And so, we've prompted it to give us some details about exactly what we're probably going to be interested the most in. Uh, and this is what we can pretty quickly use to identify really any red flags just before our call. and then we can just cancel the call if needed or we can send them a follow-up email with questions and things like that. But this really really helps to quickly understand exactly what people are looking for. So that's exactly what this step right here does. Right after that, we have the step which is now going to be triggering our appointment reminder agent. So finally getting to the appointment reminder agent here, but it's good to get all the context as to what we're currently doing within our agency. So pretty much once we've updated that calendar event, we're going to be making sure to confirm the consent. Once again, might not need to do this a second time here because obviously it's only going to go down this path if there was consent overall anyways. But otherwise, we've got a runtime function. The purpose of this is to format exactly when they were looking to book the appointment. And what we're going to be doing is formatting a time that is 2 hours before that. So, obviously, this next agent is going to be calling them just 2 hours before the call. So, not right away, but 2 hours before their main appointment. And that's going to be super critical to ensuring that they are fully there, fully ready to take that appointment. And if they don't pick up or they're not there, then obviously there's going to be a bit of a red flag. But otherwise, pretty simple within make.com to format the date and then just add some hours. Well, in this case, we're obviously going to be removing 2 hours by doing -2. And that's just going to output a specifically formatted time that is 2 hours before the appointment. Then after this, we have two steps, which is super critical in terms of cancelling and rescheduling the appointments. So obviously over time not everybody is going to be available right then and there. And so if we can provide them some help to either cancel the appointment or reschedule it for a later date we can do that pretty easily. And so what we're going to be using are these two match pattern modules. And so what these two modules do is that it essentially looks for a particular pattern in a set of text to extract a particular value. And so what I mean by that is that what I've gone ahead and given this text passer module on make.com is the description from our Google calendar event. So on Calendarly, if somebody books an appointment with you, the cancel and reschedule links always get put into the Google calendar event that is created. And so when you get that description back, this specific description here, it always has the cancel and reschedule links contained within it. And so the easiest way to get access to these links is to simply create a pattern that looks for those links and then extracts them into a specific variable. So you can see here the pattern at the top here is essentially looking for any link that is sort of got this cancel label right here and then provided with some sort of account link for that specific booking. And if it seems a little bit complicated to write out this entire pattern, I didn't write out this pattern myself. I essentially went to chat GPT and told it to create a regular expression pattern that looked at the description and I essentially just said, can you create the pattern to extract the cancel link and then create a pattern to extract the rescheduling link? and it just did it all for me. It worked the first time. And obviously, you can just put it in there in the specific text passer module on make.com and that will work perfectly. And so I've done the exact same thing for the rescheduling. Unfortunately, Cali's APIs are not the best. It's pretty hard to get the cancel and rescheduling just through API from Cali. And so this is a super simple way to do it fully reliable as well. So once that's all done, the next part is the sort of critical part as to this entire setup. and that's going to be scheduling when the AI call is going to be sent. And so the way that we're doing this is that we're using a web hook trigger. And so if I click into this right here, this is a custom API request to Chron Hooks. So Chron Hooks allows us to schedule web hooks. Scheduling web hooks is really a simple concept. We're pretty much just saying at this specific date and time, I want you to trigger this web hook with this set of data specifically. And so rather than immediately sending out a call, we're just delaying it by communicating with a middleman to essentially understand what time it is, which in this case is chron hooks, it's going to essentially set up a timer to say in 7 hours, we're going to be sending this web hook with this specific set of data. And so this right here is chron hooks. And this is where all of essentially our requests are going to be coming through for obviously delaying and scheduling web hooks. And so what you can see now are essentially a bunch of web hook schedules that have been set up. And so you can see here about a day ago on June 11th at 8:00 a.m. a particular web hook request was scheduled to be sent. And that was essentially it waited probably a few hours before it sent that request. And then directly at 8:15 a.m. on June 11th, it sent that web hook to send that reminder call before their appointment yesterday. And so to set this up pretty simply, we just have to access the Chron Hooks API at the top here. They've got documentation all along their website. So I'll link Chron Hooks in the description if you'd like to use them. Ultimately, we're obviously just authenticating it through our APIs and the main part of it is going to be the request content. So, all we need to do to get this thing set up and running is provide it with our main URL. So, obviously going to be triggering it to trigger a specific URL at a set time. So, the main two things that we need to include are obviously going to be that specific URL. In our case, we've got a separate make.com automation separate to this that we're going to be specifically using for triggering the call. And so, I have put that make.com URL in this specific request. Then below this we have a name. So this name is the name of the caller. So this is actually coming from a chat GBT step that occurred earlier alongside this automation. So that's something that you will likely want to include. Then below this we've got the mobile number. So in this case it's coming from retail. If you aren't using an agent before this then you could just get the number directly from Cali and the Cali link. And obviously you need to collect a phone number in order to do that. Then below that we're also sending through the cancel link and the reschedule link. So once again, these are being sent through as variables into our AI agent so that it can be used later on. So we're sending through the cancel link, the reschedule link, then we're sending through an event ID. Purpose of sending through the event ID is so that later on in our secondary automation, we can actually look at once again our Google calendar event and update it so that at the bottom of our booking event, we can get an additional context as to what's been talked about on this brand new reminder call. And then below that, the most important part, when are we actually going to be running this automation? We've got the runtime, which comes directly from this variable here. So, it's just going to schedule it 2 hours before our actual call. So, that is it for this first part of the automation. Obviously, this right here is a little bit more extensive than what you actually need in order to just do reminders, but this is what we're currently using in our agency. Now, this is the second make.com automation that is going to be critical in ensuring that we can send these reminder calls and obviously provide that information back to ourselves. So, what's going to happen here is that we've created a custom web hook which is going to be triggered from our Chronooks request. So, obviously we're sending it to Chron Hooks to understand when to send the request. It also knows where to send the request with this web hook. Now, this will obviously only trigger exactly when Chron hooks sends it. It's going to come through the system. Retail AI is now going to be connected on this particular module to the new agent. So, it's connected to our appointment reminder agent right here. So, this agent is now connected directly to make.com to trigger. That is then going to be slept for about 300 seconds. So, we're waiting once again for that call to conclude. We'll then get the call. So, we're going to get use the call ID to get information from that call. Once that's happened, we're going to pull back the transcript. We're going to pull back the tool calls, anything that's happened on that call. And then we're going to once again go to Google calendar and we're going to be sending all that information off so that we on the back end can look through and understand exactly what's happened. And so obviously it's going to be using the event ID part of the structure that we just sent through to communicate with Google calendar and then just put it at the bottom. So quite simple for that last automation. Ultimately it's just going to be a web hook that sends the call and then pretty much job done. You're able to send the call 2 hours before the appointment. Going to be able to talk to the customer, ask if they're available to jump on the meeting and that is all good to go. Coming back to our retail agent, I'm just going to do a quick walkthrough of some of the functions that I've set up to complete this entire build. One of the first functions that we have is an end call function. This is a super static, super simple function. All it does is ends the call. As obvious as it is, pretty much as soon as somebody mentions that they're finished with the call, they don't want to speak with it anymore. They don't have any further questions. The AI will pretty intelligently understand if it should end the call. That's super good for cost cutting. you don't want these calls to go on for 45 minutes. So, if we can end the call, that's perfect. Super simple to do that. That is a pre-built function here in retail. So, you can just click end call and that's all done, ready to go. Below this, we've got a custom function. So, if we click add here, custom function. This is how we're going to be sending the text message booking link. So, this right here is connected to a third make.com automation which is going to be sending out both the cancel and the reschedule link. So just looking at our description at the top here, trigger this when the user would like to reschedule or cancel their appointment. So making it super clear exactly when this function should be ran. This is also backed up with additional prompting in the main prompt, of course, to understand when to trigger this. Below this, we have the API endpoint. So this is the make.com automation we're going to be looking at. And then below this, we have our parameters for the specific bits of data that we want to send off to our booking link automation. So obviously in this case, we're going to be offering them to cancel and reschedule. So that's pretty much all of the information that we're going to be sending off in this web hook. So what I've gone and done is if you just click down on these examples here, it's actually going to automatically generate structure that you can use. So it'll automatically generate this structure here if you're not the best at JSON. Then below this, you'll see description. This right here is one sort of property that you're sending off, one sort of variable that you're sending off. And this part right here, this is the name. So this is the name of the property. I've just named it cancel because it's a cancel link. It's a string. And the description, it's sort of like a prompt or it's sort of like a bit of text that we're using to send off. And then below this, we have the description, which is a string that we're sending off. And in this case, I've put in the variable of cancel. So, this is being sent through from our make.com automation that I showed earlier, which has the cancel and reschedule link variables being sent into our system here. And that's just going to send it off to our booking link automation. Same goes exactly the same with the reschedule link as well. They're going to both be sent off to our new automation. And so this right here is our send booking link SMS automation. Ultimately, what's happening is that we've got our main web hook obviously right here, which we're using to send information to. Once that happens, we're then going to be connecting directly into Twilio. Twilio allows us to connect our phone number. So, we obviously have to be registered to Twilio in order to get a number. This number also has to be A2P verified to make sure that you can send texts on it. Once that's all covered, you can essentially just use a variable on who you want to send the text message to. Obviously, in our case, when we make a function call from retail, we're automatically going to get the phone number actually come through. So, we can populate that within our automation. And then below this, we're going to have a body that just says, "Hi, this is Emily from Inflate AI. Here is the link to reschedule." So, we're going to be pulling through that particular variable for rescheduling. Here is a link to cancel with the variable to cancel. Please email Brendan if you have any further questions at my email. So obviously just providing a little bit of a backup there if anybody has further questions. But hopefully that gives you a good idea as to how we're handling rescheduling and cancelling and and handling and dealing with that pathway for this type of system. Once again, if you want to get access to all the templates in the retail agent that I just built, I'm going to add everything within my school community, which you can access using the link in the description. I hope that was a helpful video in understanding the use case and how to build this system for yourself. It's been pretty helpful for increasing the show up rate within our agency. really boosting and it's far better than just the emails and text that we were doing previously. If you are interested in learning more about AI Voice Agents, I definitely recommend checking out this video right here, where we actually helped a client generate around $400,000 a month in brand new opportunities

Additional Information

Type
Youtube Channel
Slug
send-appointment-reminders-with-ai-voice-agents
Created
December 27, 2025
Last Updated
December 27, 2025