Skip to content

The moment it happens

Check booking requests against your calendar and book the good fits

When someone asks for an appointment, it is checked against your criteria and your calendar, booked if it fits, and the person gets a confirmation or a polite decline.

Runs
The moment it happens
Apps
Gmail, Google Calendar
AI
Yes, uses the built-in AI allowance
Access
Calendar read+write (calendar.events); Gmail gmail.send

Send this to your assistant

Create a ClickRuntime automation: when my booking form sends a request, decide whether it's a good fit, check my Google Calendar for that slot, create the event and email the person a confirmation or a polite decline.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A business coach offers free 30-minute intro calls. Half the requests are from students, other coaches or people outside her area, and each one costs her a back-and-forth by email before she can say yes or no.

Screening each request against your criteria and your calendar the moment it arrives gives good-fit clients an instant booking and everyone else a courteous answer, without you sorting them by hand.

What you get out of it

  • Good clients are booked straight away

    A suitable request with a free slot becomes a calendar event and a confirmation email within a minute, while the person is still interested.

  • Poor fits get a kind answer

    People who are not a match receive a polite decline rather than silence or a booked call that goes nowhere.

  • No double bookings

    The slot is checked against your calendar before anything is created.

  • You stay informed

    You get an email for every request with the decision and the reason, so you can override it if needed.

How it works

What happens, step by step

  1. When someone submits your booking form, the request is sent to ClickRuntime.

  2. AI compares the request with your description of a good-fit client.

  3. For a good fit, ClickRuntime checks your Google Calendar to make sure the requested time is free.

  4. If it is, the event is added to your calendar with the person invited and they get a confirmation email. Otherwise they get a polite decline, and you get a note either way.

Before it runs live

  • Connect Google through your own Google app (a one-time, 10-minute setup), so it works with your own Gmail
  • Connect Google Calendar
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Check booking requests against your calendar and book the good fitsjust nowSucceeded
Email · Booking confirmationHi Alex, you're booked for Thursday 23 October at 10:00. A calendar invite from Acme Coaching is on its way.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Slack
  • Combine it with other Gmail and Google Calendar steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
qualify_and_book_appointment_requests.pyexample
import base64
from datetime import datetime, timedelta
from email.message import EmailMessage
from clickruntime import on_event, credentials, http, ai, notify

IDEAL = "Owners of service businesses with at least 5 staff, based in the UK."
CAL = "https://www.googleapis.com/calendar/v3"

def send(h, to, subject, text):
    m = EmailMessage(); m["To"] = to; m["Subject"] = subject; m.set_content(text)
    http.post("https://gmail.googleapis.com/gmail/v1/users/me/messages/send", headers=h, json={"raw": base64.urlsafe_b64encode(m.as_bytes()).decode()})

@on_event
def handle(event):
    p = event.json or {}
    h = {"Authorization": f"Bearer {credentials.connection('google', 'work')}"}
    fit = ai.generate(f"Ideal client: {IDEAL}\nRequest: {p.get('message', '')[:2000]}\nAnswer yes or no.", max_output_tokens=5).text.lower().startswith("yes")
    start = datetime.fromisoformat(p["start"])
    end = start + timedelta(minutes=30)
    busy = http.post(f"{CAL}/freeBusy", headers=h, json={"timeMin": start.isoformat(), "timeMax": end.isoformat(),
                     "items": [{"id": "primary"}]}).json()["calendars"]["primary"]["busy"]
    if fit and not busy:
        http.post(f"{CAL}/calendars/primary/events", headers=h, params={"sendUpdates": "all"}, json={"summary": f"Intro call: {p['name']}",
                  "start": {"dateTime": start.isoformat()}, "end": {"dateTime": end.isoformat()}, "attendees": [{"email": p["email"]}]})
        send(h, p["email"], "Your call is booked", f"Hi {p['name']}, you're booked for {start:%A %d %B at %H:%M}. A calendar invite is on its way.")
    else:
        send(h, p["email"], "About your call request", f"Hi {p['name']}, thank you for getting in touch. I'm not able to take this call, but I wish you the best.")
    notify.email_me(f"Booking request from {p['name']}", f"Fit: {fit}. Slot free: {not busy}.")
    return {"booked": fit and not busy}

FAQ

Common questions

How does it decide who is a good fit?
You describe your ideal client in a few sentences, for example business owners with a team of five or more. The AI compares each request with that description.
What if the requested time is taken?
The person gets an email saying the slot is no longer free with a link back to your booking form to choose another.
Which form tools work?
Any form that can send a webhook on submission, with the person's name, email, preferred time and a short message.
What permissions does it need?
Calendar read+write (calendar.events); Gmail gmail.send. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Check booking requests against your calendar and book the good fits” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.