Skip to content

Keep codes off sale items

An item selling below its compare-at price is already discounted. A code on top of that is a discount on a discount — margin you never planned to give. This guide blocks it shop-wide.

  1. Open ControllerDiscount Code tab → Lock Discount Usage On Sale Items, and turn the switch on.

  2. Pick your Trigger:

    • Block if cart has any sale item — one marked-down item anywhere in the cart blocks all codes. Maximum protection, but a customer buying one sale sock plus $200 of regular stock also loses their code.
    • Block when sale items exceed % of cart total — codes are blocked only once sale items pass your Threshold (%) of the cart’s value. This is the setting most stores want.
  3. If you chose the percentage trigger, set the Threshold (%). A threshold of 50 means: mostly-regular carts keep their codes, carts that are mostly sale items don’t.

  4. Optional — set the Error message. Default: “Discounts can’t be used on sale items.”

  5. Save.

The threshold measures money, not item count. At threshold 50, a cart with $60 regular + $40 sale items still takes codes (40% on sale); flip those numbers and it doesn’t. Guidance:

  • 0–20 — strict; effectively “codes are for full-price shopping.”
  • around 50 — balanced; bundle shoppers keep their codes, sale-haulers don’t.
  • 70+ — lenient; only blocks carts that are nearly all sale items.

A product whose current price is below its compare-at price. A compare-at equal to (or below) the price doesn’t count — the item has to actually be marked down.

Add a marked-down product to a cart until sale items exceed your threshold, then try a code at checkout — it should be rejected with your message. Then check the sale-item discounts report over the following weeks: this lock attacks exactly the number in Lost on sale items.

  • PromoLock-created discounts skip sale items by default via SafeGuards — this lock extends the same protection to every code, including other apps’.