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.
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
Every morning at 7, ClickRuntime asks your Adobe Commerce store which products have fewer than 10 left.
It looks up the SKU and name for each one.
You get an email listing them, lowest stock first.
Before it runs live
- Connect Adobe Commerce
What you get
Build your own
Need it to work differently?
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
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?
Does it look at salable quantity or total quantity?
Can disabled products be left out?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get a morning Adobe Commerce sales report
Each morning you see yesterday's orders split by status and the revenue they brought in.
See how it worksCatch Adobe Commerce orders that have stalled
A daily email names orders still pending or processing after two days, so none sit unnoticed.
See how it worksGet alerted when orders drop off
If a day's orders fall far below the usual level, Slack tells you that evening.
See how it worksKeep exploring
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.