Skip to content

On a schedule

Get today's schedule by text each morning

Every weekday morning you get a text listing today's events from your Google Calendar.

Runs
On a schedule
Apps
Google Calendar, Twilio
AI
Optional
Access
calendar.readonly; Twilio send

Send this to your assistant

Create a ClickRuntime automation: every weekday at 7am, text me a short list of today's events from my Google Calendar.

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

People who work on the move, such as tradespeople, field engineers and consultants, often start driving before they've looked at their calendar. A quick look at the phone at a red light isn't the same as knowing the plan.

A short text with today's schedule, waiting when you wake up, gives you the day at a glance on any phone, with no app to open.

What you get out of it

  • The day at a glance

    Times and titles in one short text.

  • Works on any phone

    No app or signal-hungry calendar needed.

  • Nothing missed

    Early meetings and late changes are in the morning text.

  • Optional summary

    AI can turn a busy day into a couple of readable lines.

How it works

What happens, step by step

  1. Every weekday morning it reads today's events from your Google Calendar.

  2. Events are listed in time order with their start time and location.

  3. On busy days, AI can shorten the list into a couple of lines.

  4. The schedule is texted to your phone.

Before it runs live

  • Connect Google Calendar
  • Connect Twilio

What you get

RunsOn a schedule
Get today's schedule by text each morningtoday, 9:00Succeeded
SMS · MeToday: 08:30 Boiler service @ 12 Acme Rd; 11:00 Quote, Northwind Bakery; 15:00 Supplier call

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

  • Run it at a different time, more or less often, or only on weekdays
  • 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 and Twilio 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.
daily_calendar_summary_by_sms.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from twilio.rest import Client
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, ai

MY_PHONE = "+447700900123"
FROM = "+15005550006"

def sms(to, body):
    return Client(credentials.secret("TWILIO_ACCOUNT_SID"), credentials.secret("TWILIO_AUTH_TOKEN")).messages.create(to=to, from_=FROM, body=body)
cal = lambda: build("calendar", "v3", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).events()

@on_trigger
def run(event):
    start = datetime.now(timezone.utc).replace(hour=0, minute=0, second=0)
    items = cal().list(calendarId="primary", timeMin=start.isoformat(), timeMax=(start + timedelta(days=1)).isoformat(),
                       singleEvents=True, orderBy="startTime").execute()["items"]
    lines = [f"{e['start'].get('dateTime', 'All day')[11:16] or 'All day'} {e.get('summary', 'Busy')}"
             + (f" @ {e['location']}" if e.get("location") else "") for e in items]
    text = "Today: " + ("; ".join(lines) if lines else "nothing scheduled")
    if len(text) > 300:
        try:
            text = ai.generate(text, system="Shorten this schedule to under 300 characters, keep times.", max_output_tokens=100).text.strip()
        except ai.AIError:
            text = text[:300]
    sms(MY_PHONE, text)
    return {"events": len(items)}

FAQ

Common questions

Can it include locations?
Yes. Locations are added after each event if they're set.
What about all-day events?
They're listed first, without a time.
Does it run at weekends?
Weekdays only by default. You can add weekends.
What permissions does it need?
calendar.readonly; Twilio send. Nothing else in your accounts is used.
Does it need AI?
No, but you can ask for an AI step (for example a summary). It then uses ClickRuntime's built-in AI allowance.
How many runs does it use?
One run each time it runs (on a schedule). Checks that find nothing to do and stop right away aren't counted.
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 “Get today's schedule by text each morning” from your assistant

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