Daily
Get an email before an Etsy listing sells out
A daily email names the active listings with fewer than 3 left, before Etsy deactivates them.
- Runs
- Daily
- Apps
- Etsy
- AI
- Not needed
- Access
- listings_r
Send this to your assistant
Create a ClickRuntime automation: every day at 8am, email me my active Etsy listings with a quantity under 3, showing the title and how many are left.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
An Etsy listing that sells out gets deactivated, and with it goes its search ranking, its accumulated reviews and the momentum from a good week. Sellers of handmade or limited-run goods feel this most: a bestselling candle, print or piece of jewelry sells its last few units on a Saturday, and by the time you notice on Monday the listing is inactive, customers are seeing a gap, and relisting means paying fees and starting over in search.
Each day the automation lists your active listings, picks out those whose quantity has fallen to or below the number you set, such as three, and emails you the names and remaining stock. You find out while there is still time to make more, order materials or adjust the quantity.
Makers, small-batch producers and vintage sellers with limited stock will find it saves their best listings.
What you get out of it
Keep bestsellers active
A listing that never goes inactive keeps its search position and its reviews, which took months to earn. Topping up stock in time protects the listings that bring in most of your revenue.
Time to restock materials
A warning at three units left gives you days, not hours, to buy materials or make the next batch. That is often the difference between an uninterrupted listing and a two-week gap.
Avoid relisting fees and lost momentum
Relisting an expired or inactive item costs a fee and resets its visibility. Preventing the sell-out avoids both, which matters a great deal when margins on handmade goods are already thin and every fee counts.
Better planning of production runs
Seeing which items run low first shows what customers actually want. You can plan your next production run around real demand instead of a guess, and stop making items that sit on the shelf.
Fewer disappointed customers
Customers who find a listing gone, or who buy the last item and then wait for you to make more, are less likely to return. Staying in stock keeps your shop reliable.
How it works
What happens, step by step
Once a day, ClickRuntime checks the quantity left on your active Etsy listings.
It picks out the ones at or below your threshold.
You get an email listing each one and how many are left, so you can restock before it sells out.
Before it runs live
- Connect Etsy
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 Etsy steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify
SHOP_ID = "12345678"
@on_trigger
def run(event):
headers = {"x-api-key": credentials.secret("ETSY_API_KEY"),
"Authorization": f"Bearer {credentials.connection('etsy', 'shop')}"}
low, offset = [], 0
while True:
body = http.get(f"https://openapi.etsy.com/v3/application/shops/{SHOP_ID}/listings/active",
params={"limit": 100, "offset": offset}, headers=headers).json()
low += [l for l in body["results"] if l["quantity"] < 3]
offset += 100
if offset >= body["count"]:
break
if not low:
return {"low": 0}
notify.email_me(f"{len(low)} Etsy listings running low",
"\n".join(f"- {l['title']}: {l['quantity']} left" for l in sorted(low, key=lambda l: l["quantity"])))
return {"low": len(low)}FAQ
Common questions
What counts as low stock?
Does it include listings with variations?
Will it email me every day while the stock is low?
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
List paid Etsy orders that still need shipping
Each morning you get the paid, unshipped orders sorted oldest first with how many days each has waited.
See how it worksGet last week's Etsy orders and revenue every Monday
A Monday email gives the order count and total for the past week next to the week before.
See how it worksPost every Etsy sale to Slack for packing
Each new Etsy receipt appears in a Slack channel with the buyer and items, so whoever packs knows what to send.
See how it worksKeep exploring
Set up “Get an email before an Etsy listing sells out” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.