Daily
Get warned when stock runs low
Each morning you see the variants running low, and each one is only flagged once.
- Runs
- Daily
- Apps
- Shopify
- AI
- Not needed
- Access
- read_products, read_inventory
Send this to your assistant
Create a ClickRuntime automation: every morning at 7am, email me Shopify variants with fewer than 5 in stock, with the product name, SKU and quantity.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A bestselling variant sells out on a Friday evening, and the store keeps advertising it until someone on the team opens the inventory page on Monday. Meanwhile paid traffic lands on a product page with a greyed-out size, abandoned carts grow, and the supplier you could have called earlier now has a two-week lead time. Shopify tracks quantity per variant and location, but nothing tells you when a count has fallen to the point where it is time to reorder.
Each day, ClickRuntime reads inventory levels for your variants, keeps those at or below your reorder point, skips any variant it has already warned you about, and emails a single list with product name, variant, SKU and quantity left. The skip step means a slow seller sitting at three units does not repeat itself every morning.
It works best when you track inventory on every variant that matters and set a different threshold for fast and slow movers.
What you get out of it
Reorders go out before the shelf is empty
A daily list gives a few days of warning. That is usually enough to place a purchase order and avoid the dead week when a hero product shows as sold out during your busiest sales period.
Ad spend stops landing on empty pages
If a variant is nearly gone, you can pause the campaign or switch the ad to another product before paying for clicks that cannot convert, which protects both budget and the quality of your traffic.
No repeat nagging on the same item
Variants already reported are skipped, so the email stays short and people keep reading it. A warning that arrives every day for a month gets filtered out; one that appears once gets acted on.
Size and color gaps are caught
A product can look healthy in total while its medium black is gone. Listing by variant with SKU reveals the specific gaps that cause customer emails, cancelled orders and wrong-size substitutions.
Purchasing becomes a routine
With a reliable daily list, whoever manages suppliers works from one email instead of scanning the inventory screen, and the team can see in the archive how often certain products keep running short.
How it works
What happens, step by step
Every morning, ClickRuntime checks the stock level of every product variant in your Shopify store.
It picks out the ones below your low-stock level.
Variants it has already warned you about are skipped, so each one is flagged only once.
You get an email listing each low variant with its SKU and quantity left.
Before it runs live
- Connect Shopify
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 Shopify steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, state, notify
STORE = "your-store.myshopify.com"
def gql(query, variables=None):
resp = http.post(f"https://{STORE}/admin/api/2025-07/graphql.json",
headers={"X-Shopify-Access-Token": credentials.connection("shopify", "store")},
json={"query": query, "variables": variables or {}})
resp.raise_for_status()
return resp.json()["data"]
LIMIT = 5
@on_trigger
def run(event):
variants = gql("""{ productVariants(first: 250, query: "inventory_quantity:<5") { nodes {
id sku displayName inventoryQuantity } } }""")["productVariants"]["nodes"]
low = [v for v in variants if v["inventoryQuantity"] is not None and v["inventoryQuantity"] < LIMIT]
alerted = set(state.get("alerted") or [])
new = [v for v in low if v["id"] not in alerted]
if new:
notify.email_me(f"{len(new)} variants low on stock", "\n".join(
f"{v['displayName']} SKU {v['sku'] or '-'} qty {v['inventoryQuantity']}" for v in new))
state.set("alerted", sorted(v["id"] for v in low)) # restocked variants can alert again
return {"low": len(low), "new": len(new)}FAQ
Common questions
What counts as low stock?
Does it handle several warehouse locations?
Will I get the same variant again after restocking?
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 last week's orders as a CSV
Every Monday you get all of last week's orders in one file, with customer, total and status.
See how it worksGet a daily list of abandoned checkouts
Each evening you get today's abandoned checkouts with the customer email, cart value and recovery link, so you can follow up.
See how it worksGet yesterday's sales every morning
Each morning you see yesterday's order count, total sales and top products.
See how it worksKeep exploring
Set up “Get warned when stock runs low” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.