Skip to content

The moment it happens

See row changes from Smartsheet in Slack

When a row in your tracker is edited, a Slack post shows which cells changed and what they were before.

Runs
The moment it happens
Apps
Smartsheet
AI
Not needed
Access
read

Send this to your assistant

Create a ClickRuntime automation: when any row in my Smartsheet 'Project Tracker' is updated, post to #projects in Slack with the task name and the old and new values of the cells that changed.

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 sheet that several people edit is a source of quiet surprises. A contractor changes a delivery date from the 12th to the 26th, a salesperson raises a deal amount, a status flips from In Progress to Blocked, and nobody else on the project is told. Smartsheet keeps cell history, but you only see it by opening the row and checking. By the time the change is noticed, other people have made plans around the old value and the correction costs a day.

When a row changes, Smartsheet notifies ClickRuntime, which fetches the row, compares it with the copy it stored last time, and posts a message to Slack showing exactly what was different, such as the date moving from one value to another. Changes in columns you do not care about can be ignored.

Project managers, account owners and finance teams use it to watch the columns that other people can influence.

What you get out of it

  • Changes are seen as they happen

    A blocked status or a moved date reaches the team within moments, so dependent work can be rescheduled before wasted effort piles up on the wrong assumption. The earlier the team knows, the less rework follows.

  • The before and after are shown

    A post stating that Due Date moved from March 12 to March 26 is far more useful than a general notice that a row was updated, and it avoids opening the sheet to hunt for the change.

  • Sensitive columns get oversight

    If budget, approved amount or contract value changes, finance sees it directly. An unexpected edit can be questioned the same day, while the person remembers why they made it. That is far more effective than a quarterly review of change history.

  • Accountability is gentle but real

    When changes are visible in a channel, people think twice before altering shared data casually, and they are more likely to leave a comment explaining the reason. Nobody has to police the sheet for it to work.

  • Stakeholders stay informed without access

    A client or executive can follow important changes in a Slack channel without being given edit rights to the working sheet or being asked to refresh it daily. That keeps the working sheet clean and the audience informed.

How it works

What happens, step by step

  1. When a row changes in your Smartsheet sheet, Smartsheet tells ClickRuntime straight away.

  2. The automation reads the row and compares it with the copy it saved last time.

  3. A message goes to your Slack channel showing which fields changed, from what to what. The new copy is saved for next time.

Before it runs live

  • Connect Smartsheet
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
See row changes from Smartsheet in Slackjust nowSucceeded
Slack · #projectsAcme onboarding changed Status: In Progress → Blocked Due Date: 10/24/26 → 10/31/26

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 Smartsheet 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.
updated_row_alerts.pyexample
from clickruntime import on_event, state, notify, http, credentials

API = "https://api.smartsheet.com/2.0"

@on_event
def handle(event):
    challenge = event.header("Smartsheet-Hook-Challenge")
    if challenge:
        return {"smartsheetHookResponse": challenge}
    body = event.json or {}
    headers = {"Authorization": "Bearer " + credentials.connection("smartsheet", "main")}
    posted = 0
    for row_id in {e["id"] for e in body.get("events", []) if e.get("objectType") == "row" and e.get("eventType") == "updated"}:
        row = http.get(f"{API}/sheets/{body['scopeObjectId']}/rows/{row_id}", headers=headers, params={"include": "columns"}).json()
        titles = {c["id"]: c["title"] for c in row["columns"]}
        now = {titles[c["columnId"]]: c.get("displayValue", "") for c in row["cells"]}
        before = state.get(f"row:{row_id}") or {}
        changes = [f"{k}: {before.get(k, '?')} → {v}" for k, v in now.items() if before and before.get(k) != v]
        state.set(f"row:{row_id}", now)
        if changes:
            notify.slack(f"{now.get('Task Name', 'Row')} changed\n" + "\n".join(changes), channel="#projects")
            posted += 1
    return {"posted": posted}

FAQ

Common questions

How does it know what changed?
It keeps a stored copy of each row's values. When Smartsheet reports an update, the current row is compared to that copy cell by cell and only the differences are listed in the message. Nothing is guessed, and only real differences are shown.
Can I watch only certain columns?
Yes. If you care only about Status, Due Date and Budget, changes elsewhere, like a notes column, are ignored. That keeps the channel quiet and the alerts focused on the cells that affect decisions. That is the best way to keep alerts valuable over months.
What happens the first time a row is seen?
With no stored copy to compare against, the first view of a row is saved as the baseline and no alert is sent. After that, every later change is compared with the saved version and reported.
What permissions does it need?
read. 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 for each event the app sends.
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 “See row changes from Smartsheet in Slack” from your assistant

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