Skip to content

Weekly

Find Notion docs that are out of date

Each week your team gets a list of wiki pages nobody has updated in months, with who should check them.

Runs
Weekly
Apps
Notion, Slack
AI
Optional
Access
Notion read; Slack chat:write

Send this to your assistant

Create a ClickRuntime automation: every Friday, find pages in my Notion wiki that haven't been edited in 90 days and post a list to #docs with each page's owner.

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 wiki is useful only while it is correct. Notion workspaces grow for years, and pages for onboarding, security processes and customer setup are written once and never opened again. Someone follows an old runbook and uses a step that has not worked since the last migration, or a new hire reads a policy that was replaced. Nobody notices decay, because pages do not announce that they have gone out of date.

Each week ClickRuntime queries your Notion pages by last_edited_time, finds those not touched for several months, and posts a digest to Slack listing each page with its owner and age. An optional AI step can add a short review note, such as which sections mention versions or dates likely to be outdated.

Teams that rely on documentation for support, onboarding or compliance use it as a routine maintenance prompt.

What you get out of it

  • Outdated instructions are found before they cause harm

    A runbook untouched for eight months is flagged before someone follows it during an incident. Reviewing it takes ten minutes, compared with the cost of acting on obsolete steps. Reviewing it takes ten minutes, which is a small cost next to acting on obsolete steps during an incident.

  • Pages have visible owners

    The digest names who is responsible for each stale page. Documentation stops being everyone's problem, which in practice means nobody's. Documentation stops being everyone's problem, which in practice tends to mean nobody's problem at all.

  • Maintenance becomes a small weekly habit

    A short list each week is manageable, while a yearly cleanup is not. Teams review five pages a week and the wiki steadily improves. A short list each week is manageable, while a yearly cleanup rarely happens, so quality improves steadily.

  • Dead pages can be archived

    Pages that no one needs are identified and archived instead of cluttering search results. People find the right answer faster because the wrong ones have gone. Search results improve because people find the right page faster when the wrong ones are out of the way.

  • Evidence of documentation control

    For ISO and SOC-type reviews, showing a recurring check on document freshness is helpful. The weekly digests provide a record that the process exists and is followed. The weekly digests provide a dated record that the process exists and is carried out in practice.

How it works

What happens, step by step

  1. Every week, ClickRuntime searches your Notion workspace for pages nobody has edited in the last 90 days.

  2. It notes when each page was last edited and who owns it.

  3. A list of the stale pages is posted to your #docs Slack channel, so the owner of each page knows to check it.

Before it runs live

  • Connect Notion and share the database you want it to use
  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)

What you get

RunsWeekly
Find Notion docs that are out of datetoday, 9:00Succeeded
Slack · #docs📚 12 wiki pages not edited in 90 days • Expense policy: last edited 2026-03-02, owner Morgan Lee

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
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Google Sheets
  • Combine it with other Notion and Slack 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.
stale_notion_docs_audit_with_slack_digest.pyexample
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, notify

@on_trigger
def run(event):
    h = {"Authorization": f"Bearer {credentials.secret('NOTION_TOKEN')}", "Notion-Version": "2022-06-28"}
    cutoff = (datetime.now(timezone.utc) - timedelta(days=90)).isoformat()
    body, stale = {"filter": {"property": "object", "value": "page"},
                   "sort": {"timestamp": "last_edited_time", "direction": "ascending"}, "page_size": 100}, []
    while True:
        res = http.post("https://api.notion.com/v1/search", headers=h, json=body).json()
        old = [p for p in res["results"] if p["last_edited_time"] < cutoff]
        stale += old
        if len(old) < len(res["results"]) or not res["has_more"]:
            break
        body["start_cursor"] = res["next_cursor"]
    lines = []
    for p in stale[:50]:
        title = next(("".join(t["plain_text"] for t in v["title"]) for v in p["properties"].values() if v["type"] == "title"), "Untitled")
        owner = http.get(f"https://api.notion.com/v1/users/{p['created_by']['id']}", headers=h).json().get("name", "unknown")
        lines.append(f"• <{p['url']}|{title}>: last edited {p['last_edited_time'][:10]}, owner {owner}")
    notify.slack(f"📚 {len(stale)} wiki pages not edited in 90 days\n" + "\n".join(lines), channel="#docs")
    return {"stale": len(stale)}

FAQ

Common questions

What counts as stale?
A page whose last_edited_time is older than the cutoff you set, such as 90 or 180 days. You can restrict the check to certain databases or sections, so personal notes are not included.
Does the AI rewrite the pages?
No. The optional AI step only adds a short review note to the digest, such as pointing at dated references. It never edits Notion, so any updates remain a decision for the page owner. Page owners decide what to change.
Can it work on one team's wiki only?
Yes. You can limit the query to a database, a parent page or pages with a given property such as Team. That lets each team receive a digest in its own channel. Each digest then goes to the people who care.
What permissions does it need?
Notion read; Slack chat:write. Nothing else in your accounts is used.
Does it need AI?
No, but you can ask for an AI step (for example a summary). It then uses ClickRuntime's built-in AI allowance.
How many runs does it use?
One run each time it runs (weekly). 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 “Find Notion docs that are out of date” from your assistant

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