Every 10 minutes
Get told when your calendar changes
When someone books, moves or cancels a meeting on your calendar, you hear about it in Slack.
- Runs
- Every 10 minutes
- Apps
- Google Calendar
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: check my Google Calendar every 10 minutes and tell me in Slack when an event is added, moved or cancelled, with the title and new time.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A clinic receptionist manages a shared Google Calendar where doctors, patients and the billing team all add and move appointments. A patient reschedules from 10 am to 4 pm, and the new time is on the calendar, but the doctor has already left the room to prepare for the old slot. Notifications from Google Calendar are per person and easy to miss, so changes spread only when someone happens to look.
Every 10 minutes, ClickRuntime asks Google Calendar for what changed since the last check, using a saved sync token, and posts new, changed and cancelled events to a Slack channel. The message shows the title, the new time and what the previous one was, so everyone sees the update at once.
It suits teams that share one calendar and want changes announced without checking it constantly.
What you get out of it
Last-minute moves are not missed
A moved appointment shows up in Slack within minutes, with the old and new time side by side. The person who needed to know hears about it before they walk into an empty room or a double booking.
Cancellations are announced too
A cancelled event is posted as cancelled, not silently removed. That lets staff free up the room, release the equipment or call the next person on the waiting list while the slot is still useful.
One channel instead of many inboxes
Google Calendar notifications go to individuals, who mute or ignore them. A shared channel puts the same update in front of the whole team, so nobody can say they did not see it.
Only changes are reported
The sync token means the check fetches just what is different since last time. The channel stays readable, because routine unchanged events never appear, and each post is something that actually needs attention.
A running history of schedule changes
Scrolling the channel shows when and how an event changed. If there is a dispute about whether a patient was told about a new time, the timestamped message settles it.
How it works
What happens, step by step
Every 10 minutes ClickRuntime asks Google Calendar what has changed since its last check.
It picks out events that were added, moved or cancelled.
Each change is posted to your Slack channel with the event name and its new time.
It remembers where it left off, so you never get the same change twice.
Before it runs live
- Connect Google Calendar
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 googleapiclient.errors import HttpError
from clickruntime import on_trigger, report_fetched, credentials, state, notify
@on_trigger
def run(event):
cal = build("calendar", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
token = state.get("sync_token")
try:
resp = cal.events().list(calendarId="primary", syncToken=token, showDeleted=True).execute() if token \
else cal.events().list(calendarId="primary", timeMin="2026-01-01T00:00:00Z", maxResults=2500).execute()
except HttpError as e:
if e.resp.status != 410:
raise
state.delete("sync_token") # token expired: start over next run
report_fetched(0)
return {"summary": "Sync reset"}
changes = resp["items"] if token else []
report_fetched(len(changes))
state.set("sync_token", resp["nextSyncToken"])
for e in changes:
if e["status"] == "cancelled":
notify.slack(f"Cancelled: {e.get('summary', 'an event')}", channel="#calendar")
else:
when = e["start"].get("dateTime", e["start"].get("date"))
notify.slack(f"Added or moved: {e.get('summary')} – now {when}", channel="#calendar")
return {"changes": len(changes)}FAQ
Common questions
Will I see who made the change?
How quickly does the alert arrive?
Can I watch several calendars with one alert?
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
Get a Slack reminder before each meeting
About 10 minutes before each meeting you get the title, attendees and video link in Slack.
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 worksBook 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.
See how it worksKeep exploring
Set up “Get told when your calendar changes” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.