Problems & solutions · Inventory Management

Omnichannel Inventory Visibility Problems: The 7 That Oversell and Hide Stock, and How to Avoid Them

Omnichannel Inventory Visibility Software workflow illustration showing common problems and fixes.
The short answer

The most expensive failure in this category is discovering in month three that your point of sale (POS) estate cannot publish sale events in near real time. Everything else in an availability project depends on that feed, and if the older stores can only produce an end of day file, the ledger you built to be event driven is running on a batch for a third of your network. Retailers who find this late either stall the project or ship a system that is honest about the distribution centre and fictional about stores, which is the exact problem they set out to fix.

Why does the point of sale feed turn out to be the whole project?

Availability is a calculation over events, and the highest volume source of events in a retail estate is the till. If stores sell and the ledger does not hear about it within seconds, store availability is a guess, and a guess is what produces both overselling and hidden stock.

What makes this specific to retail is that point of sale estates are almost never uniform. Stores acquired in different phases run different versions, franchise partners and concessions run their own systems entirely, and third party logistics providers and dropship vendors report on their own cadence. The flagship can publish in real time and a 2011 store cannot, and both are in the same availability query.

The failure pattern is a project scoped on the assumption that the estate behaves like the flagship. Design proceeds, the event ledger is built correctly, and then integration reaches the older stores and discovers an end of day export. At that point the choice is to delay, to accept batch for part of the estate, or to fund a till upgrade nobody budgeted.

The fix is to answer this in week one, before design. Ask, per store format and per system version, what event types can be published and at what latency. Then design for a mixed estate deliberately: real time where it exists, the best available feed elsewhere, and a per node freshness attribute the availability calculation actually uses, so a node with a stale feed carries a larger buffer automatically rather than lying with confidence.

What goes wrong when you seed the ledger from existing stock records?

An append only event ledger has to start somewhere, and the starting balance comes from your merchandising system. That balance is wrong, in the ordinary way that all retail stock balances are wrong, and the ledger will faithfully carry the error forward for as long as nobody counts.

The specific trap is that a ledger looks authoritative. Once availability is derived from events with timestamps and correlation identifiers, people believe it, including the people who used to treat the number with healthy suspicion. So a store that was quietly short forty units becomes a store that is confidently short forty units, and the short picks that follow damage trust in the new system rather than in the old count.

The second issue is unposted movement. At the moment you seed, there are receipts not yet posted, transfers in flight and returns in the back room. Seeding without a defined cutover point double counts some of it and loses the rest.

The pattern that works is to seed per node against a recent count rather than against the whole estate at once, define an explicit cutover timestamp per node with a freeze on postings across it, and run the new ledger in parallel with the existing feed before anything switches over. Then reconcile continuously from day one, with an exception queue, because divergence is inevitable and you want it visible rather than discovered at stock take.

Why do the merchandising, warehouse and returns integrations break after launch?

Each publisher has its own idea of what a transaction is, and the breaks come from that rather than from connectivity.

The merchandising system breaks around adjustments. Cycle counts, write offs and reclassifications arrive as balance corrections rather than as movements, and a ledger that treats a correction as a movement double applies it. Corrections need their own event type with the prior value recorded.

The warehouse system breaks around timing. A receipt is posted when the goods are booked in, which can be hours after they physically arrived and were already picked from. Available to promise computed off posting time understates during exactly the window when a promotion is live.

Returns break around condition and location. A returned unit is not sellable until it is inspected and put away, and returns systems frequently publish the return event before the sellable event exists, so the ledger adds a unit that no picker can find.

The fourth break is silent lag. Any of these feeds can slow without failing, and a slow feed produces overselling with no error anywhere. The fix in every case is to monitor end to end event lag per source as a service level with alerting, and to require named event types per system in the statement of work rather than a general claim about integration.

What happens when reservation expiry is not reliable at volume?

A reservation that never expires is invisible stock loss. The unit is neither sold nor available, no report shows it, and nobody notices for weeks. On a large catalogue leaked reservations accumulate quietly until a category looks short and a buyer orders replenishment against demand that was never real.

This fails specifically at volume and specifically at peak, which is the worst combination. Expiry implemented as a scheduled sweep is fine at ordinary load and falls behind during a drop, when reservation creation rates multiply and the sweep cannot keep pace. The stock disappears at the exact moment you needed it visible.

The second failure is a single reservation class. Basket holds, payment holds, collect orders, subscription replenishment and pre orders all have different lifetimes and different commercial meanings, and treating them as one object means the shortest sensible lifetime applies to all of them or the longest does. Neither is right.

The fix is reservations as first class ledger events with an explicit time to live per class, expiry that is enforced at read time as well as by a sweep so a stale reservation cannot suppress availability even if the sweep is behind, and a monitored count of active reservations by class and age. That count is the early warning. When the ninety minute bucket starts growing during a peak, you know before your merchandisers do.

Should you build custom or configure what you already own?

If you are replacing your order management system anyway, run a compact node network and have no violent peaks, buy. Fluent Commerce is built around exactly this event driven model and is a good answer at that shape, and you will be live sooner than a build. Kibo is reasonable for mid market. Manhattan Active Omni carries genuine depth and IBM Sterling Order Management has been running enterprise inventory for a very long time. There is no honour in building infrastructure whose rules you were never going to change.

Before commissioning anything, check whether your problem is the platform or the inputs. If your stores cannot publish sales in near real time and your counts are stale, no availability engine on the market will produce a number you can trust, and buying one is an expensive way to learn that.

Build when two or more are true. Your availability rules are genuinely commercial and change often, so a configuration ticket per change is a permanent tax on merchandising. You already run a distributed order management system you intend to keep and only need the inventory layer, which suite vendors do not sell cleanly. Your read volume or peak shape makes per call pricing on a hosted availability service a serious line item. Your node network includes concessions, franchise partners, third party logistics or dropship stock that vendor models handle awkwardly. Or you have raised buffers, know it costs more than it saves and cannot prove it.

How do hidden costs get into the quote?

The first is the number of publishing systems, which is almost always higher than the initial count. A merchandising system, three point of sale versions, a warehouse system, a returns platform and a dropship feed is six integrations, not two, and each has its own event semantics.

The second is peak design. Building for steady load and building for a drop that multiplies traffic in ninety seconds are different exercises, and load testing at your genuine peak concurrency is a deliverable with a cost attached. Ask for the test results, the failure mode and the rollback plan in writing.

The third is multi region, where read latency budgets across continents change the architecture rather than adding a server.

The fourth is reconciliation, which is permanent operating work rather than a build task. Someone has to work the exception queue every day, and if nobody owns it the queue becomes a graveyard and the ledger drifts.

The fifth is store counting discipline. A buffer that flexes with measured accuracy only works if accuracy is measured, which means a counting cadence and the labour behind it. That is an operations budget item that a software quote will not contain and the benefits case quietly assumes.

What separates an inventory visibility build that works from one that fails?

The first separator is vocabulary. Ask the developer to explain on hand, available to sell and available to promise and to say where reservations sit. If those three collapse into one number in the conversation, they will collapse into one column in the database and you will be back here in two years.

The second is an agreed staleness budget. Say it out loud and agree it commercially: two seconds on a product page is acceptable to almost every retailer and dramatically cheaper than zero staleness at the edge. Then monitor end to end event lag as a service level, because silent lag is what produces overselling during peak.

The third is whether buffers are a function rather than a constant. Measured accuracy for that store and category, days since last count, recent short pick rate and the commercial cost of a cancellation versus a lost sale. Stores with good discipline then earn smaller buffers and sell more, which creates the incentive no policy memo ever produced.

The fourth is that on hand is derived from events rather than stored as a mutable number, so when a store swears it had three and the system said zero you replay the ledger and get an answer in a minute.

The last is ownership. Availability underpins every order the business takes, and it should not live behind someone else's login. At Digital Heroes the client owns the repository, the cloud accounts and the event data from the first commit.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. McKinsey estimates that digitizing the supply chain (Supply Chain 4.0) can cut lost sales by up to 75%, reduce inventories by up to 75%, and lower supply chain operational costs by up to 30%, with up to 30% lower transport and warehousing costs. Source: McKinsey & Company (2016) →
  2. Inventory carrying cost commonly runs about 20% to 30% of inventory value, covering capital cost, storage/warehousing, insurance, taxes, handling, shrinkage, and obsolescence - a recurring cost that better inventory and warehouse software aims to reduce. Source: APQC (2023) →
  3. In the Flexera 2025 State of ITAM report, respondents reported roughly 33% of SaaS spend is wasted, underscoring how paying for off-the-shelf seats and tiers that go unused erodes the supposed cost advantage of generic SaaS. Source: Flexera (2025) →
  4. The average number of formal learning hours used per employee fell to 13.7 in 2024, down from 17.4 in 2023, a decline the report attributes partly to a shift toward informal and on-the-job learning not captured in the formal-hours metric. Source: Association for Talent Development (ATD) (2025) →
Ananya I. · Director of Shopify Practice · Delhi

Ananya leads the Shopify practice at Digital Heroes, covering store builds, replatforms, app development and the merchant side of running a product catalog. Her posts help retailers weigh theme level work against a full custom build, and understand what each choice commits them to.

View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

What question should we answer before scoping an availability project?
Whether each point of sale system in your estate can publish sale events in near real time, answered per store format and per version. Everything downstream depends on it, and finding out in month three that a third of your stores can only produce an end of day file is the most common way these projects stall. Design for a mixed estate deliberately, with a per node freshness attribute the availability calculation uses, so a node on a slow feed carries a larger buffer instead of lying with confidence.
How do we start an event ledger when our current stock balances are wrong?
Seed per node against a recent count rather than seeding the whole estate at once, define an explicit cutover timestamp per node with postings frozen across it, and run the new ledger in parallel with the existing feed before switching anything over. The trap is that a ledger looks authoritative, so a store that was quietly short becomes confidently short and the short picks damage trust in the new system. Continuous reconciliation with an exception queue from day one is not optional.
Why does our availability drift from the merchandising system after launch?
Usually because adjustments are being treated as movements. Cycle counts, write offs and reclassifications arrive as balance corrections rather than as transactions, and a ledger that applies a correction as a movement double counts it. Corrections need their own event type carrying the prior value. Warehouse receipts posted hours after physical arrival and returns published before the unit is actually sellable are the other two recurring sources of drift.
What is a leaked reservation and how do we catch it?
A reservation that was created and never expired, so the unit is neither sold nor available and no report shows it. On a large catalogue these accumulate quietly for weeks and eventually drive replenishment against demand that was never real. Enforce expiry at read time as well as by a sweep, so a stale reservation cannot suppress availability even if the sweep falls behind during a peak, and monitor active reservation counts by class and age as an early warning.
How fresh does availability actually need to be?
Agree a staleness budget commercially rather than demanding real time as a slogan. Two seconds on a product page is acceptable to almost every retailer and is dramatically cheaper to build and operate than zero staleness at the edge. What matters far more than the number is monitoring end to end event lag per source as a service level, because a feed that slows without failing produces overselling with no error appearing anywhere.
Is a flat safety buffer per store really that expensive?
It is the most common approach and the most expensive one, because inventory inaccuracy is not uniform. Two units of a fast selling core line is nothing and two units of a slow moving size is the entire depth, so a flat rule simultaneously undercovers and hides stock. Make the buffer a function of measured accuracy for that store and category, days since last count, recent short pick rate and the commercial cost of a cancellation versus a lost sale.
Can we do this without replacing our order management system?
Yes, and it is usually the right sequence. The inventory service sits alongside your merchandising system, consumes events from it and from point of sale, warehouse and returns, and serves availability to the storefront while merchandising stays the financial system of record. Suite vendors rarely sell the inventory layer cleanly on its own, which is one of the more common reasons retailers with an order management system they intend to keep end up building.
Who works the reconciliation exception queue after go live?
Somebody in your operations team, every day, and that ownership belongs in the plan before launch rather than after. Divergence between the ledger and the merchandising system is inevitable, so the design decision is to make it visible with a scheduled comparison and an exception queue rather than discovering it at stock take. A queue nobody owns becomes a graveyard within a month and the ledger drifts back to being another number people distrust.
How many SKUs are too many for managing inventory in Excel or Google Sheets?
Excel and Google Sheets typically start failing past roughly 1,000 SKUs, more than one sales channel, or more than two or three people editing stock levels. The failure mode is not the row count but stale, conflicting edits that cause oversells and phantom stock. If someone on your team spends hours each week reconciling the sheet against the shelf, you have already outgrown it.
Why do agencies charge for a discovery phase instead of quoting for free?
Because an accurate quote requires real work: mapping your workflows, finding the edge cases, and writing a specification, which typically takes 1 to 3 weeks and costs $2,000 to $10,000 at Digital Heroes depending on system complexity. You leave discovery owning a written spec and a fixed price you can take to any vendor, so the money is not locked into one agency. Free estimates are guesses, and the guess usually becomes your budget overrun six months later.
What questions should I ask a development agency on the first call?
Ask who exactly will build it, what happens when scope changes mid-project, what their maintenance terms are after launch, and what they will need from you every week. Then ask them to describe a project that went wrong and what they changed afterward; teams that have shipped at real volume have war stories, and teams claiming a perfect record are hiding something. The scope-change answer matters most: a disciplined shop describes a written change-order process, not a vague promise to be flexible.
What happens to my software if the agency shuts down or we stop working together?
Nothing dramatic, if the engagement was set up correctly: the code sits in your repository, hosting runs on your cloud account, and a handover document explains how to deploy and operate the system. Any competent replacement team can then take over in days rather than months. If the agency controls the repo, the servers, or the domain, fix that now, because renegotiating access during a dispute is the most expensive place to discover the problem.
Can we migrate years of data out of our current system into new custom software?
Almost always yes, through CSV exports or the vendor's API, and migration should be scoped as its own workstream with field mapping, a dry run, and a planned cutover window rather than an afterthought. The real time sink is rarely moving the data; it is cleaning it, since years of duplicates, free-text fields, and inconsistent formats surface all at once. Pull a full export from your current vendor before committing to anything new, because some SaaS plans restrict exports on lower tiers.
How do I work out whether custom inventory software will pay for itself?
Add three numbers: the subscriptions and per-user fees the system replaces, the hours your team spends on manual counts and reconciliation, and the cost of oversells and dead stock caused by bad counts. Most systems Digital Heroes has delivered reach payback in 18 to 36 months, faster when they replace a subscription stack above $500 per month. If all three numbers are small, custom is premature and an off-the-shelf tool is the honest recommendation.
How small can the first version of my software be and still be worth building?
One workflow, end to end, for one type of user: the single process that currently burns the most hours or loses the most money. In Digital Heroes delivery experience, first versions scoped to 6 to 10 weeks of build time ship, get used, and generate the feedback that makes version two obviously right, while 9-month first versions routinely launch with features nobody touches. Everything you cut from v1 gets cheaper to build later, because real usage reorders the roadmap for you.
Who can build a custom inventory management software system?

Digital Heroes builds custom inventory management software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.

Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.

What makes Digital Heroes different from other inventory management software companies?

Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.

Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.

How can I check Digital Heroes is legitimate before getting in touch?

Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.

Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.

Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?