Aug 11, 2026 · 8 min read
Discount-Dependent Customers: Find and Handle
First-hand guidance from the Daymark team on analytics workflows, growth reporting, and the operational metrics teams use to make decisions.
Some of your customers never pay full price, and a share of them lose money on every order once the code is applied. You can identify them from a Shopify export by measuring what percentage of each customer's orders used a discount, then check their true margin after the code, shipping, and returns. The uncomfortable finding is common: a discount-dependent cohort that looks like solid revenue is often break-even or negative on contribution margin.
This guide shows how to measure discount dependence per customer, how to compute the true margin of that cohort with a worked example that goes negative, and a three-way decision framework for what to do about them: serve, re-price, or starve.
Discount Dependence Is a Behavior, Not a Single Order
A discount-dependent customer is one whose purchases almost always require a code. One discounted order doesn't make someone discount-dependent. A customer with eight orders where seven used a code does. The signal is the share of a customer's orders that carried a discount, measured over their whole history.
This matters because promotions are supposed to be an acquisition or reactivation cost you pay once, then recover on full-price repeat orders. Discount-dependent customers break that model. They take the promotional price every time, so the discount stops being an investment and becomes your permanent selling price to them. Whether that's fine or fatal depends entirely on the margin math, which most stores never run at the cohort level.
Measure Discount Dependence From Your Export
You need one file: a Shopify orders export covering at least 12 months, which includes a Discount Amount (or Discount Code) column per order. The steps below turn that into a per-customer dependence score and a cohort you can act on.
Step 1: Flag Every Order as Discounted or Not
Add a column that reads 1 if the order had any discount applied and 0 if it didn't. Use the discount amount being greater than zero, or the presence of a discount code, whichever your export gives cleanly. Automatic tiered discounts and code-based discounts both count. A customer doesn't care which mechanism gave them the price.
Step 2: Score Each Customer's Discount Share
Pivot to one row per customer with two values: total orders, and sum of the discounted flag. Divide to get discount share, the percentage of that customer's orders that used a code. A customer with 6 orders and 5 discounted has an 83% discount share.
Set a threshold for "dependent." A practical line is a discount share of 70% or higher across three or more orders. The three-order minimum stops you from labeling a new customer with one discounted first order. Everything at or above the threshold is your discount-dependent cohort.
Step 3: Compute the Cohort's True Margin
Full-price margin is not the margin this cohort actually earns you. You have to subtract the discount itself, then the variable costs that apply to every order. Here is the worked example. It compares a full-price order against the discount-dependent cohort's average order at the same $60 list price.
| Per order at $60 list | Full-price customer | Discount-dependent customer |
|---|---|---|
| Gross revenue (list) | $60.00 | $60.00 |
| Discount applied | $0.00 | -$15.00 (25% code) |
| Net revenue | $60.00 | $45.00 |
| COGS (35% of list) | -$21.00 | -$21.00 |
| Shipping and fulfillment | -$8.00 | -$8.00 |
| Payment processing (3%) | -$1.80 | -$1.35 |
| Returns reserve (8% of net) | -$4.80 | -$3.60 |
| Contribution margin | $23.40 | $10.65 |
| Contribution margin % | 39% | 24% |
At a single 25% code the cohort is still positive, at $10.65 per order. Now add the two things that travel with discount-dependent behavior: they buy the discounted, lower-margin SKUs, and they return more. Push COGS to 45% of list (they cherry-pick promoted, thinner-margin items) and returns to 20% of net.
Net revenue: $45.00
COGS (45% of list): -$27.00
Shipping/fulfillment: -$8.00
Payment processing: -$1.35
Returns (20% of net): -$9.00
Contribution margin: -$0.35 per order
The cohort has gone negative. Every order costs you 35 cents in contribution before you count any of the fixed cost of running the store. And this is the segment many brands reflexively send another code to when it goes quiet, which only deepens the loss.
The Serve, Re-Price, or Starve Framework
Once you know the cohort's true margin, you have three honest options. The right one depends on whether the cohort is positive, marginal, or negative on contribution, and whether it's large enough to matter. Don't apply one blanket answer to all discount users.
Serve. Keep discounting the cohort if it's still positive on true margin and shows signs of graduating, meaning discount share is falling over time or later orders trend to full price. Some customers start price-sensitive and warm up. If the math is positive and the trend is right, the discount is doing its job as an acquisition cost. Serve them and leave it alone.
Re-price. If the cohort is thin or break-even, change the offer rather than the customer. Lower the discount depth (25% becomes 15%), move from a percentage code to a fixed threshold that lifts AOV, or restrict codes to full-margin SKUs so they can't cherry-pick your thinnest items. Re-pricing keeps the volume while pulling the cohort back above water. It's the first thing to try before writing anyone off.
Starve. If the cohort is clearly negative after re-pricing wouldn't fix it, stop feeding it. Remove the segment from promotional sends, suppress them from always-on discount campaigns, and let the relationship stand or fall at full price. You'll lose some of the volume. That's the point, because the volume was costing you money. Measure the profit change, not the revenue change, because revenue will drop while profit rises.
The test that decides between them is repeat behavior at full price. A cohort that will occasionally buy without a code can be re-priced. A cohort that goes completely dark the moment the code stops was never really your customer; the discount was. To see whether a cohort actually comes back on its own, watch the repeat purchase rate of the discount-dependent segment against your full-price customers.
Frequently Asked Questions
How do I find discount-dependent customers in Shopify?
Export your orders, flag each order as discounted or not based on discount amount or the presence of a code, then pivot to one row per customer showing total orders and discounted orders. Divide to get each customer's discount share. Anyone at 70 percent or higher across three or more orders is discount-dependent. The three-order minimum prevents mislabeling a new customer who used one welcome code.
Can discount-dependent customers be unprofitable?
Yes, and often are once you count everything. After the code, discount-dependent cohorts frequently buy thinner-margin promoted SKUs and return more, which pushes contribution margin toward or below zero. A cohort that looks like healthy revenue can lose money per order. Store-wide blended margin hides this because full-price customers subsidize it. You have to isolate the cohort and run its true margin to see it.
What is a good discount share threshold to worry about?
A discount share of 70 percent or higher across three or more orders is a practical line for flagging dependence. Below that, occasional discount use is normal and healthy. The threshold is less important than what you do next: compute the cohort's true contribution margin after discount, COGS, shipping, and returns. A 90-percent-dependent cohort that stays margin-positive is fine; a 70-percent one that's negative is not.
Should I stop discounting unprofitable customers entirely?
Not as a first move. Try re-pricing before starving: lower the discount depth, switch to a threshold that lifts order value, or restrict codes to full-margin SKUs so the cohort can't cherry-pick your thinnest items. Reserve starving, meaning removing them from promotional sends, for cohorts that stay negative after re-pricing and go dark at full price. Measure the profit change, not the revenue change, since revenue drops while profit rises.
Why does blended margin hide unprofitable cohorts?
Blended contribution margin averages every customer together, so profitable full-price buyers offset a money-losing discount-dependent segment and the average still looks healthy. A store at 34 percent blended margin can contain a large cohort that's underwater. The only way to catch it is to split margin by discount behavior and read each cohort on its own. Averages are where unprofitable segments go to hide.
Conclusion
Discount-dependent customers aren't automatically bad, but you can't know until you isolate the cohort and run its true margin after the code, COGS, shipping, and returns. Measure discount share per customer, compute contribution margin for the dependent group, then choose deliberately: serve the positive ones, re-price the marginal ones, starve the negative ones that go dark at full price.
For the broader method, see the customer segmentation guide. To turn the same export into recency, frequency, and monetary tiers so you can spot these cohorts alongside your best customers, read the RFM segmentation on Shopify walkthrough.