Skip to content

Every hour

Know when stock is running low

When an item in your inventory sheet drops below its reorder level, Slack tells you once, not every hour.

Runs
Every hour
Apps
Google Sheets, Slack
AI
Not needed
Access
Sheets read; Slack chat:write

Send this to your assistant

Create a ClickRuntime automation: every hour, check my Inventory sheet and post to #ops any product whose stock is below its reorder level.

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 small online shop keeps its stock in a Google Sheet: product, quantity on hand, reorder level, supplier. When a best-selling item hits zero, orders get canceled, the customer is annoyed and the supplier needs three weeks to deliver. The person who updates the sheet is rarely the person who places orders, so a number dropping below the reorder level sits in a cell until somebody happens to scroll past it.

Every hour, ClickRuntime reads the stock and reorder columns, finds every item whose quantity has fallen below its own reorder level, and posts it to Slack with the product, current stock and supplier. Each item is announced once, then stays quiet until it is restocked and falls below the level again.

Retail shops, restaurants, workshops and clinics with supplies use it so reordering is triggered by data, not memory.

What you get out of it

  • Reorders placed before shelves empty

    A Slack alert at the reorder level leaves time for the supplier's lead time. You avoid the stockout instead of explaining it to customers. Customers keep seeing the product available when they come back to buy it.

  • Lost sales and canceled orders avoided

    Every canceled order for an out-of-stock product is revenue lost and sometimes a customer who does not return. Warning early protects the best sellers that bring the most income. Those sales are the ones a shop can least afford to lose.

  • The right person is notified

    Posting to the purchasing channel means whoever places orders sees the shortage, even when somebody else updates the numbers. Hand-offs between stock counters and buyers stop being a weak point.

  • Different levels for different items

    Each product has its own reorder level in the sheet, so slow items and fast movers are treated properly. A single cutoff for everything either spams you or misses the items that sell quickly.

  • Less cash tied up in safety stock

    Trustworthy alerts mean you can run leaner, because you will be told in time. Holding fewer spare units frees money for stock that sells and cuts the cost of storing items that do not.

How it works

What happens, step by step

  1. Every hour, ClickRuntime reads the item names, stock levels and reorder levels from the Inventory tab of your Google Sheet.

  2. It finds every item whose stock has dropped below its reorder level.

  3. Newly low items are posted to your #ops Slack channel with how many are left and the reorder level.

  4. Each item is reported only once, and only alerts again after it has been restocked and run low again.

Before it runs live

  • Connect your Google Sheets account and pick the spreadsheets it may use
  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)

What you get

RunsEvery hour
Know when stock is running lowtoday, 9:00Succeeded
Slack · #opsLow stock: • Oat milk 1L: 6 left (reorder at 12) • Paper cups 12oz: 140 left (reorder at 200)

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 Gmail
  • Combine it with other Google Sheets 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.
low_stock_alerts_from_an_inventory_sheet.pyexample
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, state, notify

SHEET_ID = "your-spreadsheet-id"

@on_trigger
def run(event):
    token = credentials.connection("google", "work")
    sheets = build("sheets", "v4", credentials=Credentials(token), cache_discovery=False)
    rows = sheets.spreadsheets().values().get(
        spreadsheetId=SHEET_ID, range="Inventory!A2:C").execute().get("values", [])
    alerted = set(state.get("alerted") or [])
    low_now, lines = set(), []
    for row in rows:
        name, stock, reorder = (row + ["", "", ""])[:3]
        try:
            stock, reorder = int(stock), int(reorder)
        except ValueError:
            continue
        if stock < reorder:
            low_now.add(name)
            if name not in alerted:
                lines.append(f"• {name}: {stock} left (reorder at {reorder})")
    if lines:
        notify.slack("Low stock:\n" + "\n".join(lines), channel="#ops")
    state.set("alerted", sorted(low_now))  # restocked items can alert again later
    return {"low": len(low_now), "new_alerts": len(lines)}

FAQ

Common questions

Will it keep alerting about the same item every hour?
No. Each item is posted once when it drops below its reorder level, and can alert again only after it has been restocked above it.
What does my sheet need?
A tab named Inventory with the item name, current stock and reorder level in columns A to C. Tell the assistant if yours is laid out differently.
How quickly will I hear about a low item?
The sheet is read every hour, so an alert appears within an hour of the number dropping under its reorder level. If your stock changes slowly, a daily check is enough. Faster stock movement may justify a shorter interval.
Can the alert show the supplier and lead time?
Yes, if those are columns in your sheet. The message can include supplier name, usual order quantity and lead time in days, so the buyer can place an order straight from the Slack post without opening anything else.
What if I update stock only once a day?
Then alerts reflect the last update, so a shortage is announced after the next stock count. For faster warnings, update the sheet when sales occur, or connect your shop's inventory feed so that quantities change without manual entry.
What permissions does it need?
Sheets read; Slack chat:write. 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 checks. Checks that find nothing new 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 “Know when stock is running low” from your assistant

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