Automatically mark down Shopify products that don't sell
You want the price to move on its own when something has sat too long. Shopify's own markdown suggestions are built for products that sell 25 a month and skip the quiet ones; Shopify Flow cannot change a price at all. Two new apps do it, and there is one limit nobody selling this mentions.
Shopify has its own markdown tool now — its Smart Pricing app — and it is built for the opposite of this problem. Smart Pricing markdowns give you "AI-driven price tips" with a markdown suggested for products with slower sales, refreshed "on a weekly basis" — and the eligibility is where it decides this for you: "You must have a minimum of 10 products, each with more than 25 sales per month", each product "needs at least 1 month of recent sales history for the model to identify a trend", and "brand-new products and very low-volume SKUs are skipped until they have enough history." The stock you are asking about is the stock it skips. It is also a suggestion rather than an action — "you decide whether to apply each one."
So the thing you actually want — the price moving without you touching it, once something has sat long enough — is not in the admin. Here is what is, and where each route stops.
Flow cannot change a price, and there is no "has not sold" trigger
Worth knowing before you spend an afternoon in it. Flow can tag a product, add it to a collection, publish or unpublish it, change its status, delete it, and email you. Repricing is not among its actions, and creating a discount is not either — and there is nothing to start the workflow on anyway: its triggers cover inventory quantity and scheduled times, not sales recency. A merchant trying to auto-archive products with no sales in 90 days put it exactly:
I can't figure out how to add the condition in Shopify flow to check sales.
— Shopify Community thread, unresolved
The native ceiling is therefore: Flow can tag and collect by criteria that are not sales-based, and an automatic discount can target that collection. The half you need — noticing that something has not sold — is not expressible.
What merchants ask for, in their own words
The clearest version of the ask, from May 2025:
I basically want to figure out which products and variants haven't sold in the past 1, 2 and 3 months so I can then put discounts on them
— S_P33, 5 May 2025
And the clearest illustration of how it gets misheard. A merchant wanted a ladder driven by how long something had sat, and was recommended three scheduled-discount apps:
Thank you but these apps don't offer the solution I'm asking for. I'd like to set a rule on certain items where if it doesn't sell for a set period of time, the item will be further discounted.
— hwojner, 26 April 2023
Two years later another merchant found that thread and said his previous platform had done it: an item dropped in price every day, week or month until it sold. His verdict was honest in both directions — "It worked very well to keep inventory moving (even if it killed profits and hurt on some things.)" Carry that caveat: a ladder clears stock and gives away margin on things that would have sold anyway, which is the argument for a floor and an exception list rather than against the ladder.
One more request comes up every time and nobody answers it: an Italian merchant asked in 2022 for the old price to stay visible as the was-price when the markdown lands, and got app suggestions back.
The thresholds merchants actually use
Nobody publishes this, and a merchant asked for it directly — "Do you have a recommended time on items that would be considered slow moving? 1 year? 5 years?" — and never got an answer. From merchants describing their own rules: 3 weeks for items already in a sale section, 45 days as a notification threshold, 1, 2 and 3 months as discount tiers, 90 days before auto-archiving, 6 months before repricing. The spread says these are business decisions rather than a standard; if you want a starting point, a first review between 45 and 90 days is where most of them cluster.
The two apps that do this, checked today
Both arrived in 2026, both carry Shopify's Built for Shopify badge, and between them they have one review — so judge them on mechanism, not rating.
| App | Price | What it does |
|---|---|---|
| Auto MarkDown | Free to 50 products and 2 rules; $9/month to 500; $19/month to 5,000; $39/month unlimited | Reduces the price when a product has not sold within your timeframe. Progressive steps "until items sell or hit your minimum", a floor price ("never sell below your minimum"), original price restored after a sale, markdown history. Targeting is per product on the free plan; collection and tag targeting, and checks more often than every 24 hours, are the paid tiers. |
| ClearStock | Free; $9.99, $29 or $49/month, launched January 2026 | Tracks sales velocity and days of inventory remaining, then discounts on rules like "discount dead products by 30 percent", with automatic restoration when a product starts selling again. Five exclusion filters on the free plan, rising to unlimited; clearance tagging on the paid tiers. |
Read them for what their listings do not say, because that is where the difference is rather than in the ladder: neither says whether the old price is kept as the compare-at price, so the cut shows as a sale rather than as a product that got cheaper; neither says what happens when the same product is also on a clearance list you keep for another reason; and both are rules you configure in their own screens, tier by tier, rather than one sentence you say once and have built. If your ladder is steps with a floor on a set of products, either app will run it.
And one limit nobody selling in this space mentions, which binds both of them and us. An App Store app can only read the last 60 days of orders without a separate approval Shopify grants by hand — "apps now need Shopify approval to read orders older than 60 days" — requested in the Partner Dashboard. So no tool without that approval can prove on day one that something has not sold in six months: it starts watching when it is installed and knows for certain after that. "Has not sold in 60 days" is a promise kept from day 61, whoever makes it. (A custom app you build for your own store is outside this: Shopify grants those the scope automatically.)
Where Shopivibe fits
Describe the whole ladder in your own words — "when a product has not sold in 60 days, take 10% off and move it to clearance, step it again at 90 and at 120, never below £12, never these twelve lines, and put the price back if it starts selling" — and that is what gets built for your store, checked against your own data before anything goes live. Not the part somebody else's app leaves over: the steps, the floor, the restore and the targeting are all yours to state, and the exceptions that fit no collection come with them.
What runs. When your threshold passes it takes your percentage off and keeps the old price as the compare-at, so the reduction shows the way a sale should rather than looking like a product that quietly got cheaper — that is the step neither listing above claims. It adds your tag, holds at the floor you set, and skips the lines you named. For a product it has seen sell, the clock counts from that sale; for one it has never seen sell, from the day it first saw the product. If the product sells before the threshold, the pending markdown is withdrawn — the clock restarts rather than firing on something that has just moved — and a product that starts selling again goes back to the price you started from. It can also look at everything on a fixed rhythm instead: every night, every week.
It will not change a price until you switch it on. We build it, show you exactly what it would do to which products, and it waits until you say yes. Anything somebody buys at a reduced price is sold at that price, so that decision is not ours to make because something looked ready to us.
Stock that has not moved since before you connected us is the pile this is for, and it needs one thing said out loud: your store tells us about a product when it is created, edited, sold or its stock moves, so your existing products are loaded for you as part of the build. Say that your clear-out is exactly that pile, and the ladder covers it from its first run.
The clearance move is a tag. If your clearance collection gathers products by tag automatically, the product appears in it and the outcome is the one you asked for. If it is a list you curate by hand, a tag puts nothing in it — converting it to an automated collection is a five-minute change on your side, and it is named in the same conversation rather than discovered afterwards.
And the finding half is its own question. If what you need first is the list of products that have never sold at all, that is a different gap in Shopify's reports — and the same rule can hand it to you as a tagged collection.
A person here takes the whole of it on straight away and has it working in your store within 24 hours.
Shopivibe solves the problem in your store and keeps what it adds maintained, including when Shopify changes something underneath. Shopivibe is free during early access, with 3,500 credits included. Credits beyond the included 3,500 cost $0.06 each.
Want the price to move without you touching it? Describe the ladder and your exceptions →
Checked against Shopify's documentation and the App Store on 13 October 2026.