Skip to content

Every hour

Put unpaid bills from a sheet into your calendar on their due dates

Every unpaid bill in your sheet shows up in your calendar on its due date with a reminder, and the event updates if the amount changes.

Runs
Every hour
Apps
Google Calendar, Google Sheets
AI
Not needed
Access
Sheet edit; Calendar read+write

Send this to your assistant

Create a ClickRuntime automation: for each unpaid bill in my sheet, create a calendar event on its due date with a reminder, and update it when the amount changes.

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 household and a side business share one bills sheet: rent, insurance, software, a supplier on 30-day terms. The sheet is accurate, but nobody opens it until a late fee arrives.

Putting each bill in the calendar, where everyone already looks, means due dates come with a reminder. When an amount changes, the event changes too, so nobody pays last month's figure.

What you get out of it

  • Fewer late fees

    A reminder before each due date gives time to pay. Late charges and awkward supplier calls become rare.

  • Bills where you already look

    Your calendar is open all day. A bill there is far harder to miss than a row in a sheet.

  • Amounts stay correct

    When you edit an amount in the sheet, the calendar event is updated to match.

  • The sheet stays the source

    You keep managing bills in the sheet you know. The calendar follows it.

How it works

What happens, step by step

  1. Every few minutes, ClickRuntime reads the unpaid bills in your sheet.

  2. For each new bill, it adds an event to your Google Calendar on the due date with a reminder.

  3. If a bill's amount has changed since last time, it updates the existing event instead of adding another.

  4. It writes the event link back to the row so each bill has exactly one event.

Before it runs live

  • Connect Google Calendar
  • Connect your Google Sheets account and pick the spreadsheets it may use

What you get

RunsEvery hour
Put unpaid bills from a sheet into your calendar on their due datestoday, 9:00Succeeded
Google Calendar · ReminderPay Acme Insurance: 312.40, due Friday 24 October

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
  • 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 and Google Sheets 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.
payment_due_date_reminders_from_a_sheet_into_calendar.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, report_fetched

SHEET_ID = "your-bills-sheet-id"

@on_trigger
def run(event):
    creds = Credentials(credentials.connection("google", "work"))
    values = build("sheets", "v4", credentials=creds, cache_discovery=False).spreadsheets().values()
    rows = values.get(spreadsheetId=SHEET_ID, range="Bills!A2:F").execute().get("values", [])
    todo = [(i, r + [""] * (6 - len(r))) for i, r in enumerate(rows, start=2)
            if len(r) >= 3 and (r + [""] * 6)[3].lower() != "yes" and (r + [""] * 6)[5] != r[1]]
    report_fetched(len(todo))
    if not todo:
        return {"changed": 0}
    cal = build("calendar", "v3", credentials=creds, cache_discovery=False).events()
    for i, (name, amount, due, _, event_id, _) in todo:
        body = {"summary": f"Pay {name}: {amount}", "start": {"date": due}, "end": {"date": due},
                "reminders": {"useDefault": False, "overrides": [{"method": "popup", "minutes": 2880}]}}
        if event_id:
            cal.patch(calendarId="primary", eventId=event_id, body=body).execute()
        else:
            event_id = cal.insert(calendarId="primary", body=body).execute()["id"]
        values.update(spreadsheetId=SHEET_ID, range=f"Bills!E{i}:F{i}", valueInputOption="RAW",
                      body={"values": [[event_id, amount]]}).execute()
    return {"changed": len(todo)}

FAQ

Common questions

How far ahead is the reminder?
Two days before the due date by default. You can choose a different reminder time when setting it up.
What happens when I mark a bill as paid?
Paid bills are skipped. The existing event stays in your calendar as a record unless you choose to remove it.
What columns does the sheet need?
A bill name, an amount, a due date and a paid column. A spare column is used to store the calendar event link for each row.
What permissions does it need?
Sheet edit; Calendar read+write. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new 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 “Put unpaid bills from a sheet into your calendar on their due dates” from your assistant

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