The problem with treating your list as one audience
The usual story goes like this. A founder runs a public sale. It barely moves the bottom line. So they decide the fix is ‘members only.’ The next promotion goes to everyone with an account or an email signup. And they treat that whole list as one audience.
But the word ‘member’ hides a divide. Your list holds two very different groups. Signups who have never bought anything. And . They share an inbox. They do not share the same math.
The never-bought group still has to be won, like any stranger. Winning them takes real marketing money. The past buyers were already won. Their ad cost is paid, sunk in their first order. Emailing them costs next to nothing. Hand both groups the same deep discount, and one of them quietly turns your promotion into a loss.
This article is about the first one: discounts. The same 25% code can make money or lose it. It depends on who uses it. Each buyer carries a different ad cost. The skill is not picking the discount. It is picking who gets it.
1. An example showing you the numbers
Picture your knitwear store on Shopify. Your hero product is a hand-finished knit sweater at $100. Winning a cold customer costs you $20 of ads. Emailing a past buyer costs nothing worth counting.
That difference sets what each buyer is worth at 25% off. A cold shopper or a never-bought signup loses you $5 per sweater. The ad cost plus the deep discount is more than the order carries. A past buyer at the same 25% leaves $15. There is no ad cost on the order. And a never-bought signup on a lighter 10% welcome code leaves the standard $10.
Now compare three ways to run the same week’s promotion. Ten buyers from each group, wherever an offer exists.
Three ways to run the same 25% promotion
Ten buyers per group where an offer exists. Dollar figures are each group’s total contribution for the week.
| Group | Public 25% off | Members-only 25% off | Tiered: 25% past buyers, 10% new |
|---|---|---|---|
| Cold shoppers (carry $20 ads each) | -$50 | $0 (no offer) | $0 (no offer) |
| Signups who never bought | -$50 | -$50 | +$100 |
| Past buyers (ads already paid) | +$150 | +$150 | +$150 |
| Revenue on the dashboard | $2,250 | $1,500 | $1,650 |
| Contribution, what you keep | +$50 | +$100 | +$250 |
Look at the first column. The public sale posts the biggest revenue of the three, $2,250. It keeps the least: $50. Two of its three groups lose money on every sweater. The past buyers spend their profit bailing the others out.
The tiered version keeps $250. Five times the public sale. And the dashboard shows $600 less revenue. Nothing changed about the product or the discount depth. The deep code went only to people whose ads were already paid. The never-bought signups got a lighter welcome offer. That offer still earns the normal $10. Run this play weekly, and the gap grows. About $13,000 a year, against the public sale’s $2,600.
One honest note. This comparison holds volumes equal, to show the structure alone. In real life the lighter 10% offer wins fewer signups than a 25% offer would. But fewer sales at +$10 each still beat more sales at -$5 each.
The sentence that changes how you think about member-only discounts
Revenue rewards the campaign that converts more customers. Contribution rewards the campaign that converts the right ones.
In this example, the biggest-revenue campaign was the least profitable one. The discount was never the problem. Who received it was.
2. How to build a tiered member-only program
The setup is an afternoon in your email platform, plus one spreadsheet. The math decides the offers. The list split decides who sees them.
- Split your list in two: bought before, never bought. Every major email platform can split a list by purchase history. The cut is simple. Zero orders, versus one or more. This is the single most valuable split you will build all year.
- Give past buyers the deep code. Somewhere between 20% and 30% off. Their ad cost is already paid, sunk in their first order. So the contribution math carries a deep discount with ease. Frame it as a loyalty reward, not a sale.
- Give never-bought signups a lighter welcome code. Around 10% to 15% off. Enough to nudge a first order. Shallow enough that the order still pays for the marketing it takes to win them. The welcome code has one real job: it turns a signup into a past buyer. And a past buyer earns the deep code.
- Judge every campaign on contribution per group, not revenue. Build the group table above with your own numbers each time. Revenue will always flatter the campaign that converts the most people. Including the ones who lose you money.
- Protect the codes and keep the program fresh. Use single-use codes tied to each customer’s email, with short expiry windows. Watch who uses them, and look for leaks. Rotate the member offer every six to eight weeks: early access, a gift with purchase, a category-only deal. The discount must never become the expected price.
3. One warning before you act
Tiering is not worth it at every size. Under about 1,000 engaged subscribers, the extra work outweighs the lift. Grow the list first. Keep offers simple. And public sales still have a place: clearing seasonal stock, meeting a competitor’s launch, backing a collaboration. A public discount should be a planned, occasional tool. Not your default way to make a slow week feel better.
Watch the tone with new signups, too. Nobody should feel demoted. ‘Welcome offer’ and ‘loyalty reward’ are both gifts. They just answer different situations.
4. Frequently asked questions
Why does the public sale look better on my dashboard?
Revenue counts every sale at its selling price. Whether that sale made money or lost it. The public sale wins the most people. So it posts the biggest number, while the losing groups quietly eat the profit. Contribution per group is the number that tells the truth.
Won’t the lighter welcome offer convert fewer signups?
Yes. Often around half as many as a deep offer would. That trade is the design. In the example above, welcome-code sales earn $10 each. Deep-discount sales to the same group lose $5 each. Fewer profitable orders beat more losing ones every time.
Should I ever run a public sale again?
Rarely, and on purpose. Use one when you have a clear reason. Old-season stock to clear. A launch to defend against. A collaboration to support. And model it first. What kills stores is the reflex public sale, run every time volume dips.
How do I stop the deep member code from leaking?
Single-use codes tied to the member’s email or phone. Expiry within 48 hours of issue. And an eye on who uses them. A little sharing is harmless. But if welcome-tier customers start using deep codes in numbers, tighten the code handling before you touch the discount.
5. Quick reference: what to avoid and what to apply
What to avoid
- Judging promotions on revenue, it rewards converting the wrong customers.
- Treating your whole email list as one audience with one offer.
- Giving never-bought signups the same deep code as loyal past buyers.
- Running public sales by reflex whenever volume dips.
- Leaving member codes reusable, shareable, and permanent.
What to apply
- Split the list into past buyers and never-bought signups.
- Reserve the 20% to 30% code for past buyers, whose ad cost is already paid.
- Offer new signups a 10% to 15% welcome code that still earns normal profit.
- Track contribution per group on every campaign you run.
- Rotate member offers every six to eight weeks and keep codes single-use.
Want your six costs mapped for you?
Our free 31-Point Profit Diagnostic puts a dollar figure on where your profit is leaking. Or get a quote for done-for-you eCommerce accounting.
Definitions, modeling notes & rate-basis disclosures
Definitions
- The six profit levers
- (1) Discounts, (2) Refunds, (3) Product cost (landed COGS), (4) Sales channel and payment fees, (5) Shipping and 3PL fees, (6) Advertising spend.
- Customer Acquisition Cost (CAC)
- The advertising it takes to win one new buyer. In this model, $20 per cold conversion; near zero for emailing past buyers.
- Cohort
- A group of customers who share the same cost profile. Here: cold shoppers, never-bought signups, and past buyers.
- List-only member
- Someone on your email or SMS list who has never bought. In money terms, still a cold customer.
- Past buyer
- A member who has bought at least once. Their acquisition cost is sunk, which is what makes deep discounts to them profitable.
- Retention marketing
- Reaching existing customers on channels you own, like email and SMS. Nearly free compared with paid ads.
- Contribution
- Selling price minus all six costs. What a sale actually leaves behind, as opposed to the revenue it shows on a dashboard.
Modeling notes
- This article uses the series’ standard teaching store: a $100 product with COGS of $40, advertising of $20 per cold conversion, shipping and 3PL of $12, refunds of 5%, and payment and channel fees of 3%. Business as usual, a 10% discount with full ad cost, leaves $10 per order. Only the discount lever and who carries the advertising cost move here.
- Per-buyer reconciliation. Cold shopper or never-bought signup at 25% off: $100 - $25 - $40 - $20 - $12 - $5 - $3 = -$5. Past buyer at 25% off, no ad cost: $100 - $25 - $40 - $0 - $12 - $5 - $3 = +$15. Never-bought signup at the 10% welcome code: $100 - $10 - $40 - $20 - $12 - $5 - $3 = +$10.
- Campaign totals assume ten buyers per group wherever an offer exists, zero otherwise. Public: -$50 - $50 + $150 = +$50 on $2,250 revenue (30 x $75). Flat members-only: -$50 + $150 = +$100 on $1,500. Tiered: +$100 + $150 = +$250 on $1,650 (10 x $75 + 10 x $90). Annualized weekly: $2,600 versus $13,000.
- Equal volumes per group are a teaching simplification that isolates the discount structure. Emailing past buyers is treated as free; real retention tools cost something, but pennies against paid acquisition.
Rate-basis disclosures
- Product cost: $40 per sweater (40% of the $100 selling price).
- Advertising: $20 per converted cold customer; $0 for past buyers reached by email or SMS.
- Discounts: 25% deep code; 10% welcome code; both applied to the $100 retail price.
- Shipping and 3PL: $12 per order. Refunds: 5% of retail ($5). Payment and channel fees: about 3% on Shopify (2.9% plus 30 cents), rounded to $3.
- All figures rounded to whole dollars for easy reading.