Profit

How discounts eat into WooCommerce margins

A discount comes off the price but not the cost, so it removes a bigger share of your profit than its percentage. On a product with a 50% margin, a 20% discount cuts the gross profit on each sale by 40%, and you'd need about 67% more sales to earn the same. Check discounts against margin, not just sales.

This guide covers the math in plain numbers, where WooCommerce records discounts (and where it doesn't), and how to judge a past promotion.

The math: why 20% off isn't 20% less profit

Say a product sells for $40 and costs you $16. That's a gross margin of 60%.

Discount Price Cost Gross profit Margin Profit lost per sale
None $40.00 $16 $24.00 60% 0%
10% $36.00 $16 $20.00 56% 17%
20% $32.00 $16 $16.00 50% 33%
30% $28.00 $16 $12.00 43% 50%
40% $24.00 $16 $8.00 33% 67%

At 30% off, half the profit on each sale is gone. The lower your margin to start with, the faster this happens: on a product with a 30% margin, a 30% discount leaves nothing.

How many extra sales does a discount need?

To earn the same gross profit as before, you need to sell more units. The break-even multiple is:

margin ÷ (margin − discount)

Margin 10% off 20% off 30% off
40% 1.33× 2× 4×
50% 1.25× 1.67× 2.5×
60% 1.2× 1.5× 2×

So a 20% discount on a 40% margin product needs twice the usual sales just to stand still. If a promotion lifts units by 30%, it lost money on that product, even though revenue went up.

The coupon ROI calculator does this for you with your own numbers.

Free shipping is a discount too

Free shipping offers don't show up as discounts in WooCommerce, but they cost you just the same. Add what you'd have charged for shipping to the discount when you do the math. The guide on comparing shipping costs and charges shows how to measure it.

Where WooCommerce records discounts

WooCommerce records discounts in two different ways, and only one is reported as a discount.

How you discounted Where it shows
Coupon code Coupons column in Analytics › Revenue, and Analytics › Coupons per code (orders and amount discounted)
Sale price on the product Nowhere as a discount. Gross sales is simply lower.
Automatic discounts from extensions Depends on the extension. Some create coupons, some change prices, some add negative fees.

Coupons: Analytics › Coupons lists each code with the number of orders and the amount discounted for your date range. Net sales already has coupon discounts taken out.

Sale prices: because a sale price changes what the product sells for, WooCommerce doesn't record "how much you'd have made at full price". To see a sale's cost, compare units and net sales per unit during the sale with a normal period, using Analytics › Products and the compare option.

Measuring a past promotion's effect on margin

Say you ran a 20% off coupon, AUTUMN20, for one week in October on a store with a typical 55% gross margin.

  1. Get the coupon's results. In Analytics › Coupons, set the dates to the promotion week. Note orders and amount discounted.
  2. Get the store's results. In Analytics › Revenue, note net sales and orders for the same week, and for a comparable normal week (or use Compare to › Previous period).
  3. Work out gross profit for both weeks. Multiply net sales by your margin as a quick estimate, or use gross margin by product for an exact figure.
Normal week Promotion week
Net sales $4,100 $5,300
Coupon discounts $90 $1,180
Gross sales (net + coupons) $4,190 $6,480
Cost of goods (45% of gross sales) $1,886 $2,916
Gross profit $2,214 $2,384

Revenue rose 29% but gross profit rose only 8%. The promotion still made a bit more profit, though it took a lot of extra packing and shipping to get there, and if you offered free shipping on those orders the gain is probably gone.

Note the cost line uses gross sales: a coupon lowers what customers pay, but not what the products cost you, so cost is a share of their full-price value. See cost of goods sold for the definition.

There's one more question a margin calculation can't answer: did the promotion pull forward sales you'd have made anyway? Check the week after. A dip there is part of the promotion's cost. The guide on whether a WooCommerce coupon paid off covers this in more detail.

Discounting without wrecking margin

  • Restrict coupons to higher-margin products or categories, using the coupon's Usage restriction tab.
  • Set a minimum spend so the discount comes with a bigger basket.
  • Use fixed amounts on high-priced items rather than percentages, so the discount doesn't scale with the price.
  • Cap usage per coupon and per customer under Usage limits.
  • Avoid stacking: tick Individual use only so codes can't be combined.
  • Clear dead stock on purpose. A deep discount on stock you'd otherwise write off can be the right call, because the cost is already sunk.

What Askshelf can and can't tell you

Askshelf can report the discount side and the margin side, but not the two joined together for one coupon. Coupon performance gives each code's orders, the amount discounted and the net sales of the orders that used it. Profit gives net sales, cost of goods, gross profit and margin for a date range, compared with an earlier one. It needs WooCommerce's Cost of Goods Sold feature on and a cost on each product, and it excludes shipping costs and payment fees. It doesn't see sale prices as discounts.

Askshelfexample answer

How did the AUTUMN20 coupon do in October?

AUTUMN20 was used on 96 orders in October, discounting $1,180 in total. Those orders brought in $4,720 in net sales, an average of $49.17 per order.Coupon performance for AUTUMN20, 1–31 October
An example on a demo store. In your store, the numbers come from your own orders.

To see what a promotion did to margin, compare a promotion period with the one before it:

Askshelfexample answer

How did my gross margin in the October sale week compare with the week before?

Gross margin was 52% in the sale week (1–7 Oct) against 60% the week before. Net sales rose from $3,900 to $4,650, but gross profit moved only from $2,340 to $2,418. Shipping and payment fees are not included.Profit, 1–7 October, compared with the previous period
An example on a demo store. In your store, the numbers come from your own orders.

Use the coupon figures for the discount and the profit comparison for the margin, and you can fill in the promotion table above. Askshelf is free for 10 questions a month; the profit reporting use case shows how it fits a monthly routine.

For the rest of the profit picture, from product costs to payment fees, read the WooCommerce profit reporting guide.

Common questions

How much more do I need to sell to make up for a discount?

Divide your margin by your margin minus the discount. With a 50% margin and a 20% discount, that's 0.5 ÷ 0.3 = 1.67, so you need about 67% more units just to earn the same gross profit.

Do sale prices show up in WooCommerce's Coupons report?

No. Analytics › Coupons only counts coupon codes. A sale price set on the product lowers the price itself, so the discount is already out of gross sales and isn't shown anywhere as a discount.

Can a discount ever be worth it if it loses money per sale?

Sometimes, for example to clear dead stock you'd otherwise write off, or to win a first order from a customer likely to buy again at full price. Decide that on purpose, and measure whether the repeat orders actually happen.

See how Askshelf handles this: Profit reporting for WooCommerce