Daily
Get reminded before contracts renew
Your team hears in Slack a month before a contract renews, and when an invoice in your sheet goes overdue.
- Runs
- Daily
- Apps
- Google Sheets, Slack
- AI
- Not needed
- Access
- Sheets read+write; Slack chat:write
Send this to your assistant
Create a ClickRuntime automation: every morning, check my Contracts sheet and post to #finance any contract renewing in the next 30 days and any invoice that's overdue.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A small software vendor keeps its customer contracts and invoices in a Google Sheet: customer, annual value, renewal date, invoice due date, status. Nobody looks at it daily. A 12,000 dollar renewal slips by because the notice window passed with no one noticing, and two invoices stay unpaid for ten weeks because nobody chased them. The information was all there, and no one was reminded of it.
Each day, ClickRuntime reads the rows in your sheet and compares the renewal and due dates with today. Contracts that renew within the notice period, and invoices past their due date, are collected into one grouped Slack message. Rows that have been reminded are marked, so the same item is not announced every morning.
Account managers, finance teams and agency owners use it to make sure dates in a sheet turn into action.
What you get out of it
Renewals are never missed
A reminder 60 or 30 days ahead gives account managers time to renew, renegotiate or plan the end of a contract. A missed notice window can lock in an unwanted term or lose revenue entirely.
Overdue invoices are chased sooner
Payment gets harder the longer it is left. A Slack message that lists overdue invoices means finance follows up in days, which improves cash flow and keeps late payers from drifting for months.
One grouped message, not forty pings
Collecting all items into one post keeps the channel readable. The team sees a single list every morning, with customer, amount and date, and can split up the follow-ups on the spot.
Accountability in the team channel
When reminders are public, ownership is clearer. A colleague can reply in the thread that they have it, which avoids two people contacting the same customer and nobody contacting another.
The sheet becomes a working system
Teams that already keep contracts in a sheet do not need new software. A daily check turns a passive list into a process, with the dates driving action instead of waiting to be read.
How it works
What happens, step by step
Every day, ClickRuntime reads the Contracts tab of your Google Sheet with each client's renewal date, invoice due date, paid status and amount.
It picks out contracts renewing in the next 30 days and unpaid invoices that are past their due date.
One message appears in your #finance Slack channel, with renewals in one list and overdue invoices, with how many days late, in another.
Before it runs live
- Connect your Google Sheets account and pick the spreadsheets it may use
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
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
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Gmail
- Combine it with other Google Sheets and Slack steps into one automation
Under the hood
The code that runs this automation
from datetime import date, timedelta
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, notify
SHEET_ID = "your-spreadsheet-id"
@on_trigger
def run(event):
sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
rows = sheets.spreadsheets().values().get(spreadsheetId=SHEET_ID, range="Contracts!A2:E").execute().get("values", [])
today = date.today()
renewing, overdue = [], []
for row in rows:
client, renews, invoice_due, paid, amount = (row + [""] * 5)[:5]
if renews and today <= date.fromisoformat(renews) <= today + timedelta(days=30):
renewing.append(f"• {client} renews {renews}")
if invoice_due and paid.lower() != "yes" and date.fromisoformat(invoice_due) < today:
overdue.append(f"• {client}: {amount} due {invoice_due} ({(today - date.fromisoformat(invoice_due)).days} days late)")
if renewing or overdue:
notify.slack("*Renewing in 30 days*\n" + ("\n".join(renewing) or "none") +
"\n\n*Overdue invoices*\n" + ("\n".join(overdue) or "none"), channel="#finance")
return {"renewing": len(renewing), "overdue": len(overdue)}FAQ
Common questions
How far ahead can it remind me about renewals?
How does it know a reminder was already sent?
Do my dates need a special format?
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
Monitor a list of websites from a sheet
Add a site to your sheet and you'll hear in Slack whenever it goes down or comes back, with a log of every outage.
See how it worksNever let an SSL certificate expire
Keep your domains in a sheet, and Slack warns you three weeks before any certificate runs out.
See how it worksTrack the topics you care about across the web
Keep a list of sites and feeds in a sheet. Only the new items about your topic reach Slack, each with a short summary.
See how it worksKeep exploring
Set up “Get reminded before contracts renew” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.