The moment it happens
Add events by sending plain text
Text like 'Dentist Tuesday 3pm' becomes a calendar event with the right date and time.
- Runs
- The moment it happens
- Apps
- Google Calendar
- AI
- Yes, uses the built-in AI allowance
- Access
- read+write (calendar.events)
Send this to your assistant
Create a ClickRuntime automation: give me a link I can send text to. When I send something like 'Dentist Tuesday 3pm', work out the date and time and add it to my Google Calendar.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A freelance event planner copies dates from client emails, WhatsApp messages and spreadsheet rows into Google Calendar by hand. She mistypes a time zone on one, forgets to add the address on another, and misses a venue change completely. Each small error costs her a client's confidence, and the copying takes up time she would rather spend on the events themselves.
Anything you send to a ClickRuntime trigger link, such as a spreadsheet row, a forwarded email or plain text like "Lunch with Sam, Friday 12:30 at Rossi's", is parsed into a title, time and place. ClickRuntime creates the Google Calendar event and replies or emails you the link. Structured data is read directly, and loose text is understood with built-in AI.
It works well with a form, a shortcut on your phone or a row-added rule in a spreadsheet.
What you get out of it
Typing time disappears
Events appear from a single message or row, so you stop retyping details. That is especially valuable when you add a dozen events at the start of a project or a season.
Fewer mistakes in dates and times
Fields are read from the source instead of retyped. A message that says Friday at 12:30 becomes exactly that on the calendar, which beats the transposed digit or wrong day you get from manual entry.
Works from where you already are
Send from a phone shortcut, a spreadsheet or an email workflow. Capturing the event the instant it comes up means it is not forgotten between the conversation and the calendar.
Natural language is accepted
Informal messages like "dentist next Tuesday at 4" are understood with AI. You do not need a rigid format, which makes it realistic for the whole household or team to use.
Confirmation link every time
You get the event link back straight away, so you can check it looks right. Corrections are made while the details are fresh, not discovered on the day. The reply link also makes it easy to share the event with attendees.
How it works
What happens, step by step
When you send a line of plain text to your trigger link, such as "Dentist Tuesday 3pm", ClickRuntime receives it.
AI works out the event title, the date and time, and how long it lasts.
The event is created in your Google Calendar.
You get back the event details and a link to open it.
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
- 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 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, ai
TZ = "America/New_York"
SCHEMA = {"type": "object", "properties": {"title": {"type": "string"}, "start": {"type": "string"},
"minutes": {"type": "integer"}}, "required": ["title", "start", "minutes"]}
@on_event
def handle(event):
text = (event.json or {}).get("text") or event.body
now = datetime.now(ZoneInfo(TZ)).strftime("%A %Y-%m-%d %H:%M")
parsed = ai.generate(f"It is {now}. Turn this into an event with an ISO start time (no offset) "
f"and a length in minutes (default 60): {text[:300]}",
json_schema=SCHEMA, max_output_tokens=80).json
cal = build("calendar", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
start = datetime.fromisoformat(parsed["start"])
end = start + timedelta(minutes=parsed["minutes"])
created = cal.events().insert(calendarId="primary", body={
"summary": parsed["title"],
"start": {"dateTime": start.isoformat(), "timeZone": TZ},
"end": {"dateTime": end.isoformat(), "timeZone": TZ},
}).execute()
return {"created": parsed["title"], "start": parsed["start"], "link": created["htmlLink"]}FAQ
Common questions
What happens if the text is ambiguous or missing a time?
Can events be added to a calendar other than my main one?
Does it handle time zones?
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
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.
See how it worksPush 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 worksGet an overview of your week ahead
Each Sunday you get a short email on next week: busy days, key meetings and what to prepare.
See how it worksKeep exploring
Set up “Add events by sending plain text” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.