skip to content
thumbnail-inner-image

Post by :

Published

Read time

10 min read

Inventory can be perfectly accurate in your ERP and still mislead customers on your storefront. This blog explores how operational inventory logic differs fundamentally from commercial availability — and why reliable integration requires translating inventory intent, not just syncing quantities.

Social Share :

Most teams assume inventory sync is where integration finally gets easy. 

Products are mapped. Pricing is aligned. Tax logic is reconciled. Inventory is just a number. Sync it. Display it. Done. 

That assumption is exactly where the next layer of translation failure begins. 

Inventory can be perfectly accurate in your ERP and still lie to your customers. 

Because ERP inventory reflects operational availability. 

eCommerce inventory represents a promise. 

Those two things are not the same. And when they drift apart, accuracy becomes an illusion. 

The Setup 

NorthPeak Industrial Tools (name changed) is a regional B2B distributor supplying contractors and industrial buyers across multiple states. 

Their stack was familiar: 

  • Storefront: Shopify 
  • ERP: NetSuite 

Like most distributors, inventory inside NetSuite was layered and deliberate. Every quantity carried context: 

  • On-hand stock across multiple warehouses 
  • Reserved quantities locked to existing orders 
  • Safety stock thresholds by SKU 
  • Inbound purchase orders included in available totals 
  • Regional fulfillment allocations 

The operations team understood those layers intuitively. They had spent years building the logic that kept inventory reliable. 

When eCommerce launched, the assumption was straightforward. “NetSuite held the inventory. Shopify needs to show it.” 

So that’s exactly what they did. 

Two Customers, Two Very Different Experiences 

Meet Marcus Reyes. He’s a procurement manager at a mid-sized construction firm, and he has been buying from NorthPeak for three years. His orders are large, time-sensitive, and predictable — job sites do not tolerate delays. 

Meet Sarah Okonkwo. She runs a small independent contracting operation and discovered NorthPeak through a referral. Her orders are smaller and less frequent, but she is exactly the kind of buyer who becomes a long-term customer if the first experience goes well. 

Both found what they needed on the Shopify storefront. 

Both placed orders. 

Both had problems. 

First Translation Failure

Reserved Stock — Quantity Is Not Sellable Quantity 

Marcus ordered 80 units of a high-demand power tool needed on-site within the week. The storefront showed 95 units in stock. The math seemed straightforward. 

Inside NetSuite, the picture was different: 

  • 30 units were already reserved against pending orders from other accounts 
  • 15 units were safety stock — thresholds the ops team maintained to buffer against supply delays 
  • 50 units were genuinely available 

NetSuite understood all of this. It managed these layers carefully. 

Shopify did not receive the layers. It received a number. So it displayed 95. 

Marcus ordered 80. The warehouse could not fulfill it. His job site stalled. He called NorthPeak frustrated — not because the system had failed, but because the storefront had promised something operations could not deliver. 

ERP inventory exists to manage operations. That means it includes reservations, buffers, and safety stock by design. 

eCommerce inventory exists to make a commercial commitment. That means it should only reflect what can actually be shipped. 

Unless integration makes that distinction deliberately, the number on the storefront is a version of the truth — not the commercial truth. 

Second Translation Failure 

Multi-Warehouse Inventory — One Number, Many Locations

Sarah was in California. She needed 20 units of a specific hardware component, showing as available. She ordered, got confirmation, and started planning her job schedule around delivery timing. 

Three days later, NorthPeak’s team discovered all available stock for that SKU was sitting in their New Jersey warehouse. Fulfillment to California would take nearly two weeks. 

The inventory number was completely accurate. The availability was completely misleading. 

Shopify had aggregated inventory across all warehouses into a single figure. That figure told customers nothing about where their order would ship from, how long it would realistically take, or whether regional stock existed at all. 

To Shopify, inventory was a number. To NorthPeak’s operations, inventory had location, context, and fulfillment cost attached. 

The order was valid. The experience was not. 

Sarah didn’t come back. 

ERP categories describe how a business organizes inventory across locations. eCommerce availability describes what a customer can rely on receiving, and when. Without translation between the two, geography disappears from the equation — until fulfillment forces it back. 

Third Translation Failure

Inbound Inventory — Future Supply Presented as Present Availability 

NorthPeak’s NetSuite setup included inbound purchase orders in their available inventory calculations. This made operational sense — knowing what was incoming helped the procurement team plan, prevent over-ordering, and maintain reorder discipline. 

But when that inbound quantity flowed into Shopify as part of the available stock figure, customers interpreted it as something they could purchase today. 

So they did. 

Multiple orders came in for items sitting on a freight carrier somewhere between a supplier facility and a NorthPeak warehouse. Customers expected standard lead times. Operations saw stock that would not arrive for 12 to 18 days. 

Support tickets multiplied. The common thread: customers had been shown a number that was accurate for procurement planning and useless as a buying signal. 

ERP uses inbound quantities to manage supply. eCommerce uses availability to create buying confidence. Those are not the same number, and syncing one as the other is a translation failure — not a sync error. 

The Breaking Point 

Marcus began calling before placing orders to confirm availability. He had stopped trusting the storefront number. 

Sarah didn’t return. That is the quiet cost of a trust failure that happens early — the customer you lose before the relationship has a chance to compound. 

Repeat buyers — NorthPeak’s most valuable segment — had started hedging. They would check the website, then call anyway. The storefront had become a starting point for a conversation that should have been a completed transaction. 

Customer support was absorbing conversations that should never have been necessary. 

And none of it appeared in the integration logs. 

Sync was running. Numbers were moving. What was breaking was trust. 

Breakthrough: Translating Inventory Intent 

When NorthPeak came to i95Dev, the problem was clear. They were not dealing with a sync failure. They were dealing with a translation failure — one where operational inventory was reaching customers as commercial inventory without any interpretation in between. 

The conversation shifted from: 

“Why isn’t inventory syncing correctly?” 

to: 

“What should a customer actually see? And what should the storefront actually promise?” 

1. Defining Sellable Inventory 

The first step was building logic that derived sellable quantity from raw ERP data, rather than syncing it directly. 

Sellable Quantity = On-hand stock − Reserved quantities − Safety stock thresholds 

That formula changed what the storefront communicated. Shopify stopped displaying operational inventory. It started displaying commercial inventory — the quantity NorthPeak could actually commit to, at the moment of purchase. 

Marcus’s next order was placed against a number that matched what the warehouse could ship. The call to confirm first stopped being necessary. 

2. Warehouse-Aware Routing and Visibility 

Rather than collapsing inventory across all locations into a single figure, the integration was rebuilt to carry warehouse context into fulfillment decisions. 

Shopify now understood which stock was regionally positioned and what realistic delivery timelines looked like by geography. Orders were routed intelligently. Customers in California saw inventory that could reach them in standard time. Customers in the Northeast saw theirs. 

The storefront stopped making promises that geography would later contradict. 

3. Separating “In Stock Now” from “Available Soon” 

Rather than treating inbound purchase orders as available inventory, the integration introduced distinct availability signals. Instead of inflating the in-stock number, the storefront surfaced honest visibility: 

  • In stock — ships today 
  • Available in 7–10 days — on its way 
  • Backorder available — order now, ships on  

This did not reduce conversion. It improved it. Customers who understood what they were buying completed orders with confidence. The ones who needed faster fulfillment made that decision with full information — and respected the transparency enough to return. 

The Result 

Backorders from misrepresented stock dropped significantly. Support volume for fulfillment-related issues fell. Marcus’s firm returned to ordering online, without calling first to confirm. 

The next Sarah — and there were others — completed her order, saw her estimated delivery date, and moved on. No surprises. No follow-up calls. 

Most importantly, the storefront became a reliable channel again. 

Not because the numbers changed. Because they finally started meaning the right thing.

Attribute ERP (NetSuite / Dynamics / SAP B1) eCommerce (Shopify / Magento / BigCommerce) The Gap
Inventory definitionTotal on-hand including reservations, safety stock, and planning buffers Quantity available to purchase right nowOperational quantity ≠ sellable quantity
Warehouse contextLocation-specific, tied to fulfillment routing and costOften aggregated into a single figure Customers see availability without geography 
Inbound stockTracked as incoming supply for procurement planning Not distinguished from current available stock Future supply appears as present availability 
Availability signals Multi-layered: on-hand, reserved, in-transit, blocked Binary: in stock or out of stock Nuanced ERP states collapse into a single misleading number
The i95Dev Fix 

Translate inventory intent before syncing 

  • Calculate sellable quantity: on-hand minus reservations and safety buffers 
  • Preserve warehouse context and route orders intelligently by geography 
  • Separate inbound supply from present availability 
  • Surface distinct availability signals: in stock, available in X days, backordered 
  • Reflect fulfillment reality on the storefront — not just operational accuracy 

The Integration Truth 

Inventory sync is not about moving numbers. 

It is about preserving intent. 

ERP systems optimize for operations. eCommerce platforms make commercial promises. When those two things are not translated deliberately, you do not get inaccurate inventory. 

You get accurate inventory that means the wrong thing, and customers experience the difference — even when your integration logs show a clean sync. 

At i95Dev, we do not sync inventory. We translate what inventory means, so the storefront can make promises the warehouse can actually keep. 

This Was the Fourth Translation Failure 

The first made the catalog feel wrong to buyers. 

The second made products behave unexpectedly the moment someone purchased. 

The third broke financial reconciliation — quietly and repeatedly. 

The fourth eroded customer trust — not through errors, but through accuracy without interpretation. 

Where might inventory translation be missing in your experience? 

  • Do customers report ordering items that turn out to be backordered? 
  • Does your support team handle fulfillment confusion the storefront “should have caught”? 
  • Do repeat buyers call to confirm availability before ordering online? 
  • Does your storefront show a single number with no distinction between warehouse locations? 
  • Do inbound purchase orders inflate your apparent available stock? 

If these feel familiar, you are not looking at a sync problem. 

You are looking at a translation gap — something beyond the sync. 

And even when inventory is aligned, the next layer is waiting. Orders do not stay static after checkout. Edits, cancellations, partial fulfillments, and returns introduce the next translation challenge. That is where the next failure begins.

Related Blogs

Subscribe To Our i95Dev

Join our community of finance, operations, and procurement experts and stay up to date on the latest purchasing & payments content.

Scroll to Top