Every 15 minutes
Get told when a status changes in a shared sheet
When someone edits a status or owner, you see the old and new value.
- Runs
- Every 15 minutes
- Apps
- Google Sheets
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every 15 minutes, check my Pipeline sheet and tell me in Slack about any row whose Status changed, with the old and new value.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A property management team shares a tracker sheet with a status column and an owner column for each repair job. A technician switches a job to Done, a coordinator reassigns another to a new contractor, and someone changes an urgent job back to Waiting. Nobody is told, so the person who needs to know finds out when a tenant phones to ask why no one came, or when two contractors turn up for the same fix.
Every 15 minutes, ClickRuntime reads the sheet range and compares each row with the snapshot it saved the last time. When the status or owner of a row differs, a message lists the row, the old value and the new value. It then saves the new snapshot for the next comparison.
Project, facilities and operations teams use it where a few key columns matter more than the rest of the sheet.
What you get out of it
Handoffs are never silent
When ownership of a job changes, the new and old owners both see it. That prevents tasks from being dropped between people or worked on twice. Contractors are less likely to be double-booked.
Status changes reach those who need them
A job marked Done tells the coordinator to inform the tenant, while one moved back to Waiting signals a problem. Seeing the old and new value together makes the right response obvious.
Only important columns trigger messages
Ignoring notes and formatting edits means you hear about changes that matter. People still use the sheet freely, and your alerts stay meaningful. Cosmetic edits and long notes stay out of the way.
Accidental edits are caught
A status overwritten by a slip of the keyboard is visible within the interval. Fixing it quickly avoids decisions based on wrong data. Wrong data does less harm when it is fixed quickly.
A trail of who changed what, and when
The messages show the time of each change, which helps when two people remember a decision differently. A dated record settles questions that memory cannot. Disputes get resolved faster with a clear record.
How it works
What happens, step by step
Every 15 minutes ClickRuntime reads your shared Google Sheet, such as a sales pipeline.
It compares each row's status with what it was at the last check.
Any change is posted to your Slack channel showing the old and new status, such as Proposal to Won.
The current statuses are saved for the next check.
Before it runs live
- Connect your Google Sheets account and pick the spreadsheets it may use
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 Sheets 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 clickruntime import on_trigger, report_fetched, credentials, state, notify
SHEET_ID = "your-spreadsheet-id"
@on_trigger
def run(event):
sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets()
rows = sheets.values().get(spreadsheetId=SHEET_ID, range="Pipeline!A2:C").execute().get("values", [])
current = {r[0]: (r + ["", "", ""])[2] for r in rows if r} # deal name -> Status (column C)
before = state.get("status")
if before is None: # first run: remember the current statuses
state.set("status", current)
changes = [(k, before[k], v) for k, v in current.items() if before and k in before and before[k] != v]
report_fetched(len(changes))
if not changes:
return {"summary": "No changes"}
state.set("status", current)
notify.slack("Pipeline changes\n" + "\n".join(f"• {k}: {old} → {new}" for k, old, new in changes), channel="#sales")
return {"changes": len(changes)}FAQ
Common questions
Which columns can I watch?
How does it find the same row after sorting?
What if two changes happen between checks?
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 notified about new rows
Whenever a row is added to your sheet, you see it in Slack within minutes.
See how it worksScore new leads in your sheet
New leads get a score from 1 to 10 and a reason, so you know who to call first.
See how it worksTag customer feedback by sentiment and topic
Every feedback row gets a sentiment and topic, and the negative ones are flagged to you.
See how it worksKeep exploring
Set up “Get told when a status changes in a shared sheet” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.