Omnichannel Inventory Visibility Problems: The 7 That Oversell and Hide Stock, and How to Avoid Them
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.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- 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) →
- 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) →
- 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) →
- 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 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.
Frequently asked questions
What question should we answer before scoping an availability project?
How do we start an event ledger when our current stock balances are wrong?
Why does our availability drift from the merchandising system after launch?
What is a leaked reservation and how do we catch it?
How fresh does availability actually need to be?
Is a flat safety buffer per store really that expensive?
Can we do this without replacing our order management system?
Who works the reconciliation exception queue after go live?
How many SKUs are too many for managing inventory in Excel or Google Sheets?
Why do agencies charge for a discovery phase instead of quoting for free?
What questions should I ask a development agency on the first call?
What happens to my software if the agency shuts down or we stop working together?
Can we migrate years of data out of our current system into new custom software?
How do I work out whether custom inventory software will pay for itself?
How small can the first version of my software be and still be worth building?
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.