Same Revenue, Fewer SKUs: The Account That Is Already Half Gone

August 13, 2026

Same Revenue, Fewer SKUs: The Account That Is Already Half Gone

Pull up an account like Corbett Machine Works. Steady customer for years. Orders twice a month, and the invoice total sits within a few points of where it was in early 2025. On the revenue-by-account report it is boring, and boring reads as safe. Nobody has flagged it. Why would they? The number has not moved.

Now open two of its purchase orders side by side, one from eighteen months ago and one from last month. The old PO has fourteen lines: contract fasteners at the bottom, and above them carbide end mills, flap discs, coolant, gloves, the odds and ends of a running shop. The new PO has five lines. Every one of them is a contract item, priced at the number you fought hardest to win.

Here is the part that should worry you. The dollar total held because volume on the contract lines crept up while everything else disappeared. Corbett did not leave. Corbett consolidated, with someone else, and left you the lines that carry the thinnest margin in the relationship. Put the two snapshots side by side.

ONE ACCOUNT, TWO SNAPSHOTS

PO, January 2025: 14 lines. Contract fasteners, plus nine other categories: cutting tools, abrasives, coolant, PPE, shop supplies. Invoice total $8,340. Blended margin 27%.

A full basket. The contract lines anchor it, and the specialty lines around them are where the margin lives.

PO, June 2026: 5 lines. Contract fasteners only. Invoice total $8,610. Blended margin 13%.

Same customer. Same rep. The dollar column even ticked up. But nine categories walked out of this account, and a report built on revenue never blinked.

Half the margin is gone. The total is not.

The account did not shrink. Your share of it did.

The reflex is to blame the rep for not noticing, which is unfair, because the report the rep is handed is built to hide this. Revenue by account is a summary. And a summary is exactly where a mix change goes to die. So the fix is not sharper eyes on the same number. It is a different number.

Why Flat Revenue Can Hide a Defection

Start with why the specialty lines leave first. McKinsey's 2026 Global B2B Pulse, a December 2025 survey of roughly 3,700 B2B decision makers, found buyers more willing than ever to switch suppliers, and the leading triggers were not price: inconsistent information and a lack of knowledgeable support topped the list. The odds-and-ends lines are exactly where those failures show up. A contract fastener reorders itself. But a one-off carbide order needs a fast, correct answer, and whoever answers fastest keeps the line.

Now notice which lines you kept. Multi-sourcing is the norm in this business; your customer was always buying some categories elsewhere. But when a consolidation push starts, the lines that stay with you are the ones locked to a contract price, because moving them saves the buyer nothing. You keep the business that is hardest to make money on and lose the business that paid for the relationship. That is not loyalty. You have stopped being their supplier and started being their price floor.

The window here is wider than most defections. The customer is still ordering twice a month, and nothing has been decided yet. But nobody reviews accounts by hand for this, so nobody acts. Every quarter the basket runs thinner, the relationship narrows to a single price on a contract renewal, and price-only relationships lose to whoever shows up with a lower one.

This Week, Try This: The Basket Audit

The raw material is one export: order lines, not invoice totals. Customer, order date, SKU, product category or description, quantity, unit price, and cost if your ERP will give it to you. Twenty-four months is ideal, twelve is the minimum. Every mainstream ERP dumps this to Excel or CSV. Getting it in front of an AI takes one of two routes.

Method one, the gut check. Pick the one account you are already uneasy about. Export its order lines, attach the file to your AI assistant with the prompt below, and read the answer. Ten minutes, one account. You will know whether the unease was justified.

Method two, the full sweep. Export order lines for your top 50 accounts by revenue and run the same prompt against the whole file. If the file is too large to attach in one piece, split it by year and run it in batches. No connectors, no IT ticket. The evidence lives in the ERP, and the export is the entire setup.

You are analyzing order-line data for a manufacturer or
distributor. The file contains order lines with customer,
order date, SKU, category or description, quantity, unit
price, and possibly unit cost.

FOR EACH CUSTOMER, BY QUARTER, COMPUTE:
- Revenue
- Number of orders
- Distinct SKUs ordered
- Average lines per order
- Product categories present

FLAG EVERY CUSTOMER WHERE, COMPARING THE LAST TWO
QUARTERS TO THE SAME QUARTERS ONE YEAR EARLIER:
- Revenue is flat or up (down no more than 10 percent),
AND
- Distinct SKUs are down 25 percent or more, OR one or
more product categories disappeared entirely.

FOR EVERY FLAGGED CUSTOMER, LIST:
- The categories and top SKUs that disappeared, with the
date each was last ordered
- What remains, and whether the remaining lines are
concentrated in contract or commodity items
- Margin at risk: if cost data exists, show blended
margin then versus now. If not, write "margin unknown"
and rank by share of SKUs lost instead.

THEN, FOR THE TOP FIVE BY RISK, DRAFT REP TALKING POINTS:
- Name the specific categories that left, and when
- One opening question about how they buy those items
today
- One concrete reason ordering them from us is easy

RULES:
- Compare same quarter to same quarter. A seasonal item
missing in its off season is not a loss.
- Skip customers with less than 12 months of history.
- Never invent margin numbers without cost data.
- Do not suggest a discount. Price is not the opener.

What comes back is a ranked list of accounts where the basket is thinning under a flat dollar total, with the disappeared categories named and dated, and talking points a rep can use on a call this week. Nothing gets said to a customer without a person reviewing it first. The first run takes under an hour, and most of that is waiting on the ERP export.

And notice the last rule. The lines did not leave over price, so price will not bring them back. The opener is a question, not a discount. Ask how they buy those items today, and listen for the answer that stings: because it is easier.

An Honest Take

I think revenue-by-account is the most destructive report in distribution. It is the first thing every Monday meeting looks at and the last number to move when an account starts leaving. Lines per order moves first. Category coverage moves first. Revenue holds its shape right up to the contract renewal, and by then the only conversation left is price, against a competitor who already owns everything else in the relationship.

So if I could change one habit, I would swap the Monday revenue ranking for a basket-trend ranking once a quarter. But I would settle for something smaller: refusing to call an account healthy because its total is flat. Flat is not a diagnosis. Flat is where this exact problem hides.

The Bottom Line

An account that leaves blatantly gets a save call, an executive visit, maybe a concession. An account that shrinks unobtrusively gets its contract renewed and a line in the quarterly review about stable revenue. The second one costs more. And nobody even gets blamed for it, because no report ever showed it happening.

The fix is one export, one prompt, and under an hour. Run the basket audit before the next contract renewal, not after. Somewhere in your top 50 there is an account that is already mostly gone, and its invoice total is telling you everything is fine.

👇 👇 👇

A shrinking basket usually starts with friction.

Slow confirmations. Manual order entry. Missed details. The kind of small delays that make customers start sending “just a few items” somewhere else.

Y Meadows automates order entry from inbox pickup to ERP posting: matching customers and SKUs, applying your pricing and credit rules, and getting the order into your system without the manual scramble.

So when a customer sends the next PO, it moves fast and accurately.

Want to see how it works on orders like yours?

👉 Schedule a demo