Help

Workstyling Discounts & Sales schedules sales in your Shopify store: prices drop when a sale starts and go back exactly when it ends.

Your first sale, step by step

  1. Choose products. On Sales, use Quick start, or open Schedule. Under Products to discount, pick Products and collections I pick (then Select products or Select collections), Entire catalog or One collection; Pro adds one vendor, one product type, products with a tag and overstock. You can switch between them at any time before saving. Or start from Shopify admin: select products on the Products page (or open one) and choose Add to sale under More actions; the form opens with them picked.
  2. Set the discount: a percentage off, an amount off, or a set price for every variant. Tick Round sale prices to end them in .99, .95 or a whole amount, rounding down or up (100.24 → 99.99, 100.99, 99.95, 100.95, 100.00 or 101.00). Under Products already on sale, choose what happens to products that are already marked down outside this app (see What happens to your prices).
  3. Pick the start and end, or click Use dates on an upcoming holiday or shopping event (Black Friday, Memorial Day, Mother's Day…). Times are in the timezone from Settings (your store's timezone unless you change it). To run it regularly, choose Repeat: every week, every 2 weeks or every month, optionally until a date.
  4. Choose the Storefront display: the original price crossed out, or only the sale price.
  5. Check the preview. It lists every variant with its old and new price, and says why any variant will be skipped. Pause in the Action column keeps a product out of the sale.
  6. Click Schedule sale (or Save in Shopify's bar at the top of the page, which appears once you've filled something in). Turn on Require approval if you want to approve it in the Sales list before it can start.
Example
The preview in the sale form: new prices, a price held at the lowest allowed price, a variant skipped by price protection, a product already on sale left as is, a gift card and a paused product. Above it, a discount code that customers would get on top of the sale price, and a market that keeps its own fixed price.

Not sure what to enter? Auto-fill on the New sale page fills in the discount, dates and name with a ready-made plan that you can change. Plan sale on any holiday (Sales page or Sales calendar) opens the form with that event's dates and suggested discount filled in.

The Sales page

At the top: how many sales are live and scheduled, how many variants are at a sale price right now, and how many sales ended in the last 30 days. Running means the app is checking every minute, so sales start and end on their own; it also says when sales are waiting for your approval.

Example
The overview at the top of the Sales page.
What's new
After an update, a short What's new note at the top of the Sales page says what changed. It shows once: Got it hides it for good, for everyone in your store. More in Help opens this page.
Active and scheduled
Every sale that isn't finished, with its status, discount and period. Under the period a countdown says how long until it starts or ends ("Starts in 2 days 1 h", "Ends in 20 days"), and adds "needs approval" when it's waiting for you. The buttons on the right depend on the status (see Editing, pausing and cancelling).
Example
A running sale, a scheduled one and one waiting for approval that repeats every week.
Timeline
Below the list, each sale is a bar on a calendar of the coming weeks, in the same order as the list (hover a bar for its name). The vertical line is Today; the shaded band shows the sale's whole period and its length. A sale that started before the visible range shows "since" its start date, one that runs past it shows "until" its end date. Colours: Live, Scheduled, Needs approval, Paused, Failed. Small marks on the axis are holidays and shopping days (hover for the name). Click a bar to open the sale. To change dates, drag: a bar moves as a whole, and its edges change just the start or the end (also for a running sale: an end dragged to now ends it, and a start moved later than now puts prices back until the new start). Dates move in whole hours and show while you drag; nothing changes until you click Save (Undo puts it back). It works with a mouse or a finger.
Example
The same three sales on the timeline.
Coming up
The next few holidays and shopping days for your country, each with Plan sale. If one of your sales already runs on those days, it says so; you can still plan another sale for different products. Full calendar opens the Sales calendar.
Example
One event in Coming up, with its suggested sale window and discount.
Quick start
Start a sale from a ready selection: picked products, the entire catalog or a collection (Pro: vendor, product type, tag, overstock). Each option shows how many active products it covers.
Past
Ended and cancelled sales. Open one to see its report, run it again or delete it.

Sales calendar

Open it with Full calendar on the Sales page. It lists holidays and shopping days for the next 12 months, each with a suggested sale window and discount.

Example
The year at a glance: events per month (United States).

What happens to your prices

Price protection

Every variant has a lowest allowed price, worked out in this order:

  1. Variant has a Cost per item: cost plus your margin (from a floor rule if one applies, otherwise the default margin in Settings).
  2. No cost, but a floor rule applies: the rule's lowest price or maximum discount, whichever is stricter. Product rules win over collection rules, which win over store-wide rules.
  3. Otherwise: the default maximum discount in Settings.

If a discount would go below that price, the app either skips the variant (it keeps its full price) or sells it at the lowest allowed price instead. Choose which in Settings → Price protection.

Tip: protection is most accurate with Cost per item filled in (Products → a product → Pricing). Settings shows how many of your variants have it.

In the preview, products with Cost per item show their cost and profit per unit at the sale price (or how far below cost a discount would go), and the counts above the table say how deep a percentage discount can go while every product stays above its lowest allowed price.

Editing, pausing and cancelling

Example
Which buttons a sale has, by status. Cancel and Delete ask you to confirm first.
Approve
A sale with Require approval waits in the list until you click Approve. If its start time has already passed, approving starts it right away and it runs until its end.
Edit
Works for scheduled, paused and running sales. Editing a running sale updates prices right away without pausing it; products you remove go back to full price. Moving the start into the future puts all prices back until then; setting the end to a time that has passed ends the sale now.
Save / Save and exit
When editing, Save keeps you on the form and Save and exit takes you back to Sales. Both stay greyed out until you change something, so you can tell at a glance whether there are unsaved changes. If saving fails, the reason shows next to the buttons and at the top of the page.
Unsaved changes
As soon as you change something in the sale form or in Settings, Shopify's bar at the top of the page shows Save and Discard. Discard puts everything back as it was. Leaving the page with unsaved changes asks you first.
Pause
Puts the original prices back now. Resume discounts them again; if a price changed while paused, the new price becomes the original. A sale waiting for approval can't be paused: approve or cancel it.
Pause one product
On the sale's page, under Products, Pause puts just that product back at full price while the rest stays on sale; Resume discounts it again. In the sale form, Pause in the preview does the same when you save. It works for collection, tag and catalog sales too.
Cancel
Puts the original prices back and closes the sale for good. For a repeating sale, it also stops the series.
Repeat
In the sale form, under the dates. When a run ends on its schedule, the same sale is scheduled again for its next window, at the same local times: a week, 2 weeks or a month later (on the 29th–31st, shorter months use their last day). Each run saves fresh originals, so price changes you made between runs are kept. Collections and groups are looked up again, so new products join; if nothing matches any more, that run discounts nothing and the sale says so. The sale's report keeps every run. A run can't be longer than the gap between starts. Repeat until (optional) ends the series after that day; Cancel ends it now; Doesn't repeat stops it after the current run.
Stock limit
Optional, in the sale form under Launch. While the sale runs, the app checks stock every few minutes: when a product's stock (its sale variants together, all locations) falls to the limit, the product goes back to full price for the rest of the sale, as if you paused it, and the report says why. Products that don't track inventory aren't affected. You can resume the product on the sale's page; if its stock is still at the limit it's paused again. If Shopify refuses to put a price back, the sale says so and the app keeps trying every few minutes.
Run again
An ended or cancelled sale can run again: click Run again next to it under Past, pick new dates and click Schedule again. Original prices are saved afresh at the new start.
Delete
Removes an ended or cancelled sale from the list. It's only possible once every price is back.

Sale statuses

Example
Every status, as it appears in the Sales list.
Pending approval
Waiting for you to click Approve. Nothing changes until you do, even after the start time has passed.
Scheduled
Starts on its own at the start time.
Active
Running: sale prices are live.
Paused
Original prices are back until you resume. If its end time passes while it's paused, it simply ends.
Applying… / Reverting…
Prices are being changed right now. This takes seconds to a few minutes for large sales.
Ended / Cancelled
Finished, and prices are back. The report keeps the full history.
Failed
Shopify rejected the price changes (the sale's message says how many). Open the sale report to see which products and why. Click Cancel to put back every price that's still discounted. If Shopify refused a pause or cancel, the app keeps retrying it on its own every 15 minutes until every price is back; otherwise it retries every 15 minutes once the sale's end time has passed. A brief hiccup at the start (Shopify busy for a moment) isn't a failure: the sale stays scheduled and starts on the next try.

The sale report

Click a sale's name to see every variant: applied, restored, skipped by price protection, skipped because it was already on sale outside this app, left alone because its price was changed by hand, or failed with Shopify's reason. The counts at the top cover the latest start and the latest end. While a sale runs, a price someone changed in Shopify shows up on its page right away, with a note that it will be left as it is.

The same page lists the sale's products with Pause and Resume, and shows how many original prices are still held to restore. A sale that ran several times keeps every run; Clear older entries removes all but the latest start and end (you're asked to confirm). Export CSV downloads every entry for a spreadsheet.

Results, on the same page once the sale has started: units sold, revenue and orders for the sale's products while it ran (or so far), each compared with the same length of time just before it, plus Markdown given: what the sale took off the original prices of the units sold. Cancelled and test orders aren't counted. A repeating sale shows its latest run. Editing a running sale doesn't restart the count. Each unit counts at the price it sold at, and a product removed from a running sale keeps what it sold while it was in it. The app reads orders only for these totals; it doesn't read or keep customer details.

Example
Results for a week-long sale: more units and orders than the week before.

Settings

Timezone, holidays and price protection save together: change anything and click Save in Shopify's bar at the top of the page (Discard undoes your changes). Floor rules are added and deleted on their own.

Language
The app follows each person's Shopify admin language: English, Español, Français, Deutsch, Português (Brasil), 日本語 or Italiano (any other admin language sees English). To use one language for everyone in your store, pick it in App language under Settings → Language; Same as Shopify admin goes back to each person's own. It applies at once, without Save.
Full width
Every page has a Full width / Standard width button at the top right, next to the page's other actions: pages use the whole width of the admin, or the usual narrower column. Saved for your store, on every page.
Timezone
The timezone for sale start and end times. It follows your store's timezone unless you pick another.
Holidays and shopping events
Show holidays and shopping events turns Coming up, the holiday marks on the timeline and the calendar in the sale form on or off. On by default.
Price protection
Default maximum discount, default margin over cost, and what happens when a discount goes below the lowest allowed price (skip the variant or sell it at the lowest allowed price). Also shows how many variants have Cost per item.
Floor rules
A lowest price, maximum discount or margin over cost for a product, a collection or the whole store. See Price protection above for which rule wins.

Shopify admin and Flow

Add to sale
In Shopify admin, on the Products page select products and choose Add to sale, or open a product and find Add to sale under More actions. The New sale form opens with those products (up to 50 at a time).
Shopify Flow
Three triggers for your own workflows: Sale started, Sale ended and Sale failed. Each passes the sale's name, link, discount, start, end and timezone (Sale failed also passes the reason). For example: post to your team chat when a sale starts, or tag products when it ends. They fire when the app starts or ends a sale on its schedule.
Get support
Shopify's Get support link for this app opens this Help page.

Plans

Questions

Can two sales discount the same product?
Not at the same time. The app refuses overlapping sales on the same variant, and won't discount a variant until another sale has put its price back.
What if my server or Shopify has an outage at start or end time?
The app catches up as soon as it can: a missed start is applied (if the sale is still running) and a missed end is restored.
What if I uninstall during a sale?
Shopify stops apps from changing prices once they're uninstalled, so a running sale's prices stay as they are while the app is gone. Just install it again, any time later: running sales carry on, ones that are over get their prices back, and scheduled sales return to the schedule. Even after a long time, prices still discounted by the app are put back from the copy kept on each product, unless you changed them yourself (the result appears under Past as "Prices restored after reinstall"). If Shopify refuses some of them, they're kept and retried every 15 minutes. Nothing to do by hand.
Which holidays does the calendar show?
Public holidays plus the big shopping and gift-giving days for 13 countries; other countries see the international shopping days. See Sales calendar above.
Will customers get a discount code on top of the sale price?
Yes, if the code (or an automatic discount) covers those products: Shopify applies it at checkout to the sale price. The preview warns you about every such discount before launch, so you can exclude the products from it in the Discounts section or keep both on purpose.
Do I need Cost per item?
No. Without it the app uses your floor rules and default maximum discount.

Need a hand?

Contact us through the support link on our App Store listing. Privacy: privacy policy.