Stockouts, discontinuations, reformulations and cuts to the range, treated as what they are: retention events.
Most brands treat the catalog as an operations question and retention as a marketing question. The customer doesn’t see the line between them. When the thing they reorder every six weeks says “sold out,” or comes back tasting different, or quietly disappears, that is the retention program talking, whatever the email calendar says.
Those two numbers frame the guide. The first says a stockout isn’t one lost sale. It follows the customer into the next year. The second says the same cut to a range can look like a win when you count category sales and a loss when you count customers. Both findings come from careful studies with control groups, and both point at the same blind spot: the people who buy from you again and again are the ones most exposed to every change in what you sell.
So this is a guide to handling those changes on purpose: ranking stockout risk by who buys each product, finding the customers who depend on a product before you change or retire it, telling them what and when, and cutting a long tail by each product’s role in repeat orders, not its margin alone.
Every change to what a repeat customer can buy is a retention event. Most of them are scheduled by someone who never looks at retention.
It builds on The Second Order, which covers replenishment timing and the second purchase, and on The Whole Machine for contribution margin and the core flows. Discount training and the sale calendar live in The First Offer.
Start with The Catalog Audit, or with the map just below. Or follow a path:
Three tools run in the page. Nothing you type leaves your browser.
Examples that open with Say or Picture use made-up round numbers. Every source is listed in Appendix C.
What this guide argues, and what would prove each claim wrong.
A position says what would prove it wrong. Test each on your own store.
Five ways the catalog changes under a repeat customer. Each has a customer it hurts most, a number that tells you how it’s going, and a first move.
Find the change you’re facing this quarter. You may be facing three of them at once and managing one.
The whole book is above and always will be. These are the same chapters addressed individually, for linking to one idea rather than to ninety.
| The change | Who it hurts most | The number to watch | First move |
|---|---|---|---|
| A stockout, days to weeks | Customers due to reorder it this month | Repeat-weighted days out of stock | Stock the products repeat customers buy first; capture intent when out |
| Overstock | Full-price customers who see the discount | Share of revenue sold on markdown | Clear it privately, to people who already buy it |
| A discontinuation | Customers for whom it’s most of what they buy | Dependents still ordering 90 days later | Notice, a last stock-up, a tested replacement |
| A reformulation | Loyal buyers of the old version | Reorder rate of existing buyers after the switch | Tell them first, and let them try it before it ships |
| A pruned long tail | Customers whose basket is anchored by a small product | Repeat-basket role of each cut product | Cut duplicates; protect anchors |
The changes share one mechanism. A repeat customer has a routine: a product they know, a quantity, a rhythm. Anything that breaks it forces a fresh decision, and a fresh decision is a chance to leave. A stockout breaks it for weeks, a discontinuation or reformulation for good, and pruning for a few customers at a time, which is why it’s easy to miss in the totals.
A routine doesn’t need a reason to continue. A broken routine needs a reason to restart.
Twelve checks on whether changes to what you sell are being handled as retention events. About forty minutes with your inventory report, your email platform and your order data.
The audit isn’t about how good your forecasting is. It’s about whether the people who buy from you repeatedly are protected when the catalog moves under them: when something sells out, goes away, changes, or gets cut.
Open your inventory or stock report, your email and SMS platform, your product page for something that’s sold out, and whatever record you have of the last product you retired. Score each check 0 to 2: 0 if it failed or nobody can answer it, 1 if partly true, 2 if clean. “We’d know if it were a problem” doesn’t count as an answer.
If nobody measured what the last discontinuation did to its buyers, the answer isn’t “nothing.” It’s “unknown.”
Score as you go; your band appears when all twelve are in.
| Score | What it means | Read next |
|---|---|---|
| 20–24 | Your catalog changes are managed as retention events. The job now is measuring each one against a comparison group, so the playbook keeps improving. | The Catalog Scorecard, then Prune by Basket Role |
| 14–19 | The basics exist, but some changes still reach your best customers by surprise. Fix the zeros first. | The chapter linked from your lowest check, then Find the Dependents |
| 8–13 | Operations decides what customers can buy, and retention finds out afterwards. Connect the two before the next change. | Who a Stockout Hits, then The Discontinuation Playbook |
| 0–7 | Every stockout and retirement is costing you customers you can’t see. Start with the list of what’s changing and who depends on it. | Find the Dependents, then The First Thirty Days |
If you’ve never retired or reformulated a product, score checks 10 and 11 as 1; they’ll matter the first time you do. Check 9 applies to every brand, and it’s the one to fix before it’s needed.
The lost sale is the part you can see. A field test with 22,921 customers found the larger part in the orders that didn’t come afterwards.
Most stockout reports count one thing: units you could have sold while the product was out. The best measurement of what else goes missing comes from a large field test at a mail-order catalog, and it’s the study every inventory decision in this guide leans on.
Eric Anderson, Gavan Fitzsimons and Duncan Simester worked with a catalog selling bedding and home accessories. For five weeks they tracked 22,921 customers and what happened when an item they ordered was out of stock, then followed the same customers for 13 months Published. Three findings matter for a DTC brand.
PublishedAnderson, Fitzsimons and Simester, “Measuring and Mitigating the Costs of Stockouts,” Management Science, 2006.
The authors put the short-run cost of a stockout at $13.13 per item, against the $25.96 the catalog expected to earn from an item in stock, and found long-run profits fell by a further $9.56 Published. So in their data the future cost was about 42% of the total, and a report that counts only the lost sale misses it Derived ($9.56 of $22.69).
A stockout report that counts only lost units measures the cheaper half of the damage.
When a shopper meets a stockout, there are only a few things they can do. Daniel Corsten and Thomas Gruen, who studied out-of-stocks in grocery stores around the world, list five: buy the same brand in another size or variety, buy another brand, wait, buy the item somewhere else, or not buy at all Published. A supermarket keeps the sale in the first two cases. A DTC brand keeps it only in the first and the third, because “another brand” and “somewhere else” both mean a competitor.
That’s why the catalog finding on substitution matters. Customers there had alternatives in the same catalog, and “the level of substitution was negligible” Published. People who order a specific product mostly want that product. Don’t count on substitution happening by itself; the flows in chapter 4 exist to make it more likely.
One more finding changes where to look. The study saw “little evidence that the impact of a stockout varies across customers,” but found that “customers who purchase frequently from a firm are the most likely to experience a stockout” Published. The damage per customer was about the same. The exposure wasn’t. Frequent buyers simply meet more stockouts, because they place more orders.
A later study at an online grocer, by Xiaoqing Jing and Michael Lewis, found that prioritizing inventory by customers’ transaction histories and basket contents “can lead to large increases in contribution” Published. Decide what to protect by who’s buying, not only by how much sells.
One caution: the catalog sold bedding, not a consumable on a reorder cycle, and a customer who reorders the same serum every six weeks may be more forgiving, or less. The direction of the findings is solid. The size in your store is something to measure, and Appendix A shows how.
Rank products by the repeat customers who buy them, and a different top ten appears. That list is the one to protect.
Inventory teams rank products by units or revenue because that’s what the stock report shows. Retention needs a second column: of the orders containing this product, what share come from customers who have bought from you before?
Say a brand ships 10,000 orders a month and sells two products at about 2,500 units each. The starter kit is in most first orders: 85% of its orders come from new customers. The refill is the opposite: 80% of its orders come from customers on their second order or later. The stock report treats them as twins. A three-week stockout on each is not the same event.
If both are running low and you can only air-freight one, the answer depends on the second column.
For each product, count the orders containing it over the last 90 days, and the share placed by customers who had ordered before. That’s its repeat share. Sort by repeat orders (orders times repeat share) instead of by units, and read the top of the list. It’s usually refills, consumables, basics in a customer’s size and anything bought on subscription. The query is in Appendix A.
Then weight stock cover by it. A product with high repeat share and three weeks of cover is a bigger risk than a new-customer product with one week. The tool below turns one product’s numbers into a daily cost of being out, split into the part you’ll see this month and the part you won’t.
With the defaults, a three-week stockout hits 600 orders and costs about $19,080: $7,200 in contribution lost that month and $11,880 in future contribution from repeat customers. That’s about $909 a day, and 62% of it never appears in a lost-sales report Derived. Run the same numbers for a product with a 15% repeat share and the future part falls to under a third.
When something is out, capture the intent, explain why, offer a real alternative, and don’t pay people to wait.
You’ll run out of things. What decides the cost is what happens on the sold-out page and in the inbox of the customer who was about to reorder. Three flows handle most of it: back in stock, substitution, and the late-order notice.
Every sold-out product page needs a way to say “tell me when it’s back,” by email and, with their consent, by text. Then:
The catalog study in chapter 2 also tested what to tell customers whose item was out of stock. Each customer heard one of five scripts: a plain “out of stock,” an explanation that the supplier had a problem, “This item is out of stock because it is extremely popular,” $5 off shipping, or 10% off, the last two offered in return for waiting instead of canceling. The “extremely popular” script and the 10% discount kept about the same share of items (68% and 66%). But the popular script earned $20.51 of profit per out-of-stock item and the 10% discount $15.97, and the two discounts were the least profitable of the five Published.
The long-run result is the one to remember. In the two discount conditions, customers who had met stockouts went on to buy much less than customers who hadn’t: the no-stockout group ordered 24% more units in the following months in the $5 condition, and more than 50% more in the 10% condition Published. One reading is that a discount signals something went wrong that you’re paying to smooth over. Either way, the data gives no support for paying people to wait.
A short, honest reason to wait did as much as a discount, at a lower cost, without the damage later.
So the back-in-stock and delay messages in Appendix B explain and give a date. They don’t apologize with a coupon. If you want to recognize the inconvenience, do it for the customers who waited, after it ships, and not as a price.
Because customers rarely substitute on their own, make the alternative concrete: one or two products, named on the sold-out page and in the stockout email, chosen from what past buyers of the missing product also bought. A different size of the same thing, a sister scent, or a bundle containing it converts better than “you may also like.”
Dell ran a version of this at scale. In Stanford’s case on the company, a phone rep whose customer asked for a configuration could suggest a better component for a small extra payment, which arrived faster “because the component is already in stock” Published. The rep steered demand toward what was on hand, and the customer got something at least as good. That’s the model: the alternative should be equal or better, and it should be the customer’s choice.
Two rules from the FTC’s Mail, Internet, or Telephone Order Merchandise Rule matter here Published:
The FTC’s business guide to the rule dates from 2011, with a January 2025 update to penalty amounts. States and other countries add their own requirements; have counsel review your backorder, preorder and subscription-swap language. This isn’t legal advice.
Dell ran on days of stock while competitors held months. The idea that made it work transfers to any brand whose customers reorder.
The usual answer to stockouts is more safety stock. It works, and it’s expensive: cash sits on shelves, products age, and the overstock it creates becomes the markdown problem in the next chapter. The cheaper answer is to know more about what your customers will need.
In a 1998 interview with Joan Magretta in Harvard Business Review, Michael Dell described suppliers who saw the company’s needs day by day, so that information about real demand could stand in for stock on the shelf Reported. The payoff was speed. Stanford’s 2000 case on the company quotes his arithmetic: with 11 days of inventory against a competitor’s 80, a new Intel chip would reach Dell’s customers 69 days sooner Published.
The part most people skip is where the information came from. Dell’s customers told it. In the same interview he described forecasting as a sales skill: account managers walked each customer through their future PC needs, department by department, and asked which needs were certain and which were contingent Reported. He counted inventory velocity among the handful of measures the company watched most closely.
Dell built to order, and most DTC brands can’t. But the split between certain and contingent demand transfers directly.
Sort next quarter’s demand for each top product into three layers:
Only the last layer needs a large safety buffer. The contingent layer needs a modest one, and the certain layer barely any.
Say a brand sells a refill with 4,000 active subscribers on a 60-day cycle, losing 8% per cycle. That’s about 3,680 units scheduled for the next 60 days. Another 2,500 one-time buyers are due to reorder, and 35% usually do: 875 units. New customers usually take about 1,200. Forecast the total from last period’s sales with a blanket 40% buffer and you’d order about 8,060 units. Buffer each layer by its own uncertainty, 40% on new customers and 20% on the contingent layer, and you need about 6,410 units, a fifth less inventory. And the customers who’ll be most hurt by a stockout are now the ones best covered.
Your subscribers and regular reorderers have already told you most of next quarter’s demand. Buy for them first.
Dell asked customers which needs were certain. A DTC brand can do a modest version:
Overstock is the other side of a stockout. Clear it with a sitewide sale and you pay twice: once on the stock and again on every full-price customer who learns to wait.
When a forecast misses high, there’s cash on a shelf and a strong temptation to run a sale. The sale clears the stock. It also discounts everything else in those orders, and teaches your best customers something about your prices.
Say a brand normally sells $100,000 a week at full price and is sitting on $40,000 of excess inventory at retail value in one product line. A week of 25% off sitewide lifts revenue to $150,000. Suppose the overstock line sells $30,000 of that. The other $120,000 includes the orders the store would have taken anyway, which would have brought in $100,000 at full price and now bring in $75,000: $25,000 given away on orders that needed no discount. Some of the extra sales were pulled forward from the weeks after. And the customers who bought at full price last month have learned to wait for the next one. That last cost is the subject of The First Offer, which covers discount training and the sale calendar; read it before your next clearance.
A sitewide sale clears one product by discounting every product.
Excess stock is rarely excess to everyone. It’s usually excess to your forecast of new-customer demand. The people most likely to want more of it are the people who already buy it.
Before any product is retired or changed, pull the list of customers who rely on it. Its sales figure tells you what the product earns. The list tells you what its loss would cost.
A product’s revenue is the wrong number for deciding whether to retire it. What matters is who buys it and what else they’d stop buying if it went. For most products the answer is “nobody much.” For a few, it’s a group of customers for whom that product is the reason they’re a customer at all.
When the online grocer in Peter Boatwright and Joseph Nunes’s study cut its range, of the households loyal to a brand or size that was eliminated, “nearly half continued purchasing within the category” Published. Read the other way: about half stopped buying in that category from that grocer. And that’s at a store that still sold other brands in the category. At a single-brand DTC store, losing the product is often losing the brand.
Laurens Sloot, Dennis Fok and Peter Verhoef found the same at a Dutch retailer that removed a quarter of its detergents: the short-term losses were “caused mainly by fewer category purchases by former buyers of delisted detergent items” Published. The damage concentrates in the people who bought what was cut, which is exactly what an average across all customers hides.
Call a customer dependent on a product if any of these is true:
Customers who pass two or more tests are core dependents; they get the most personal version of every message in the next chapter. Everyone else who bought the product in the last year is a trier: they’re told, but they’re not the risk. The query is in Appendix A, and it should be a saved segment you can run for any product in minutes.
A product’s sales tell you what it earns. Its dependents tell you what its loss would cost.
When a dependent leaves, you lose their whole spend, not just the product’s share of it. So the revenue at risk from retiring a product can be far larger than the product’s own sales, and the decision should weigh that against what retiring it saves: storage, minimum orders, write-offs, the time it takes to manage. The tool puts those side by side, with and without the playbook from chapter 8.
With the defaults, 2,000 buyers include 500 dependents. Without a plan, 325 customers leave, taking $59,000 a year of revenue and $35,400 of contribution, so dropping the product loses $10,400 a year despite saving $25,000. With a playbook that prevents half those losses, the same decision gains $7,300 a year Derived. Dependents are a quarter of the buyers and 85% of the revenue at risk. The decision flips on how well you handle a few hundred people.
Notice, a last chance to stock up, and a replacement tested on the people who’ll lose the original. Ninety days, in that order.
Most products are retired by an operations decision and a product page that one day says “sold out” and never changes. The customers who depend on it find out by trying to reorder. The playbook replaces that surprise with a sequence of messages that gives them time, choice and something to switch to.
When customers learn a product they rely on is going away, many stock up whether you offer it or not. When Coca-Cola announced its formula change in 1985, by the company’s own account “some consumers panicked, filling their basements with cases of Coke,” and a man in San Antonio bought $1,000 worth from a local bottler Reported. Better that the stock-up happens with you, on a schedule you planned, than on a resale site at three times the price.
Tell the people who’ll lose it before you tell anyone else, and give them something tested to switch to.
Say 500 core dependents each use one unit every six weeks, and you offer each up to six months’ supply: four units. If 60% take the full offer, that’s 1,200 units. Add the triers at a lower rate, and hold a little back for customer service. Cap quantities per customer so resellers don’t take it, and price the stock-up at full price or with a modest multi-unit saving. People who depend on a product want it, not a deal; the scarcity does the work a discount would.
Stock-up revenue is pulled forward, so don’t read the spike as growth, and time the replacement’s first reorder reminder for when the stock-up runs out.
Sometimes there isn’t one. Say so plainly and give a larger stock-up allowance. Customers remember who was straight with them when something they relied on went away.
A new formula with the old name is a discontinuation the customer finds in their mouth. The most famous case shows why taste tests don’t settle it.
Brands reformulate for good reasons: a cheaper supplier, a cleaner ingredient list, a regulation, a better product. From the repeat customer’s side, the product they chose has been replaced without their consent. The label says the same thing and the product doesn’t.
Coca-Cola’s lead over its chief rival had been slipping for 15 years when it decided to change the formula for the first time in 99 years. Nearly 200,000 consumers took part in its taste tests, and the new formula was preferred. The change was announced on April 23, 1985. Calls to the company’s consumer line went from about 400 a day to 1,500 a day by June. A customer named Gay Mullins started a group called Old Cola Drinkers of America. On July 11, 79 days after the launch, the company brought the original back as Coca-Cola Classic Reported.
Company president Donald Keough said all the consumer research “could not measure or reveal the depth and abiding emotional attachment” people felt to the original Reported. To those who suspected the whole thing was a stunt, he said: “The truth is we’re not that dumb and we’re not that smart” Reported. The new formula was renamed Coke II in 1990 and discontinued in 2002 Reported.
Sources: The Coca-Cola Company’s history of New Coke; CBS News, 2015; History.com. Call volumes differ between accounts; these are the company’s own.
The taste tests asked which of two sips people preferred. They didn’t ask how people would feel if the one they drank every day were taken away, which is the question the launch actually posed. The research did pick up a warning. Later histories of the company report that a minority of testers were angry at the thought of a change and said they might stop drinking Coke Reported. A minority of testers is easy to dismiss. It was also, very likely, the loyal core: the people most attached to the product and most likely to buy it every week.
A taste test asks which one people prefer. A reformulation asks whether they’ll accept losing the one they have.
So test a change on current heavy buyers, and ask “instead of,” not “compared with.” Treat the angry minority as the signal: they are the dependents from chapter 7. And write down, before launch, the reorder rate among existing buyers that would make you reverse. Coca-Cola reversed in 79 days under public pressure; you can decide in calm.
For supplements, cosmetics and food, a formula change can also change what the label must say. Have counsel or a regulatory specialist review the new label and any “new” or “improved” claim.
The research on cutting a range points both ways, sometimes in the same data. Read together, it says what to cut and what to protect.
Every few years a brand decides its range has grown too long, and someone brings a slide saying that fewer choices sell more. Sometimes they do. The careful studies of real assortment cuts found gains, losses and something in between, and the differences tell you exactly where the risk sits.
Boatwright and Nunes studied an online grocer that cut its range sharply. Across the 42 categories they examined, sales rose an average of 11%; sales rose in more than two-thirds of the categories, and 75% of households increased their overall spending Published. Customers “uniformly welcomed the elimination of clutter brought on by the reduction in redundant items,” but reacted in different ways to losing sizes, and category sales still depended on how many items were left Published.
An earlier set of experiments by Susan Broniarczyk, Wayne Hoyer and Leigh McAlister found that shoppers’ sense of how much choice a store offered barely changed when low-selling items were removed, as long as their favorite item was still there and the category kept its shelf space Published.
Sharad Borle, Boatwright, Nunes and two colleagues then went back to data from the same grocer. They say plainly that Boatwright and Nunes used a subset of the same categories and households Published. This time they compared 840 households who got the reduced range, where cuts ran from 24% to 91% of items in a category, with 378 who kept the full range. The cut lengthened the expected time between deliveries by 25.0% and lowered the expected order size by 4.8%, and it reduced overall store sales. Most of the loss came from customers shopping less often, not from smaller orders. Frequently bought categories were hurt less Published.
Sloot, Fok and Verhoef studied a major Dutch retailer that removed a quarter of its detergents. They found “substantive short-term category sales losses but only a weak negative long-term category sales effect.” The losses came mainly from former buyers of the removed items. The smaller range also attracted new category buyers, and shoppers in the test stores searched faster Published.
| Study | What was cut | What happened |
|---|---|---|
| Broniarczyk and colleagues, 1998 | Low-selling items, in experiments | Perceived variety held, if favorites stayed |
| Boatwright and Nunes, 2001 | Redundant items at an online grocer | Category sales up 11% on average |
| Borle and colleagues, 2005 | 24% to 91% of items per category, same grocer | Customers ordered less often; store sales fell |
| Sloot, Fok and Verhoef, 2006 | 25% of detergents at a Dutch retailer | Short-term loss from buyers of cut items; new buyers partly offset it |
PublishedFull references in Appendix C.
The studies aren’t contradicting each other so much as counting different things. Sales within the categories you cut can rise when clutter goes, while the customers who lost their item quietly shop less across the whole store. A category report shows the first. Only a customer-level comparison shows the second. The consistent threads:
A cut can raise category sales and still lose customers. Only one of those shows up in the usual report.
The famous jam study is real, and so are two meta-analyses that complicate it. What they agree on points to new visitors, not regulars.
“Too many choices hurt sales” is one of the most repeated findings in marketing. It comes from one elegant field experiment. The evidence since then is more interesting and more useful than the slogan.
In 2000, Sheena Iyengar and Mark Lepper set up a tasting table at Draeger’s, an upscale supermarket in Menlo Park, California, showing either 24 jams or 6. The large display drew more people: 60% of passersby stopped, against 40%. But of those who stopped, 3% bought a jar at the large display and nearly 30% at the small one Published.
A decade later, Benjamin Scheibehenne, Rainer Greifeneder and Peter Todd pooled 63 conditions from 50 published and unpublished experiments with 5,036 participants. They found “a mean effect size of virtually zero but considerable variance between studies” Published. On average, more options didn’t reduce choosing or satisfaction, and several attempts to reproduce overload effects hadn’t found them.
Then Alexander Chernev, Ulf Böckenholt and Joseph Goodman analyzed 99 observations covering 7,202 participants and asked when overload happens rather than whether it does on average. They identified four conditions that reliably make it more likely: a complex set of options, a difficult decision task, a chooser who is unsure what they want, and a goal of minimizing effort. With those taken into account, they found the overall effect of assortment size on overload was significant, “a finding counter to the data reported by prior meta-analytic research” Published.
So the honest summary: choice overload is not a law, and the jam result is not a typical effect. It’s a real effect that shows up under specific conditions and vanishes under others.
Chernev’s conditions sort your customers for you.
Solve choice overload for new visitors with curation. Don’t solve it by removing a regular’s product.
How to test a product page change for new visitors, and whether your traffic can carry the test, is in The Honest Test.
Margin tells you what a product earns alone. Its role in repeat baskets tells you what it earns for the rest of the store.
The usual range review sorts products by margin or by sales and draws a line near the bottom. The products under the line go. Some of them deserve to. Others are the reason a group of customers keeps ordering, and their low margin is paid back many times in the rest of the basket.
Before a product is scored, name its role. Four numbers from Appendix A are enough: its repeat share, its reorder rate (the share of its buyers who buy it again), its dependents, and the contribution of the other items in its orders.
| Role | Looks like | Default decision |
|---|---|---|
| Anchor | High reorder rate, many dependents, big baskets around it | Keep, even at low margin; fix its cost |
| Entry | Mostly in first orders; its buyers go on to buy other things | Keep if its buyers come back; judge on what they buy next |
| Attachment | Rides along in baskets anchored by something else | Keep if it earns its own margin; bundle it if not |
| Duplicate | Its buyers also buy a near-identical sibling | Merge into the sibling, with notice to its few dependents |
| Dead weight | Few buyers, little repeat, nothing in its baskets | Cut, with a short version of the playbook |
The scorer adds a product’s basket role to its margin. It compares what the product earns on its own with what the store would lose without it: the other items in orders that wouldn’t happen, and the dependents who’d leave.
With the defaults, the product earns −$1,500 a year on its own margin after its carrying cost, and a margin-only review would cut it. But it sits in 1,500 orders a year whose other items bring $25 each; if a fifth of those orders wouldn’t happen without it, that’s $7,500. Its 150 dependents spend $60 a year on other products, and half would leave: $4,500. Counted properly, the store is $10,500 a year better off with it Derived.
The best-known range cut in consumer products came at Apple after Steve Jobs returned. Apple’s annual report for fiscal 1998 says the company simplified its line during the year, moving “from approximately 15 separate individual products to three main product families,” and discontinued its MessagePad and eMate lines. The company went from a net loss of $1,045 million in fiscal 1997 to net income of $309 million in fiscal 1998 Filed.
Don’t read too much into the second sentence: the turnaround had many causes, and a computer maker is not a replenishment brand. The lesson is in the first. Apple didn’t cut from the bottom of a margin ranking; it cut to a few products with distinct roles, so each customer could see which one was theirs. And the cut had casualties: the MessagePad, better known as the Newton, had devoted users. Every simplification creates dependents somewhere. The question is whether you know who they are.
Apple Computer, Inc., Form 10-K for the fiscal year ended September 25, 1998, filed with the SEC on December 23, 1998.
Nine numbers, on one page, reviewed by operations and retention together.
The scorecard exists to put the stock report and the retention report in the same meeting. Each number below connects a catalog decision to what repeat customers experienced. None of them has a published benchmark worth quoting; the target is your own trend, and a comparison group wherever a change was made.
| Number | How to count it | How often |
|---|---|---|
| 1. Repeat-weighted in-stock rate | Days each product was in stock, weighted by its repeat orders per day, over all products | Weekly |
| 2. Cost per day at risk | For the top ten repeat products under four weeks of cover, the daily cost from the tool in chapter 3 | Weekly |
| 3. Back-in-stock conversion | Signups who order the product within 14 days of the restock message | Each restock |
| 4. Alternative take rate | Customers shown a named alternative during a stockout who bought it | Each stockout |
| 5. Late notices on time | Delayed orders whose customer was notified, with a cancel option, before the promised date | Monthly; target all of them |
| 6. Demand you already know | Share of next quarter’s forecast for top products in the certain and contingent layers (chapter 5) | Each buy plan |
| 7. Clearance share | Revenue from overstock sold at a discount, as a share of all revenue, and how much of it was sitewide | Monthly |
| 8. Dependents still ordering | After each retirement or reformulation: dependents who ordered in the next 90 days, against their own rate before the announcement | Days 30, 60, 90 |
| 9. Anchors covered | Products labelled anchor in the last range review with at least your target weeks of cover | Monthly |
Put the stock report and the retention report in the same meeting. That’s most of the fix.
The lists, then the numbers, then the flows, then the playbooks. Four weeks, in that order.
Whether you’re fixing this after a painful stockout or before a planned retirement, the order of work is the same. Find out what’s changing and who it touches. Put numbers on it. Fix the customer-facing moments. Then write down how the next change will be handled, so it doesn’t depend on who remembers.
At day thirty you won’t know yet whether the playbook kept the dependents; that takes 90 days after the next change. What you’ll have is a catalog whose changes are seen in advance, costed in customers, and handled in the inbox before they’re found on the product page.
See the change coming, count the customers, tell them first.
Six things the person who owns catalog changes needs on the first day.
Whoever owns this, an operations lead, a retention lead, or you on the Monday after a stockout that hurt, needs six things on day one.
The books and papers this guide leans on, and what to take from each.
Full references for these and the rest of the research are in Appendix C.
Andrew Lauchner runs Growth Legend, embedding inside consumer brands to own lifecycle, email and SMS, and revenue operations. He is the author of The Second Order, on turning first-time buyers into second-time buyers, and The Whole Machine, on the fundamentals of DTC growth, along with a series of field guides for DTC operators at andrewlauchner.com.
As Senior Director of Growth and Retention Marketing at Gallery Furniture, he rebuilt the customer journey and the sales playbooks together. He has worked on growth and retention at Binance and 3Commas, and has been Head of Growth and Retention at Greatness Wins and at Nexus Agriscience.
“Andrew led retention, lifecycle, and email/SMS, but what separates him from most in this space is how deeply he understands the role retention plays in the overall growth engine.”
Akram Khan, Head of Marketing at Gallery Furniture, senior to Andrew but didn’t manage Andrew directly
Andrew answers every note from operators working on this, including those looking for someone to own it. Write to andrew@growthlegend.com or message him on LinkedIn.
The formulas behind the three tools, and five queries that turn order lines into repeat share, dependents and basket roles.
| For | Formula | Notes |
|---|---|---|
| Stockout cost | hit = W × D / 7now = hit × L × cfuture = hit × r × V × h | W: orders per week with the product. D: days out. L: share lost outright. c: contribution per order. r: repeat share. V: a repeat customer’s 12-month contribution. h: drop in future buying. Cost per day is (now + future) / D. |
| Revenue at risk | rev = N·d·ld·Rd + N(1−d)·lo·Ronet = S − rev × m × (1 − p) | N: buyers. d: dependent share. l: leave rates. R: yearly revenue per customer. m: margin. S: yearly savings. p: share of losses the playbook prevents (0 for no plan). |
| Basket-adjusted value | O·c − F + O·a·b + n·v·l | O: orders with the product. c: its contribution per order. F: carrying cost. a: other items’ contribution per order. b: share of those orders lost without it. n, v, l: dependents, their other contribution, leave rate. |
| Repeat-weighted in-stock rate | Σ (days in stocki × qi) / Σ (daysi × qi) | qi: product i’s repeat orders per day in the prior 90 days. |
-- orders containing each product in the last 90 days, and the share
-- placed by customers who had ordered before
WITH ranked AS (
SELECT o.order_id, o.customer_id, o.created_at,
ROW_NUMBER() OVER (PARTITION BY o.customer_id ORDER BY o.created_at) AS nth
FROM orders o
WHERE o.cancelled_at IS NULL
)
SELECT ol.product_id,
COUNT(DISTINCT r.order_id) AS orders,
COUNT(DISTINCT r.order_id) FILTER (WHERE r.nth > 1) AS repeat_orders,
ROUND(COUNT(DISTINCT r.order_id) FILTER (WHERE r.nth > 1)::numeric
/ NULLIF(COUNT(DISTINCT r.order_id), 0), 3) AS repeat_share
FROM ranked r
JOIN order_lines ol ON ol.order_id = r.order_id
WHERE r.created_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY ol.product_id
ORDER BY repeat_orders DESC;
Sort by repeat orders, not repeat share: a product with a 95% repeat share and ten orders a quarter isn’t where the exposure is. Joined to daily stock snapshots, the same numbers give the repeat-weighted in-stock rate in the table above.
-- customers who pass any of the three tests for :product_id
WITH spend AS (
SELECT o.customer_id,
SUM(ol.price * ol.quantity) AS total,
SUM(ol.price * ol.quantity) FILTER (WHERE ol.product_id = :product_id) AS this,
COUNT(DISTINCT o.order_id) FILTER (WHERE ol.product_id = :product_id) AS orders_with
FROM orders o
JOIN order_lines ol ON ol.order_id = o.order_id
WHERE o.cancelled_at IS NULL
AND o.created_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY o.customer_id
),
subs AS (
SELECT DISTINCT customer_id FROM subscriptions
WHERE product_id = :product_id AND status = 'active'
)
SELECT s.customer_id,
(s.orders_with >= 2) AS reorders_it,
(s.this >= 0.5 * s.total) AS most_of_spend,
(sb.customer_id IS NOT NULL) AS subscribes,
((s.orders_with >= 2)::int + (s.this >= 0.5 * s.total)::int
+ (sb.customer_id IS NOT NULL)::int) AS tests_passed
FROM spend s
LEFT JOIN subs sb ON sb.customer_id = s.customer_id
WHERE s.this > 0
ORDER BY tests_passed DESC, s.this DESC;
Two or more tests passed is a core dependent; one is a dependent; zero is a trier. Export it as a segment, with consent status, before any message goes out.
-- exposed: bought the stocked-out product in the 180 days before it ran out
-- comparison: bought a similar product that stayed in stock, same window,
-- and not the stocked-out one
-- :out_date is the first day at zero stock
SELECT grp,
COUNT(*) AS customers,
AVG((next_order IS NOT NULL)::int) AS ordered_within_90d
FROM (
SELECT c.customer_id, c.grp,
(SELECT MIN(o.created_at) FROM orders o
WHERE o.customer_id = c.customer_id
AND o.cancelled_at IS NULL
AND o.created_at >= :out_date
AND o.created_at < :out_date + INTERVAL '90 days') AS next_order
FROM stockout_groups c -- customer_id, grp ('exposed' or 'comparison')
) t
GROUP BY grp;
Match the groups roughly on how recently and how often they’d ordered. The gap between the two rates replaces the 22% default in the stockout tool. After a retirement or reformulation, use the announcement date and the dependents as the exposed group.
-- for each product: how often its buyers buy it again, how often it's in a
-- first order, and the contribution of the other items in its orders
WITH ranked AS (
SELECT order_id, customer_id,
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at) AS nth
FROM orders
WHERE cancelled_at IS NULL AND created_at >= CURRENT_DATE - INTERVAL '12 months'
),
lines AS (
SELECT r.order_id, r.customer_id, r.nth, ol.product_id, ol.contribution
FROM ranked r JOIN order_lines ol ON ol.order_id = r.order_id
)
SELECT p.product_id,
COUNT(DISTINCT p.customer_id) AS buyers,
ROUND(COUNT(DISTINCT p.customer_id) FILTER (WHERE pc.n_orders >= 2)::numeric
/ COUNT(DISTINCT p.customer_id), 3) AS reorder_rate,
ROUND(AVG((p.nth = 1)::int)::numeric, 3) AS first_order_share,
ROUND(AVG(other.contrib)::numeric, 2) AS other_items_contribution
FROM lines p
JOIN (SELECT customer_id, product_id, COUNT(DISTINCT order_id) AS n_orders
FROM lines GROUP BY customer_id, product_id) pc
ON pc.customer_id = p.customer_id AND pc.product_id = p.product_id
LEFT JOIN LATERAL (
SELECT COALESCE(SUM(l2.contribution), 0) AS contrib
FROM lines l2 WHERE l2.order_id = p.order_id AND l2.product_id <> p.product_id
) other ON TRUE
GROUP BY p.product_id
ORDER BY buyers DESC;
The syntax is Postgres. contribution is price less discounts, cost of goods and a share of fulfillment; if you don’t have it, use revenue times your average margin. The roles are in chapter 12.
Messages for stockouts, retirements and reformulations, and two internal forms. Adapt the voice; keep the structure.
Marketing messages go only to people who’ve consented: email with a working unsubscribe and your postal address, texts only to people who opted in, with a working opt-out. Notices about a paid order are transactional; keep promotions out of them. Have counsel review your versions.
SUBJECT [Product] Is Back PREVIEW you asked us to tell you first. here it is. [First name], [product] is back in stock. You signed up to hear when it returned, so you're hearing before we tell anyone else. We restocked [quantity or "a limited batch"]; the last run sold out in [time], so if you're due, now's the time. [Reorder button] Thanks for waiting. [Name], [Brand] [Unsubscribe link] · [Postal address]
[Brand]: [Product] is back. You asked us to text you first, so here's your link before we tell anyone else: [link] Reply STOP to opt out.
SUBJECT A Heads-Up About Your [Product] PREVIEW it's out until around [date]. here are your options. [First name], you usually reorder [product] about now, and we've run out. The next batch arrives around [date]. It's out because [honest one-line reason: demand was higher than we planned / our supplier is late]. Three options: 1. Get a reminder the day it's back: [link] 2. Try [named alternative], which [one line on why it's close]: [link] 3. [If you have stock of a larger size or bundle] Get it in the [size/bundle] we still have: [link] [Name], [Brand] [Unsubscribe link] · [Postal address]
SUBJECT Your Order [Number] Will Ship Later Than We Said PREVIEW new date inside, and a one-click cancel if you'd rather. [First name], we can't ship [product] by [original date] as promised. Our new estimate is [revised date], because [reason]. If that works, you don't need to do anything. If you'd rather cancel, click here for a full refund: [link] We're sorry for the wait. [Name], [Brand]
Send before the original date passes. The FTC’s Mail, Internet, or Telephone Order Merchandise Rule sets when you need the customer’s consent and when silence is enough; have counsel map your cases to it.
SUBJECT We're Retiring [Product], and You're the First to Know PREVIEW the last day to order, a way to stock up, and what we'd try next. [First name], you've ordered [product] [n] times, so I wanted you to hear this from me before we tell anyone else. We're retiring [product] on [date]. The honest reason: [reason]. What that means for you: - You can order it until [date], up to [cap] units: [link] - We think [replacement] is the closest match, because [reason]. We're putting a free sample in your next order so you can try it while you still have [product]. - If you subscribe, we'll ask before changing anything. If you have questions, reply to this email. It comes to me. [Founder name], [Brand] [Unsubscribe link] · [Postal address]
[Brand]: 3 days left to order [product] before we retire it. Stock up (up to [cap]) or try [replacement]: [link] Reply STOP to opt out.
SUBJECT We're Changing [Product]. Here's Exactly What's Different PREVIEW what changes, what doesn't, and a sample before it's yours. [First name], starting with orders after [date], [product] will [specific change: a new supplier for X / a lighter scent / a new fit through the waist]. What stays the same: [the things they chose it for]. Why we changed it: [honest reason]. What you'll notice: [texture / smell / taste / fit, plainly]. Your next order includes a sample of the new version. If it isn't right for you, reply and tell us. To stock up on the current version while it lasts: [link], up to [cap] units. [Name], [Brand] [Unsubscribe link] · [Postal address]
SENT 7 days after the free sample arrives, to the test group only
QUESTION "If [original] were no longer available, would you reorder
[replacement] instead?"
Yes / Maybe / No
FOLLOW-UP "What would it need to be closer to what you use now?"
READ Share of Yes among core dependents. Under half: find a
better replacement before announcing.
PRODUCT name, SKU(s):
CHANGE stockout / retirement / reformulation / cut / merge:
DATE last day of the old version:
WHY one line:
BUYERS, 12 MONTHS total: dependents: core:
REVENUE AT RISK from the tool in chapter 7, no plan / with plan:
REPLACEMENT product, and test result (share of Yes):
LAST BUY units, from dependents' usage:
MESSAGES dates for notice, sample, reminders, subscriptions:
ROLLBACK LINE the dependents' 90-day ordering rate that would
make us reverse or extend:
OWNERS operations: retention:
READ ON day 30 / 60 / 90 dates:
Every external source, by chapter. Web sources were read in September 2026.