← back to field notes
research DISPATCH Nº 60 · · 9 MIN READ ·

How to schedule a sale on Shopify

Shopify will happily let you drop a price. What it will not do is start the sale at midnight, put the prices back on Monday, or run it by rule. So a real person sits up to flip prices when the clock strikes, babysits the promotion, and prays they remember to undo it. Here is why the timed sale is the chore Shopify never automated, and the playbook that runs it start to finish.

Spend a week in the Shopify community forums around any big shopping weekend and you will watch the same question arrive in a dozen costumes. Someone wants to set a sale to start Friday at midnight and end Monday night, without sitting at the keyboard for either edge. Someone else asks whether Shopify Flow can schedule a price change. The answer that comes back, again and again, is the one nobody wants: Shopify will let you change a price, but it will not schedule the change for you. The edit takes effect the instant you hit save. If you want a sale to begin at a specific hour, a human has to be the one to begin it.

It sounds like a small thing until you have lived it. The price drop itself is one click. The campaign around it is not. You decide which products are in and which are held back. You set a struck-through was-price on each one so the discount actually reads as a discount. You stay up to flip everything on at the start, you watch it through the weekend, and then, when it is over, you go back and put every original price where it was. Miss that last step and your bestseller is quietly on sale on a random Wednesday with no campaign behind it, handing away margin to anyone who happens to look.

Shopify will let you drop a price in one click. It will never tell you when to put it back.

Why the timed sale matters more than it looks

A sale is not a soft lever. Done well it is one of the sharpest tools a store has. Flash sales lift transaction rates by roughly a third on average, and they convert markedly better on mobile, where the urgency of a countdown meets a thumb that is already scrolling. Online retail is a multi-trillion-dollar arena now, and a large slice of that volume moves on promotion: launches, seasonal events, clearance, the weekend push to hit a number. The store that can spin up a clean, well-targeted sale on short notice has a real edge over the one that cannot.

The catch is the other direction. Run sales sloppily, or constantly, and you train your own customers to wait for the next markdown, and you give away margin you did not need to. So the timed sale is a precision instrument: the right products, at the right discount, starting and ending exactly when you said, and never a minute longer. That precision is exactly what doing it by hand cannot reliably deliver, because the precision lives in the timing and the cleanup, and those are the two parts Shopify leaves entirely to you.

What Shopify actually does, and where it stops

Shopify is fluent in the part it owns and silent on the part that takes the work. You can edit a product's price whenever you like, and you can set a compare-at price, which is the field that draws the line through the old number and signals a sale on the card and the product page. You can also build discount codes and automatic discounts, and those can be scheduled with a start and an end. What you cannot do is schedule the actual price-and-compare-at change that a storewide or by-collection sale relies on. The gap shows up in three places merchants hit fast.

First, there is no scheduled start or end on a price. The price edit applies the moment you save it, full stop. To launch a sale at midnight in your customers' timezone, someone is awake at midnight, and a single timezone slip starts or ends the event in the wrong place. There is no native "go live at this time, revert at that time" anywhere on the product.

Second, nothing puts the prices back. Shopify does not remember what the price was before the sale, so the revert is a manual pass over every product you touched. On a catalog of hundreds of SKUs that is its own small project, done while tired on a Monday, and the one product you miss keeps bleeding margin until a customer or a colleague notices.

Third, there is no targeting by rule. A good sale is "everything in summer, except the three styles already on clearance, and never below a margin floor." Shopify has no native way to express that as a rule and apply it in one move. You select products by hand, you eyeball which ones are already discounted, and you do the margin math per item in your head or in a side spreadsheet. The bigger the catalog, the more the safe move becomes to under-scope the sale, or skip it.

◆ DATA Sales are a sharp instrument, not a soft one. Flash sales lift transaction rates by about 35% on average and convert roughly 48% better on mobile than desktop, where a countdown meets an impulse. But overuse cuts the other way: lean on markdowns too often and you train customers to wait for the next one. The whole value is in precision, the exact products for the exact window, which is the part doing it by hand cannot keep.

Why the usual fixes don't hold

Once a merchant feels this, they reach for one of a few workarounds. Each buys a little control and each breaks in a familiar spot.

"I just change the prices when the sale starts." The honest default, and it works for a tiny catalog and a forgiving schedule. It falls apart on timing and on cleanup. You are the cron job: the sale starts when you click and ends when you remember, which means late nights, odd hours, and the standing risk of a price left on sale for days. The more products in the event, the more clicks at both edges, and the more chances to miss one.

"I import a CSV to start it and another to revert." A step up, and free, but a CSV applies the moment you import it, not at a future time. So you still have to be present to run the sale file at the start and the revert file at the end. Build the revert file wrong, or import it after the catalog has drifted, and you push stale prices over live ones. It is bulk, but it is not scheduled, and it is not safe without a careful human at the keyboard on both ends.

"I use a discount code instead." Codes and automatic discounts can be scheduled, and for a coupon or a cart-level offer they are the right tool. But a code does not show a struck-through price while people browse; the storefront still reads full price until checkout, so you lose the visual urgency a real sale runs on. Codes also bring their own leaks: forgotten codes, codes posted to coupon sites, and stacking you never intended. For a sale where every eligible product should visibly show the lower price, the code is the wrong shape.

A sale-scheduler app. The app store is full of them, which by itself tells you the native gap is real. A good one will schedule and auto-revert, and for many stores it earns its fee. But it ships with its author's idea of how a sale should work, wrapped in a settings screen and a monthly bill that often climbs with your SKU count, and the rules you care about, the margin floor, the exclusions, the odd product that should never go on sale, have to be squeezed into someone else's toggles.

What the automation actually has to do

The real job is not "drop these prices." It is "at the minute I name, put this set of products on sale with a clean struck-through price, hold what they used to cost, keep me above my margin floor, and put every price back exactly when the sale ends." That is scheduling, targeting, a little margin judgment, and a guaranteed cleanup. As a Dugong playbook, in plain prose, it reads like this:

# trigger
At the sale's start time, and again at its end time

# steps
1. Select the products in scope by rule: collection,
   tag, or vendor, minus anything already on clearance
2. Record each product's current price so it can be
   restored exactly later
3. Apply the discount, set the compare-at to the old
   price so the strikethrough shows, and never price
   below the margin floor
4. Skip and flag anything the rule would push below
   cost, or that is already discounted deeper
5. Confirm the sale is live on a sample product, then
   report what changed and what was held back
6. Revert every price to the recorded original at the
   end time, with nothing left behind
7. Log the whole run so the next sale is a one-line
   repeat, not a from-scratch scramble

Seven lines. The compiler fills in everything beneath: resolving the product set from the rule, storing the original prices so the revert is exact, setting price and compare-at together so the strikethrough reads right, holding the margin floor on every item, running at the scheduled minute in the timezone you meant, and reverting on time whether or not anyone is awake. The merchant never babysat a clock or kept a spreadsheet of old prices. They described how a careful promotions manager runs a sale, and let the compiler do the timing and the cleanup.

◆ NOTE The forgotten revert is the quiet one. A sale that never gets turned off is not a generous gesture, it is a margin leak with no campaign attached: the urgency is gone, the email went out days ago, and you are simply selling below your normal price to whoever wanders in. The goal is not "a lower price," it is the right price for the exact window you chose, and then your real price back, which is precisely the discipline a manual flip cannot guarantee.

Why this is a compiler problem, not an app problem

There are capable sale-scheduler apps, and for plenty of stores they are a fine answer. But a sale is rarely just "20% off everything." It is your rules: this collection but not those three styles, never below this margin, leave the new arrivals at full price, exclude anything already on clearance, and double the discount on the dead stock I actually want gone. Those are sentences about your business and your inventory, not switches in someone else's interface, and they change with every campaign.

A natural-language compiler fits because the timed sale was never really a pricing problem. It is a scheduling and bookkeeping problem wearing a pricing problem's clothes. Dropping a number is the easy part, which is why Shopify lets you do it. The hard part is everything around it: start and stop on time, remember the original of every price you touched, apply your exclusions and your floor, and guarantee the cleanup. You can write that brief in a paragraph. You could never hold it as a stack of manual edits across hundreds of SKUs, twice, for every sale you run.


The workflow worth building this week

If you run promotions of any kind, this is the automation to set up before your next launch or seasonal push, because it protects both the revenue a clean sale brings in and the margin a forgotten one gives away. It sits right next to pains we have written about already. A sale moves stock fast, which is exactly when the overselling problem no one automates bites hardest, so honest counts have to hold under the rush. And the moment items start selling out mid-sale, you are straight into the sold-out products that sink your collection, where dead tiles drag down the conversion of everything still in stock behind them.

Describe it the way you would brief a sharp promotions manager: here is what goes on sale and what stays out, here is the discount and the floor I will not cross, here is when it starts and when it ends, and here is the promise that every price goes back exactly as it was. That is the whole brief. The compiler does the scheduling, the strikethrough, the margin guard, and the revert. You keep your attention for the offer itself, and you stop finding out the sale never turned off because a customer told you.

◆ READING If this resonates, two companion pieces: our field study on the Shopify automations no one builds (where the work that scales with the business is a sliver of what merchants actually automate), and the dispatch on the abandoned cart that gets one email, the other side of a promotion, recovering the demand the sale created but did not close.

If you are a Shopify merchant who has wired up a sale flow that starts and reverts on its own, or you have a story about the markdown that ran four days too long and still stings, the inbox is open: field-notes@dugong.live. We are collecting case studies for the next issue.

research essay
share · copy link · ✦
◆ COMMON QUESTIONS

Can Shopify schedule a sale to start and end automatically?

Not natively. Shopify lets you change a product's price and set a compare-at price for the strikethrough, but there is no built-in setting to say start this sale at midnight Friday and put the prices back on Monday. Shopify Flow cannot schedule a price change either; the community answer to that exact request has been no. So merchants either edit the prices by hand at the moment the sale should start and again when it ends, import a sale CSV at the start and a revert CSV at the end, or install a third-party sale-scheduler app. Discount codes and automatic discounts can be scheduled, but they do not show a struck-through sale price on the product, which is the look most storewide and collection sales want.

Why not just use a discount code instead of changing prices?

Discount codes and automatic discounts are schedulable and they are the right tool for a coupon or a cart-level offer. But a code does not put a struck-through was-price on the product card and the product page, which is the visual a real sale relies on to signal value and urgency. A code also lives at checkout, so the browsing experience still shows full price, and codes invite their own problems: forgotten codes, codes shared on coupon sites, and stacking you did not intend. For a storewide or by-collection sale where you want every eligible product to visibly show the lower price, you are back to editing the actual price and compare-at, which Shopify will not schedule for you.

What goes wrong when you run a timed sale by hand?

Three things, reliably. First, timing: the price edit applies the instant you save, so to start a sale at a specific hour someone has to be awake and at a keyboard at that hour, and a timezone mix-up starts or ends it in the wrong place. Second, the revert: the original price has to be put back by hand on every product, and a forgotten reset leaves bestsellers on sale for days, giving away margin with no campaign behind it. Third, targeting and margins: deciding which products are in, holding a minimum margin so a markdown does not sell below cost, and excluding items already on clearance is fiddly to do across hundreds of SKUs, so the safe move is to under-scope the sale or skip it.

How do I end a Shopify sale and put prices back automatically?

This is the half of the job everyone underestimates, because Shopify does not remember what a price was before you changed it. End a sale by hand and the revert is a manual pass over every product you touched, done tired on a Monday, and the one product you miss keeps selling below your normal price with no campaign behind it: the urgency is gone, the email went out days ago, and the markdown is just a margin leak until a customer or a colleague notices. The reliable version records each product's current price at the moment the sale starts, precisely so the end can restore every price exactly, at the scheduled minute, whether or not anyone is awake. Recording the originals before anything changes and guaranteeing the cleanup afterward is the discipline that separates a scheduled sale from a price change you hope to remember to undo.

How do you keep a Shopify sale from discounting the wrong products?

Targeting is where the native tools stop entirely. A real sale is a rule with exceptions: everything in the summer collection, minus the three styles already on clearance, never below a margin floor, new arrivals held at full price. Shopify has no native way to express that as a rule and apply it in one move, so by hand you select products individually, eyeball which ones are already discounted, and do the margin math per item in your head or a side spreadsheet, and the bigger the catalog, the more the safe move becomes under-scoping the sale or skipping it. The automation should resolve the scope from the rule, skip and flag anything the rule would push below cost or that is already discounted deeper, confirm the sale is live on a sample product, and report what changed and what was held back. The exclusions are not an edge case. They are the offer.

◆ Ready when you are

Stop configuring. Start describing.

Write your workflow in plain English and an AI agent runs it — calling your apps directly. Your first automation takes under five minutes.

Try Dugong now → free · no credit card required