Daily
Get a morning list of low-stock products
Products dropping under your threshold are emailed to you each morning, without repeats of ones already flagged.
- Runs
- Daily
- Apps
- WooCommerce
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every morning at 7am, email me WooCommerce products with fewer than 5 in stock, with SKU and current quantity, and don't repeat ones I was already told about.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A WooCommerce shop loses sales in two quiet ways. A bestseller sells out and the product page shows Out of stock for a week before anyone reorders, or a supplier with a long lead time is reordered too late because nobody saw the shelf getting thin. Stock levels live inside each product's inventory tab, so spotting a low number means opening hundreds of products or running a report that nobody remembers to run.
Each day the automation fetches your products with their stock status and quantity, keeps those at or below the threshold you set, removes any it has already warned you about using stored state, and emails you the list. Each product is flagged once as it drops, and flagged again only after it has been restocked and falls again.
It suits shops with a few dozen to a few thousand products and suppliers who need days or weeks to deliver.
What you get out of it
Reorder before the page says sold out
A warning at five units leaves time for the supplier to deliver. Without it, the product sits unavailable, and shoppers who wanted it buy from a competitor instead. Shoppers who find a page marked unavailable rarely come back to check later.
Account for supplier lead time
Setting the threshold above the number you sell during a supplier's delivery window means the alert arrives early enough that new stock lands before the old stock is gone. Getting that number right is a one-time exercise that pays off every month afterward.
One warning per product, not daily nagging
Because already-flagged products are remembered, the email does not repeat the same list every morning. A shorter list is one you will actually act on. Customers who ignore daily reminders still react to a short, fresh list.
Spot fast movers
Products that keep reappearing on the list are your bestsellers. That informs how much to order next time, and which products deserve better terms from the supplier. Ordering deeper on those lines also tends to improve the unit cost.
Protect ad spend
Paying for ads that point at a product you cannot ship wastes money. Knowing stock is low gives you a reason to pause that campaign in time. A paused ad is cheaper than clicks that end in a disappointed shopper.
How it works
What happens, step by step
Every morning, ClickRuntime checks the stock level of your WooCommerce products.
It picks out the ones that have dropped below your threshold.
Products you were already warned about are left out until they are restocked, so the email only shows new problems.
You get a list of each low product with its SKU and how many are left.
Before it runs live
- Connect WooCommerce
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 WooCommerce steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, state, notify
STORE = "https://yourstore.com/wp-json/wc/v3"
THRESHOLD = 5
@on_trigger
def run(event):
auth = (credentials.secret("WC_CONSUMER_KEY"), credentials.secret("WC_CONSUMER_SECRET"))
low, page = [], 1
while True:
products = http.get(f"{STORE}/products", auth=auth,
params={"status": "publish", "per_page": 100, "page": page}).json()
low += [p for p in products if p["manage_stock"] and (p["stock_quantity"] or 0) < THRESHOLD]
if len(products) < 100:
break
page += 1
told = set(state.get("told") or [])
new = [p for p in low if p["id"] not in told]
state.set("told", [p["id"] for p in low]) # restocked items can alert again
if new:
notify.email_me(f"{len(new)} products under {THRESHOLD} in stock",
"\n".join(f"- {p['name']} ({p['sku'] or 'no SKU'}): {p['stock_quantity']} left" for p in new))
return {"low": len(low), "new": len(new)}FAQ
Common questions
Does it use the stock quantity or the stock status?
Can I set a different threshold for different products?
What about variable products with several sizes?
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
Sort customers into champions, loyal, at-risk and lost
Once a month you see which customers buy often and recently, and which have drifted away.
See how it worksMake follow-up coupons for unfinished orders
Each evening, customers with pending orders get a unique coupon and you get the list to follow up.
See how it worksCatch orders stuck in processing
A daily email names orders that have sat in processing too long, so none get forgotten.
See how it worksKeep exploring
Set up “Get a morning list of low-stock products” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.