Skip to content

Daily

Hear when a table stops updating

Each morning you're told if a table hasn't changed in the last day, so broken pipelines get noticed.

Runs
Daily
Apps
BigQuery
AI
Not needed
Access
read

Send this to your assistant

Create a ClickRuntime automation: every morning at 8am, email me if the analytics.events table hasn't been modified in the last 24 hours.

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

An analytics team depends on a BigQuery table that a nightly pipeline is supposed to refresh. When the upstream load fails, because a source API changed, a credential expired or a job timed out, the table keeps serving yesterday's data with no error. Dashboards still render and executives read last week's figures as if they were current, sometimes making a decision off numbers three days old.

Once a day, ClickRuntime reads the table's metadata from BigQuery, looks at its lastModifiedTime and compares it with the start of today. If the table has not been touched, you get an alert naming the table. The check is cheap because it reads metadata rather than scanning the data itself.

It fits data teams who own several critical tables and want a safety net independent of the pipeline that feeds them.

What you get out of it

  • Stale data caught before it misleads

    An alert on the same morning means someone fixes the load before the Monday report is built from old rows. Quiet staleness is the most damaging kind because nothing looks broken.

  • Pipeline failures surface without log-diving

    The table itself tells you the pipeline did not run. You learn about the failure even if the failing job never sent its own error message. Even an orchestrator that crashed without logging anything still gets caught, because the evidence is the table itself.

  • Trust in dashboards holds up

    When people know stale tables trigger a warning, they can rely on a dashboard that stayed silent. That confidence saves analysts from constantly defending the numbers. Fewer awkward corrections to reports that already went out.

  • Metadata checks keep costs near zero

    Reading table metadata does not scan stored data, so checking a large table every day costs next to nothing. You can monitor many tables without a noticeable bill. Teams with dozens of tables can cover them all for pennies, which makes broad monitoring realistic.

  • A check independent of the producer

    The monitor does not rely on the pipeline reporting its own failure. A crashed scheduler cannot also crash the thing that notices it. This separation is what makes it a genuine safety net rather than a duplicate of existing logs.

How it works

What happens, step by step

  1. Every morning, ClickRuntime checks when each of your chosen BigQuery tables last changed.

  2. It flags any table that has not been updated in the last day.

  3. If any are stale, you get an email listing each one and how many hours ago it last changed, so a broken pipeline gets noticed.

Before it runs live

  • Connect BigQuery

What you get

RunsDaily
Hear when a table stops updatingtoday, 9:00Succeeded
Email · 2 BigQuery tables are stalesales.orders: last changed 31 hours ago marketing.sessions: last changed 26 hours ago

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
  • 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 BigQuery 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.
table_freshness_check.pyexample
import time
from clickruntime import on_trigger, credentials, http, notify

TABLES = ["my-project/datasets/sales/tables/orders", "my-project/datasets/marketing/tables/sessions"]
MAX_AGE_HOURS = 24

@on_trigger
def run(event):
    h = {"Authorization": f"Bearer {credentials.connection('google', 'work')}"}
    stale = []
    for t in TABLES:
        meta = http.get(f"https://bigquery.googleapis.com/bigquery/v2/projects/{t}", headers=h).json()
        age = (time.time() * 1000 - int(meta["lastModifiedTime"])) / 3_600_000
        if age > MAX_AGE_HOURS:
            stale.append(f"{meta['tableReference']['datasetId']}.{meta['tableReference']['tableId']}: last changed {age:.0f} hours ago")
    if stale:
        notify.email_me(f"{len(stale)} BigQuery tables are stale", "\n".join(stale))
    return {"stale": len(stale)}

FAQ

Common questions

How does it decide a table is out of date?
It compares the table's lastModifiedTime from BigQuery metadata with the start of the current day. If the last modification is earlier, it alerts. For tables that update weekly, adjust the comparison window so a normal gap does not trigger it.
Can it watch more than one table?
Yes. Each table can be checked in the same run, and the alert can list every stale table together. Give your AI assistant the dataset and table names and review the updated workflow before approving it.
Does a refreshed table always mean fresh data?
Not necessarily. lastModifiedTime changes when the table is written, even if the load wrote old or empty data. For stricter checking, query the maximum event timestamp in the table instead and compare that. A table that was rewritten with nothing new still looks fresh to the metadata check.
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 each time it runs (daily). 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 “Hear when a table stops updating” from your assistant

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