The moment it happens
Book meeting requests into Google Calendar and tell Slack
When someone requests a meeting through your form, the slot is booked in your calendar with a video link and #bookings hears about it.
- Runs
- The moment it happens
- Apps
- Google Calendar, Slack
- AI
- Not needed
- Access
- Calendar read+write; Slack chat:write
Send this to your assistant
Create a ClickRuntime automation: when my meeting request form is submitted, book the slot in Google Calendar and post it in #bookings.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A small consultancy takes discovery calls through a form on its website. Someone on the team checks the form, looks at the calendar, creates the event and lets everyone know. On busy days requests sit for hours, and twice a slot has been booked that was already taken.
This automation books each request the moment it comes in, checks the slot is actually free first, and tells the team in Slack, so prospects get a confirmed time straight away.
What you get out of it
Prospects get a confirmed slot immediately
A calendar invite with a video link arrives within a minute of the request, while the prospect is still interested.
No double bookings
The slot is checked against your calendar before anything is booked, so two meetings never land on the same time.
The whole team knows what is coming
A post in #bookings lets colleagues see new calls without opening anyone's calendar.
No one has to watch the form
Requests are handled the same way at any hour, including evenings and weekends.
How it works
What happens, step by step
Your meeting request form sends each submission to ClickRuntime.
ClickRuntime checks your Google Calendar to make sure the requested time is free.
If it is free, it books the meeting with a Google Meet link and invites the person.
It posts the booking in your #bookings Slack channel, or a note that the slot was busy.
Before it runs live
- Connect Google Calendar
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- 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 Google Sheets
- Combine it with other Google Calendar and Slack 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 clickruntime import on_event, credentials, notify
@on_event
def handle(event):
r = event.json or {}
start = datetime.fromisoformat(r["start"])
end = start + timedelta(minutes=int(r.get("minutes", 30)))
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:
notify.slack(f"⚠️ {r['name']} asked for {start:%a %d %b %H:%M}, but that slot is taken.", channel="#bookings")
return {"booked": False}
cal.events().insert(calendarId="primary", conferenceDataVersion=1, sendUpdates="all", body={
"summary": f"Call with {r['name']}", "description": r.get("message", ""),
"start": {"dateTime": start.isoformat()}, "end": {"dateTime": end.isoformat()},
"attendees": [{"email": r["email"]}],
"conferenceData": {"createRequest": {"requestId": event.event_id}}}).execute()
notify.slack(f"📅 Booked: {r['name']} ({r.get('company', '')}) on {start:%a %d %b %H:%M}", channel="#bookings")
return {"booked": True}FAQ
Common questions
What if the requested time is already taken?
Does the person get a calendar invite?
Which calendar are meetings booked into?
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
Create a Google Meet link with /meet in Slack
Type /meet in any Slack channel and a fresh Google Meet link is posted there for everyone to join.
See how it worksGet today's calendar in a Slack message every morning
Each weekday at 7am a Slack message lists your meetings for the day, so you see your schedule where you already work.
See how it worksFlag meetings on public holidays and post the on-call rota in Slack
Every Monday your team sees next week's meetings that clash with public holidays or leave, and who is on call this week, in one Slack post.
See how it worksKeep exploring
Set up “Book meeting requests into Google Calendar and tell Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.