Scheduled Discount Campaigns for Shopify: You Asked, We Built It

You asked for volume discounts, so we shipped them. You asked for minimum order quantities, so we shipped those too. Then you asked for the hard one: run Black Friday without touching a single product price. That shipped today, and it turned a wholesale pricing app into a discount scheduling engine.

Scheduled discount campaigns for Shopify: pick a start and end date and the sale turns itself on and off
Quick answer

You can now schedule a Shopify discount with a start and end date that never edits your product prices, so there is nothing to put back afterwards. It can target one customer group or every shopper, and its share link discounts logged-out visitors through native checkout with no code to type. It is in Miko B2B Wholesale Pricing, on every plan including the free one.

We built the app you kept asking for

Miko B2B Wholesale Pricing started narrow. It did one thing: tag a customer, and they see wholesale prices everywhere, including checkout, with no coupon codes and no duplicate products.

Then the requests started, and they were remarkably consistent.

"Can it reward bigger orders?" That became volume discounts: quantity price breaks, scoped per product, per collection, or across a whole customer group, with the tier table shown right on the product page so buyers can see what ordering one more case would do.

"Can I stop people ordering two units at trade price?" That became minimum order quantities.

"Can my buyers just send me their purchase order?" That became a storefront purchase order form. Buyers search your catalogue by name, filtered by collection or vendor, because expecting a trade buyer to know your SKU codes by heart is the single biggest reason quick order forms go unused. Or they upload the PO exactly as their own system exported it, in PDF, Excel or CSV, and the app reads it, prices every line at that buyer's own wholesale rate, and shows it back for them to confirm.

Why the confirm step exists. A PDF can be misread. Quietly turning a misread file into a real order is how a buyer ends up receiving twenty-seven cases instead of two. Nothing is ordered until the buyer approves what the app read.

Then came the request that changed the app

The one that kept coming back was not a wholesale request at all:

"I want to run Black Friday. I don't want to edit two thousand product prices on Thursday night and edit them all back on Monday."

That is a fair thing to want, and the reason it is painful is worth being precise about. Editing prices for a sale is not the hard part. Editing them back is. Every price you miss keeps selling at the sale rate, and you usually find out from your margin report weeks later rather than from your storefront.

So the feature we built does not edit prices at all.

How scheduled campaigns work

A campaign is a discount with a start date and an end date. You set it up once, and it switches itself on when the window opens and off when it closes. The app re-checks every minute, so it starts and stops within about a minute of the time you set, and there is nothing to click on the day.

Times are entered in your own browser's time zone and that zone is stored with the campaign, so a sale set to end at midnight ends at midnight where you are, not somewhere in UTC.

Three audiences

  • Everyone who visits the store. A normal storefront-wide sale, retail shoppers included. No tag, no account.
  • Only shoppers who open your share link. The campaign stays invisible until someone opens the link. Good for early access, an email list, or an influencer drop.
  • Only selected customer groups. A trade-only event for the wholesale groups you pick.

The share link works for logged-out shoppers

This is the part most discount apps cannot do, and it is worth explaining why.

Most apps key a discount to a logged-in customer, because that is the straightforward way to know who someone is. The consequence is that a first-time visitor, who has no account and is not going to make one to buy a candle, cannot be given the price.

When someone opens a Miko campaign link, the campaign is recorded on their cart rather than on a customer account. A visitor with no account, who never logs in, still gets the campaign price all the way through native Shopify checkout. There is no discount code to type and nothing for them to remember. Send the link, they shop, the price is already right.

Because it lives on the cart, it survives page reloads and follows them from product page to checkout. If they later open a different campaign link, the newer one replaces it.

What you can discount

A campaign can target your whole catalogue, a single product, or a collection, with collection membership checked live at checkout so adding a product mid-sale immediately includes it. Each rule can be a percentage off, a fixed amount off, or a flat per-unit price, and can require a minimum quantity.

How campaigns meet wholesale pricing

If you are already running wholesale groups, the obvious question is what happens when a campaign lands on top of a customer who is already getting 20 percent off.

Every campaign has a stackable setting, and it decides exactly that.

  • Not stackable, the default. The campaign price and the wholesale price are both measured against retail, and the buyer gets whichever is cheaper. A wholesale customer already on 20 percent off is never pushed to a worse price by a 10 percent campaign.
  • Stackable. The campaign comes off on top of the wholesale price.
Use stackable deliberately. A 20 percent group discount plus a stackable 20 percent campaign is a 36 percent total reduction, not 40, because the second percentage applies to the already-reduced price. That is normal compounding, and it is the kind of arithmetic that is much better understood before a sale than after it.

Nothing changes until you run one

This is the part we care about most, because it is the part that protects the merchants already using the app.

With no live campaign, your store behaves exactly as it did before this feature existed. Your customer groups, custom prices and volume discounts are untouched, and the checkout discount is the same one you already had. We verified that on a live store: the existing configuration came back byte-identical after the deploy.

Ending a campaign, or deleting it, restores the previous pricing immediately. There is no cleanup step and no cached sale price to chase on Monday morning.

What the app is now

It started as wholesale pricing. It is now the one place you control both your standing trade prices and your dated sales: Black Friday, Cyber Monday, Boxing Day, end of season, an early-access drop for your email list, or a trade-only event for one customer group.

All of it on any Shopify plan, with no Plus requirement, and campaigns are available on every plan including the free one.

Full setup instructions are in the Event Campaigns documentation, and the full B2B guide covers everything else, including a troubleshooting section for when a price is not showing the way you expect.

You asked, we listened, and we shipped. If there is something your wholesale operation still does by hand, tell us: that is genuinely where this roadmap comes from. Install Miko B2B Wholesale Pricing or talk to our team.

Miko Loyalty and Rewards icon
From the Miko app family

Miko Loyalty and Rewards

Points, VIP tiers, referrals and birthday rewards that bring customers back, with zero storefront slowdown.