Skip to content

On a schedule

Get a daily list of products running low

A morning email lists products with fewer than your chosen number in stock, lowest first.

Runs
On a schedule
Apps
Adobe Commerce
AI
Not needed
Access
Magento_CatalogInventory::cataloginventory read (Catalog > Inventory)

Send this to your assistant

Create a ClickRuntime automation: every morning at 7am, email me the Adobe Commerce products with a stock quantity under 10, showing SKU, name and quantity, sorted from lowest.

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

The owner of a Magento or Adobe Commerce store with a few hundred SKUs rarely notices a product running out until a customer complains or the sales report shows a flat line. By then, the best-selling item has been unavailable for three days, the ad campaign pointing at it kept spending, and reorder lead times from the supplier mean another two weeks without it. Stock levels are visible in the admin, but nobody opens that report daily.

Each morning, the automation queries products whose quantity is below the threshold you set. It looks up each SKU and product name and emails the list, sorted with the lowest quantity first, so the products closest to running out are at the top.

It suits merchants who reorder from suppliers, and operations people who buy inventory weekly and need a reliable trigger.

What you get out of it

  • Reorders happen before stock hits zero

    With the lowest items at the top of the morning email, you place purchase orders while there is still stock to sell. Lead times stop turning into lost sales. Suppliers rarely ship the same day, so every day of early warning is a day of sales kept.

  • Ad spend is not wasted on sold-out products

    If a product is nearly gone, you can pause the ad or promotion pointing to it. That avoids paying for clicks that end on an out-of-stock page. Pausing a promotion for a nearly sold-out item saves budget and avoids disappointed visitors.

  • Customers see fewer out-of-stock pages

    Shoppers who find an item unavailable often buy from a competitor and may not come back. Keeping popular lines in stock protects both the sale and the relationship. Repeat buyers are the most valuable customers, so keeping bestsellers on the shelf protects revenue beyond a single order.

  • Buying becomes routine, not reactive

    A daily list replaces the habit of discovering stock problems from customer emails. Purchasing is planned and orders to suppliers can be bundled to cut shipping cost. You buy on your own schedule, not in a panic, which usually means better prices.

  • A threshold you control

    Setting the cutoff per store, category or supplier lead time means a slow-moving item and a fast one are not judged by the same number, so the list stays useful.

How it works

What happens, step by step

  1. Every morning at 7, ClickRuntime asks your Adobe Commerce store which products have fewer than 10 left.

  2. It looks up the SKU and name for each one.

  3. You get an email listing them, lowest stock first.

Before it runs live

  • Connect Adobe Commerce

What you get

RunsOn a schedule
Get a daily list of products running lowtoday, 9:00Succeeded
Email · Low stock- NW-MUG-12 Enamel camp mug, navy: 2 - NW-TWL-03 Waffle towel, sand: 6

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 Adobe Commerce 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_low_stock_report.pyexample
from clickruntime import on_trigger, credentials, http, notify

BASE = "https://yourstore.com/rest/V1"

@on_trigger
def run(event):
    headers = {"Authorization": f"Bearer {credentials.secret('ADOBE_COMMERCE_TOKEN')}"}
    items = http.get(f"{BASE}/stockItems/lowStock", headers=headers,
                     params={"scopeId": 0, "qty": 10, "pageSize": 100}).json()["items"]
    if not items:
        return {"low": 0}
    ids = ",".join(str(i["product_id"]) for i in items)
    products = http.get(f"{BASE}/products", headers=headers, params={
        "searchCriteria[filter_groups][0][filters][0][field]": "entity_id",
        "searchCriteria[filter_groups][0][filters][0][value]": ids,
        "searchCriteria[filter_groups][0][filters][0][condition_type]": "in"}).json()["items"]
    names = {p["id"]: (p["sku"], p["name"]) for p in products}
    lines = [f"- {names.get(i['product_id'], ('?', '?'))[0]}  {names.get(i['product_id'], ('?', '?'))[1]}: {i['qty']:g}"
             for i in sorted(items, key=lambda i: i["qty"])]
    notify.email_me(f"{len(items)} products under 10 in stock", "\n".join(lines))
    return {"low": len(items)}

FAQ

Common questions

How is the threshold decided?
It is a number in the query, such as quantity under 10. Because Magento stores quantity per SKU, you can use one threshold for the whole store or a different one for categories with long supplier lead times.
Does it look at salable quantity or total quantity?
That depends on your inventory setup. With Multi-Source Inventory, salable quantity accounts for reservations. If you rely on it, tell your AI assistant so the report uses the field that matches your stock logic. Salable quantity is usually the safer choice for a warning, because it already subtracts items customers have in checkout.
Can disabled products be left out?
Yes. Products that are disabled or not visible in the catalog can be excluded, so the list does not include discontinued items you do not plan to restock. Ask for that filter and you will see it before the report runs again.
What permissions does it need?
Magento_CatalogInventory::cataloginventory read (Catalog > Inventory). 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 (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 “Get a daily list of products running low” from your assistant

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