← Back to blog
AnalyticsFounder · 3 min read

Discount Attribution: Why Last-Click Overstates Your Discount ROI

Unico CommerceUnico Commerce, Founder

Discount Attribution: Why Last-Click Overstates Your Discount ROI

Open your campaign report after a big promo. The discount is credited with $50,000 in revenue and a 12.5x return. It looks like the best marketing you've ever run.

There's a decent chance it was margin-negative — and the reason is that attribution is answering the wrong question.

Attribution vs. incrementality

These two get confused constantly, and the confusion is expensive.

  • Attribution answers: which channel gets credit for this conversion?
  • Incrementality answers: would this conversion have happened without this channel?

Attribution is about credit. Incrementality is about causation. A conversion can be attributed to the discount and be entirely non-incremental — it was going to happen no matter what.

Last-click attribution — the default in most tools — makes this worse. It assigns each conversion to the final touch before purchase. A discount that appears at checkout or in the last email gets credit for every sale that passes through it, including the shoppers who were already committed.

The result: a beautiful, inflated number

If a discount is the last thing a shopper sees, last-click hands it the credit for:

  • sales it genuinely created, and
  • sales that were coming anyway.

The second group is invisible, so the discount's reported ROI is inflated by exactly the amount of non-incremental revenue it "won." Research on promotions suggests that amount is often large — decomposition studies routinely find only around a third of measured promo lift is truly incremental.

Cross-channel makes it worse

Platforms don't deduplicate against each other. If paid social reports 600 conversions and email reports 500 for the same week, and only 900 actually happened, at least 200 were double-counted. Every channel looks great; the store's actual growth says otherwise.

The fix: incremental ROAS

Measure the discount the way you'd measure an ad — against a control.

Incremental ROAS = incremental contribution margin ÷ discount cost

Worked example. A promo reports 1,000 conversions and $50,000 revenue on $4,000 of discount cost. Reported ROAS = 12.5.

Run a holdout: 50,000 sessions with the discount, 50,000 without. Control converts at 2.00%, treatment at 2.40%.

  • Incremental orders = (0.024 − 0.020) × 50,000 = 200
  • Incremental revenue = 200 × $50 = $10,000
  • Incrementality rate = 200 ÷ 1,000 = 20%
  • Corrected ROAS = 12.5 × 0.20 = 2.5

At a 40% margin, incremental contribution = $4,000 — exactly the discount cost. Break-even, before counting the discount on the 800 orders that didn't need it.

How to correct it

In order of rigor:

  1. Holdout group — randomly withhold the discount from a slice of traffic; the difference is incremental.
  2. Geo experiments — matched-market tests when user-level holdout is hard.
  3. Placebo (PSA) campaigns — a small random group gets a "house" message to net out baseline.
  4. Causal models — difference-in-differences or synthetic controls to tighten the estimate.

All of them share one property: they measure the counterfactual, not the credit.

The takeaway

Attribution answers "who gets credit." Incrementality answers "what changed." Only one of those tells you whether the discount made money.

A discount with a 12.5x reported ROAS can be a 2.5x incremental ROAS — and margin-negative once you subtract the discounts that bought nothing. If you only read the credit, you'll keep funding the leak.