Honest inventory: stock states without the fake-scarcity slime
Every product page is quietly telling one of six stories: we have it, we almost don't, we ran out but more is coming, we're making a batch, it's gone, or we'll never make it again. Most stores tell these stories badly — with a red "Only 2 left!" stamped on everything regardless of reality, an "out of stock" that shrugs and walks away, or a preorder that takes your money with the commitment of a weather forecast.
Honest inventory design is not a moral garnish. It's conversion infrastructure. Shoppers have been trained by a decade of fake scarcity to discount urgency signals entirely; the stores that earn trust back are the ones whose stock messages are accurate, specific, and useful even when the answer is "no". Here's the full taxonomy we design in e-commerce engagements, state by state.
State one: in stock — say the useful thing, not the obvious thing
The default state is the most neglected. "In stock" is trivia; what the shopper needs is the promise attached to it: order by 2pm, ships today, arrives Thursday–Friday. That's not inventory data, it's inventory data plus fulfilment data plus carrier cut-offs — which is exactly why most PDPs don't show it, and exactly why it converts when they do.
Design rule: the shipping promise lives in the buy box, in body text, next to the price — not in a footer link or a shipping policy page. When we rebuilt the Tallow & Co. providore store, the single most-screenshotted element in usability testing was the line "Order by noon, delivered tomorrow across the metro" — customers read it aloud as if the website had made them a promise. It had. A stock state that includes a date is a promise; a stock state without one is a rumour.
State two: low stock — real numbers, real thresholds
Low-stock messaging works exactly when it's true and verifiable-feeling. The design system:
- Use real counts below a real threshold. We typically set the threshold at the last few sellable units — vary it by velocity, but once set, never override it for effect. "3 left" means three are in the warehouse, and everyone in the company knows it does.
- Show the count, not the vibe. "Low stock" in orange is decoration. "4 left — more arriving 18 October" is information. The second version is also better business: it converts the urgent buyer and reassures the hesitant one that missing out isn't permanent.
- Never flash it. Blinking urgency copy is the tell of a lying system. Typography and colour can carry urgency without carnival motion — the PDP design piece covers where emphasis belongs on the page.
The fake-scarcity tax is compounding: every shopper who sees "Only 1 left!" on an item that's still selling next month files your store under "cries wolf". You don't get that trust back with a redesign; you get it back with a year of accurate counts.
State three: backorder — a date, a discount, or nothing
Backorder is the state most stores hide from, and the one with the most loyalty upside. A customer willing to wait is a customer telling you they want this, not a substitute. Honour that:
- The date, or you don't offer it. "Ships around 22 October" with a stated confidence, updated if reality moves. A backorder with no date is a loan the customer didn't agree to make. If your inventory system can't produce a believable date, fix that before you ship the UI — we wire backorder states directly from the inventory feed in every build, because a hand-maintained date is a wrong date by next month.
- Consider a small wait incentive. Not a bribe — a thank-you. 5% off backordered items reframes waiting as a choice the customer made shrewdly. It also pre-commits them: a discounted backorder cancels far less than a full-price one, because the deal feels perishable.
- Keep the buy button the buy button. Don't demote backordered items to a grey "notify me". The state changes the promise, not the availability of commitment. Label it plainly: "Backorder — ships 22 October" where "Add to cart" would be.
State four: preorder — a deposit's honesty rules
Preorders fund production and validate demand, and they deserve stricter design than anything else in this taxonomy, because you're holding money against a promise:
- The date range, not the date. "Ships March 2026" — and if it slips, email before they ask. A preorder that communicates slips proactively converts anxiety into patience; one that goes quiet converts it into chargebacks and forum threads.
- What's refundable, on the button. "Fully refundable until it ships" next to the CTA, every time. The customers who'd abuse a refund policy are outnumbered fifty-to-one by customers who won't commit without one.
- Progress is content. A preorder cohort that gets a "your batch is in production" update is a preorder cohort that tells its friends. Treat the wait as part of the product story — the same thinking behind designing the whole PDP as a persuasion arc.
State five: out of stock — the most-relationship page on your store
Out of stock is not an absence of UX. It's a fork: capture intent, or offer a route onward. Both, usually.
- Notify-me that actually notifies. One field, no account required, a stated promise ("one email, when it's back — nothing else"). Then keep the promise. Notify lists are the highest-intent audience your store has; the restock email they trigger routinely outperforms campaigns ten times their size. Treat the list with the respect described in our lifecycle email architecture — it's a flow, not a blast.
- Offer the honest alternative. "Roasted to order — try the Yirgacheffe, closest to this profile" keeps the session alive with a recommendation that admits it's second-best. Forced-substitution listings ("customers also bought") that hide the out-of-stock reality erode the trust this whole article is about.
- Dead products get eulogies, not ghosts. Discontinued items should say so, link to the successor, and stay indexed — they keep their search equity and convert their traffic to the replacement. Deleting the page throws away the merchandising value of a page that was working.
The trust ledger, in numbers
Instrument inventory messaging like you instrument checkout — the checkout friction audit approach applies: small frictions, measured, removed. The signals we track on every build:
- Restock-notification signup rate on out-of-stock PDPs — are you capturing the intent or venting it?
- Backorder cancellation rate — high rates mean your dates are wrong or your communication is silent.
- PDP conversion by stock state — the delta between in-stock and backorder conversion prices your messaging honesty. Stores with disciplined messaging routinely see backorder conversion at 60–80% of in-stock conversion; stores with vague backorder copy see 20%.
- "When will this be back?" support tickets — every one is a UI that failed. Trend them to zero.
There's a brand effect no dashboard fully captures. In the GLADE skincare build, the brief was radical transparency — ingredients, sourcing, pricing — and the inventory states were designed to the same standard; the out-of-stock page read "This batch is sold out. The next distillation ships 3 November — leave your email and it's yours first." That sentence does inventory, merchandising and brand voice in one breath. Honest stock states aren't the opposite of selling. They're what selling sounds like when it doesn't need to lie.
Key takeaways
- In-stock messaging should carry a shipping promise, not a checkbox. The useful state is "order by 2pm, arrives Friday".
- Low-stock signals only work when they're true: real counts, real thresholds, never flashing.
- Backorders need a date and ideally a small wait incentive. No date, no backorder.
- Preorders demand the strictest honesty: date ranges, refund terms on the button, proactive slip communication.
- Out-of-stock pages are intent-capture instruments — notify-me without an account, honest alternatives, eulogies for dead SKUs.
- Instrument conversion by stock state. Vague backorder copy costs you most of the demand the product still has.
FAQ
Won't showing exact counts like "2 left" hurt us when stock looks thin? Only if your inventory is chronically thin — which is a buying problem wearing a UX costume. In practice, accurate counts with a restock date convert the urgent and keep the hesitant; the stores that lose are the ones whose "hurry!" copy has been lying for years.
Should out-of-stock products drop out of the catalogue grid? No — grey them honestly, keep them findable, and let the notify-me do its work. Removing them buries demand data and breaks search equity. The exception is permanently discontinued items with no successor, which can retire after a courteous interval.
How do we handle stock accuracy across channels? This is the unglamorous truth: honest inventory UX is only as good as the inventory feed. If you're selling on three channels off one warehouse with hourly syncs, buffer your counts (show "low stock" one or two units early) rather than overselling. Overselling isn't a messaging failure you can copywrite your way out of; it's an operations failure that messaging can only apologise for.
Does any of this apply to made-to-order? Made-to-order is a stock state too — arguably the best one. "Made when you order, ships in 10 days" is honest scarcity built into the model itself, and when it's messaged with pride it out-converts fake urgency comfortably. Say the wait like it's a feature, because it is.
Bundles and kits: merchandising beyond the single SKU
Bundles and kits done properly: curated vs build-your-own, pricing psychology, inventory implications, PDP architecture, and subscription bundle design.
Bundles and kits: designing the build-your-own moment
The bundle builder as interface design: shelf metaphors, fill visuals, flat pricing, coupled inventory — and when a kit makes the product disappear.
Pre-orders are a trust exercise, not a checkout variant
Pre-orders and crowdfund launches fail on expectation design, not payment plumbing. Charge timing, delay scripts and the trust ledger that carries a launch.