Skip to content

On a schedule

Post members who've stopped checking in to Slack each morning

Every morning, Slack lists the members in your Supabase table who haven't checked in for 14 days, highlighting the ones new to the list since yesterday.

Runs
On a schedule
Apps
Slack, Supabase
AI
Optional
Access
Supabase read; Slack chat:write

Send this to your assistant

Create a ClickRuntime automation: every morning, check my Supabase members table for anyone who hasn't checked in for 14 days and post the list to #retention, marking who's new since yesterday.

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

Membership businesses lose people quietly. The data is in the database, but the team only sees it when someone writes a query, which is rarely.

A morning post in Slack listing members who've gone quiet, with the new names marked, gives the team a short daily to-do: reach out before the membership lapses.

What you get out of it

  • Catch drift early

    Two quiet weeks is the moment to reach out, not two months.

  • Focus on what's new

    Names that joined the list since yesterday are marked, so the team isn't re-reading the same list.

  • Team-wide visibility

    Everyone in #retention sees the list and can claim a member to call.

  • Optional explanation

    If AI is available, a one-line read of the list is added.

How it works

What happens, step by step

  1. Every morning, ClickRuntime asks Supabase for members whose last check-in was more than 14 days ago.

  2. It compares the list with yesterday's to find who's new on it.

  3. If AI is available, it adds a one-line note on what stands out.

  4. It posts the list to #retention in Slack, with new names marked.

Before it runs live

  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
  • Connect Supabase

What you get

RunsOn a schedule
Post members who've stopped checking in to Slack each morningtoday, 9:00Succeeded
Slack · #retention9 members haven't checked in since 2026-10-05 (3 new) · 🆕 Sam Ortiz – last seen 2026-10-04

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 Slack and Supabase 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.
daily_risk_scan_of_supabase_data_posted_to_slack.pyexample
from datetime import date, timedelta
from clickruntime import on_trigger, credentials, http, state, notify, ai
SUPABASE = "https://your-project.supabase.co/rest/v1"

def sb(method, path, **kw):
    key = credentials.secret("SUPABASE_KEY")
    r = http.request(method, f"{SUPABASE}/{path}", **kw, headers={"apikey": key, "Authorization": f"Bearer {key}", "Prefer": "return=representation,resolution=merge-duplicates"})
    return r.raise_for_status() or (r.json() if r.content else None)

@on_trigger
def run(event):
    cutoff = date.today() - timedelta(days=14)
    members = sb("GET", f"members?status=eq.active&last_seen=lt.{cutoff}&select=id,name,last_seen&order=last_seen.asc")
    before = set(state.get("ids") or [])
    lines = [f"{'🆕 ' if m['id'] not in before else ''}{m['name']} – last seen {m['last_seen'][:10]}" for m in members[:20]]
    text = f"{len(members)} members haven't checked in since {cutoff} ({sum(m['id'] not in before for m in members)} new)\n" + "\n".join(lines)
    if len(members) > 20:
        text += f"\n…and {len(members) - 20} more"
    try:
        text += "\n" + ai.generate(f"One sentence on what stands out:\n{text}", max_output_tokens=60).text
    except ai.AIError:
        pass
    notify.slack(text, channel="#retention")
    state.set("ids", [m["id"] for m in members])
    return {"inactive": len(members)}

FAQ

Common questions

Can it check other risks?
Yes, any rule you can express as a query, such as low stock or failed payments.
How does it know who's new on the list?
It keeps yesterday's list between runs and compares.
Will long lists flood Slack?
Only the first 20 names are listed, with a count of the rest.
What permissions does it need?
Supabase 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 (on a schedule). 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 “Post members who've stopped checking in to Slack each morning” from your assistant

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