Promo Doctor logoPromo Doctor
← All guides

· Promo Doctor

Are Your Promo Codes Losing You Money?

Most brands track revenue, not profit. Here is a blunt breakdown of how discounts hide losses — and how to see your real numbers from a CSV.

If your “top” promo codes are ranked by revenue, you might be optimizing for the wrong game. I look at merchant exports every week — and the pattern is the same: the loudest code in the dashboard is often the most expensive one in margin terms.

The pain: revenue feels like truth

Shopify and ad platforms train you to celebrate sales. A code drives $80k — great, put it in the board deck. Nobody asks, in the same breath: how much did we pay in discounts to get that $80k, and what was left after COGS and refunds? That gap is what promo code analytics is meant to close — not more charts, but revenue paired with discount cost and margin.

Until you line those up, discounts hide losses. A code can grow top line while quietly destroying contribution margin — especially when you stack offers, extend deadlines, or blast the same code to cold traffic.

Example: two codes, opposite stories

Here is a simplified snapshot (numbers are illustrative, but the shape is real). Assume rough COGS at 40% of net sales after discounts for both.

CodeGross salesDiscount givenEst. COGS*Rough contribution
SAVE20 (sitewide)$100,000$22,000$31,200+$46,800
EXTRA25 (stackable / leaked)$88,000$41,000$49,000−$2,000

SAVE20 clears the bar after discounts and COGS. EXTRA25 still shows big gross sales — but after 47% of revenue walks out as discount and your landed COGS on the mix is ugly, contribution goes negative. In real files, refunds and ad spend make this worse, not better.

*COGS here is illustrative (blended % and category mix). The point is pairing revenue with discount + cost, not defending a single percentage.

Mini sanity check (per code)

Contribution ≈ Net sales after discount − COGS − variable costs you trust
Discount % of gross = Discount ÷ Gross sales → if this creeps past your brand’s safe band, pause before scaling.

Why this happens

Teams reward what is easy to measure: attributed revenue and ROAS. Profit per code needs joined-up data — orders, discount lines, returns — and someone willing to look at profit, not applause. Without that, “performance” becomes a vanity label.

Lightweight fix

Export orders, isolate rows by discount code, and sum discount amounts vs net sales. You will not get perfect accounting from a CSV, but you will get directionally honest answers: which codes are net positive and which are subsidized experiments. When you are ready to formalize the math, walk through how to calculate profit per discount code — and read why your “best” code might be hurting margin if leadership still ranks codes by sales alone.

Stop guessing. Upload an orders CSV and see code-level revenue, discount exposure, and estimated net per code — before you change another campaign.

All guides · What is promo code analytics? · Free CSV analysis