The moment it happens
Book appointments only when you're free
Booking requests are accepted only for free slots within your hours, and land on your calendar with the attendee.
- Runs
- The moment it happens
- Apps
- Google Calendar
- AI
- Not needed
- Access
- read+write (calendar.events, calendar.freebusy)
Send this to your assistant
Create a ClickRuntime automation: give me a booking link. For each request, check my Google Calendar for that slot between 9am and 5pm on weekdays, and create a 30-minute appointment with the attendee if I'm free. Otherwise reply that the slot is taken.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A massage therapist takes bookings through a web form, and twice last month two clients ended up with the same Thursday 3 pm slot. One was turned away awkwardly by text. Requests also arrive for 9 pm and Sunday morning, outside her working hours, and she has to reply to each one manually. Every manual check is a chance to double book or to answer too late.
When someone submits the booking form, it calls a ClickRuntime trigger link with the requested time and the person's details. ClickRuntime checks Google Calendar's free and busy information, rejects slots outside business hours or already taken, and otherwise creates the event with the attendee. The result is returned to the form or sent by email.
Consultants, tutors and clinics use it as a simple alternative to a full scheduling tool.
What you get out of it
Double bookings stop happening
The calendar is checked before an event is created, so a taken slot is declined at the moment of request. No more apologetic texts to a client who thought they were confirmed.
Out-of-hours requests are declined politely
Requests for midnight or Sunday morning are rejected by rule, with no manual reply needed. You keep your boundaries, and the client gets an immediate answer instead of waiting for you.
Instant confirmation for clients
People get a yes or no right away, with the event invitation in their inbox. Fast confirmation reduces drop-off, because a visitor deciding whether to book is unlikely to wait a day.
Everything lands on one calendar
Accepted bookings are real events on the calendar you already use. No second system to check and no copying details from a form into the calendar by hand. Your calendar reminders and your phone notifications work exactly as before.
Cheaper than a full booking platform
For a small practice with simple rules, a form and a check does the job. You avoid a monthly subscription for features you do not need while still protecting your time.
How it works
What happens, step by step
When someone asks for a time slot through your booking form or voice agent, ClickRuntime receives the request.
It turns down requests outside weekday business hours.
It checks your Google Calendar to make sure you are free for that half hour.
If you are, it books the event and sends the person an invite. Either way, they get a clear reply straight away.
Before it runs live
- Connect Google Calendar
- Paste your automation's link into the other app's webhook settings
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
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Google Calendar steps into one automation
Under the hood
The code that runs this automation
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
from clickruntime import on_event, credentials
TZ = ZoneInfo("Europe/London")
@on_event
def handle(event):
req = event.json or {}
start = datetime.fromisoformat(req["start"]).astimezone(TZ)
end = start + timedelta(minutes=30)
if start.weekday() >= 5 or start.hour < 9 or end > start.replace(hour=17, minute=0):
return {"booked": False, "message": "Please pick a weekday slot between 9am and 5pm."}
cal = build("calendar", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
busy = cal.freebusy().query(body={"timeMin": start.isoformat(), "timeMax": end.isoformat(),
"items": [{"id": "primary"}]}).execute()["calendars"]["primary"]["busy"]
if busy:
return {"booked": False, "message": "That slot is taken, please choose another."}
cal.events().insert(calendarId="primary", sendUpdates="all", body={
"summary": f"Appointment with {req['name']}",
"start": {"dateTime": start.isoformat()}, "end": {"dateTime": end.isoformat()},
"attendees": [{"email": req["email"]}],
}).execute()
return {"booked": True, "message": f"Booked for {start:%a %d %b %H:%M}."}FAQ
Common questions
How does it know I am busy at a given time?
Can I set different working hours for different days?
What does the client see if the slot is taken?
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
Push your next meeting back with one button
One press moves your current or next meeting later by 15, 30 or 60 minutes.
See how it worksAdd events by sending plain text
Text like 'Dentist Tuesday 3pm' becomes a calendar event with the right date and time.
See how it worksSync an outside calendar feed into Google Calendar
Events from a feed or another tool appear in your calendar and stay up to date as they change or get cancelled.
See how it worksKeep exploring
Set up “Book appointments only when you're free” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.