Discount Floors So Promos Never Lose Money

Set a minimum margin discount floor from cost per item so no promotion sells below your target: the formula, where Shopify stores costs, and a pre-launch check.

A discount floor is the lowest price you will accept for a unit after every promotion has been applied. It is the number most stores never write down, and the reason a "sitewide 20 percent" stacked with a welcome code and a free shipping offer ends up selling something below what it cost. A minimum margin discount policy turns the floor into a rule: for each product, you know the deepest total discount it can take, and you check the promotion against it before launch rather than after the month closes.

What a floor is

Your list price minus your cost is not your margin, because the unit does not cost you only what you paid for it. A floor adds every per-unit cost the sale triggers, then asks what price still leaves the margin you decided to keep.

Four inputs:

  • C, the product cost per unit.
  • S, the other per-unit costs you absorb on this sale: packaging, pick and pack, and shipping if you offer it free.
  • f, the variable fees on revenue, such as the payment processor's percentage, as a decimal.
  • μ (the Greek letter mu), the minimum margin you will accept on revenue, as a decimal.

Getting costs into Shopify

Shopify's profit reports depend on a cost you enter yourself. The Help Center says you set cost per item on each product in the admin, under the Price section, and that if a product has variants you need to edit each variant to add its cost. It defines cost per item as how much it costs you for the product or variant.

Two details from the same page matter for a floor. Profit is reported only for products and variants that had a cost recorded at the time they were sold, so a variant with no cost simply drops out of the profit report. And the page defines margin as net sales minus cost, divided by net sales, times 100. Shopify's sales report defines net sales as gross sales minus discounts minus sales reversals, so discounts and returns lower the reported margin. That is useful: after a promotion, your profit report shows the real margin the discount left you.

What cost per item does not hold is S and f. Those you have to add yourself, from your payment statements and your packing costs, which is why a floor is worth building outside the report too.

The floor formula

floor price = (C + S) ÷ (1 − f − μ)

The numerator is what the unit costs you to deliver. The denominator is the part of each revenue dollar left after fees and your required margin. Dividing the first by the second gives the price at which the margin works out to exactly μ.

An example with stated assumptions: a 60 dollar product costing 18 dollars, 4 dollars of per-unit packaging and shipping absorbed, 3 percent variable fees, and a 35 percent minimum margin.

floor = (18 + 4) ÷ (1 − 0.03 − 0.35) = 22 ÷ 0.62 = 35.48 dollars

The deepest discount this product can take is 1 − 35.48 ÷ 60 = 40.9 percent. Do the same for two other products:

ProductList priceCost (C)Absorbed (S)FloorDeepest discount
A60 dollars18435.4840.9%
B50 dollars30556.45none: the floor is above the list price
C29 dollars10320.9727.7%

Product B shows why the exercise exists. At a 35 percent margin target, nothing can be discounted off it, and a store-wide percentage sale would sell it below your target the moment it goes live. Either exclude it from the promotion, accept a lower μ on that product on purpose, or raise its price.

Stacked discounts: the floor after combinations

A floor must hold after all discounts are combined, not just one. Shopify's combinations page gives the rules to apply:

  • Discounts sort into product, order and shipping classes. Product discounts apply first, order discounts are calculated on the remaining subtotal, and shipping discounts last.
  • Multiple discounts apply to an order only when each discount's Combinations setting allows it.
  • Percentage order discounts do not compound. The page's example is a 10 percent and a 20 percent order discount, which together take 30 percent, because both are calculated on the same subtotal.
  • A customer can use up to 5 product or order codes and 1 shipping code on one order.
  • Only Shopify Plus stores can combine two product discounts on the same line item.

Apply them to product A, whose floor is 35.48 dollars:

StackCalculationPriceAbove the floor?
25% product sale60 × 0.7545.00yes
plus a 10% order code45 × 0.9040.50yes
plus a second 10% order code45 × (1 − 0.20)36.00yes, by 0.52
30% sale plus two 10% codes60 × 0.70 × (1 − 0.20)33.60no

The last row is the failure the check exists to catch: each discount alone is comfortable, and together they are 44 percent off, below the 40.9 percent limit. Note that the fix is not a bigger floor but a Combinations setting: decide which codes can stack with the sale and untick the rest.

Free shipping is a second drain. Shopify's free shipping page says a discount of that type can be combined with others only where you allow it, so if you absorb shipping, put its cost into S for the products it applies to, as in the example above.

A pre-launch floor check

Run this before any promotion goes live.

  1. List the products in scope. Collections, tags or a whole catalog.
  2. Confirm every variant has a cost. A variant with no cost in Shopify will not appear in profit reports, which hides the problem you are checking for.
  3. Compute the floor for each. Use the formula, or a spreadsheet column.
  4. Convert the floor to a deepest discount against the list price.
  5. Add the discount stack. Multiply the percentage discounts in the order Shopify applies them: product first, then order discounts on the remaining subtotal.
  6. Mark the exceptions. Any product whose stack goes below its floor is excluded from the promotion or gets a smaller discount.
  7. Place a test order with the whole stack applied to the lowest-margin product and compare the price to the floor.
  8. After launch, read the profit report by product and compare the realized margin with μ.

Applying a floor to a tiered cart discount

A cart discount that grows with spend has a floor per tier. Freebies Engine by Log Studio Lab describes its Cart discount tiers template as "A discount on the whole cart that grows with spend". Because the discount applies to the whole cart, the cart's mix decides whether it holds. Find the product with the highest floor as a share of its price (product B above) and test each tier against that product, or exclude it from the discount so the worst case no longer sits in the carts. If a tier is 15 percent and your worst-case product allows 12 percent, the tier needs an exclusion, not a hope.

The reverse check, how much extra volume a discount must produce to pay for itself, is in Break-Even Discount: Extra Volume You Need. For the gift and BOGO equivalents of the same discipline, read How to Create a BOGO Offer on Shopify and What Is a Free Gift With Purchase?. Plan requirements are on the pricing page.

Sources

Build this offer from the “Cart discount tiers” template.

Requires: Growth plan or higher.