Skip to main content
Card class: Cross-ChannelCategory: Ecommerce Platform
SKUs whose on-hand count differs between NetSuite (system of record) and commerce platform. Sync-failure detector.

At a glance

Alert table comparing NetSuite item.on_hand to commerce platform inventory.on_hand for the same SKUs. When the two diverge by more than threshold (default 5 units or 5%), the SKU is flagged. The consequence of inventory sync drift is real: the merchant either oversells (customer pays for OOS goods, refund or backorder follows) or undersells (the product looks unavailable on the website, customer goes elsewhere). The inventory-side counterpart to the revenue-gap kill shot.
What it countsFor each SKU present in both NS and commerce: ABS(netsuite.item.on_hand - commerce.inventory.on_hand). Drift threshold: 5 units OR 5% of NS qty (whichever larger). Each row in the table is one SKU + the gap + dollar impact (drift × cost or × price depending on side).
VAT / tax treatmentn/a, this is an inventory-quantity comparison.
Shippingn/a.
Discountsn/a.
Refundsn/a.
Cancelled / voided ordersn/a; this is an inventory-state comparison.
Currencyn/a for quantity; dollar impact in consolidation currency.
Channels / sourcesNetSuite vs Shopify, BigCommerce, or Adobe Commerce, separately. Multi-platform stores compare each commerce instance to NS independently.
Multi-location handlingNS supports multi-location inventory; commerce platforms typically track web-allocated stock. Vortex IQ compares NS web-allocated location against commerce. Configurable.
ThresholdDefault 5 units OR 5%. Lower to 2 units / 2% for high-value SKUs (luxury, electronics); raise to 10 units / 10% for high-volume basics where minor drift is tolerable.
Time windowRT (live snapshot).
Alert triggerany SKU drift >5 units, driven by sentiment_key: inventory_drift.
Rolesowner, operations

Calculation

Calculated automatically from your NetSuite data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

Worked example

An AU electronics manufacturer / distributor on NetSuite OneWorld + Shopify Plus. Snapshot 04 May 26. Headline: 84 SKUs flagged with sync drift. Estimated overselling risk: A184,000.Estimatedundersellinglostrevenue:A184,000. Estimated underselling lost-revenue: A96,000. Top drift cases:
SKUDescriptionNS on-handShopify on-handDriftDirectionRiskDollar impact
ELC-PWR-2400W2400W power supply03838OversellingHighA22,800(38×A22,800 (38 × A600 price)
ELC-CBL-USB4-2MUSB4 cable 2m4142138OversellingHighA$11,040
ELC-CHRG-FAST-65W65W fast charger129684OversellingHighA$8,400
ELC-MNT-VESA-200VESA-200 mount84480UndersellingMediumA$6,400 lost-rev
ELC-CASE-CLR-PROPro clear case60852UndersellingMediumA$5,200 lost-rev
The killer story:
  1. The first three SKUs are overselling: Shopify shows stock the warehouse doesn’t actually have. ELC-PWR-2400W is the worst case: NS shows 0 on hand, Shopify shows 38 in stock. Until the next sync, every customer buying this SKU on the website is being sold a product the merchant cannot fulfil. At 8 to 12 orders per day for this SKU, the merchant is creating 8 to 12 over-sold orders per day, each requiring refund or backorder. Customer-experience disaster + finance reversal cost.
  2. Investigation: the NS-to-Shopify inventory push hasn’t run since 27 Apr 26 (7 days). The integration credential expired on a sub-account. NS knows it shipped 38 units of ELC-PWR-2400W during that period (warehouse posted Item Fulfilments); Shopify still shows the pre-shipment count. Action: rotate the credential, force a full inventory resync.
  3. The fourth and fifth SKUs are underselling. Shopify shows 4 / 8 of ELC-MNT-VESA-200 / ELC-CASE-CLR-PRO; NS shows 84 / 60. The website displays “Low Stock” or “Last Few” warnings, suppressing demand. The reverse-direction drift typically traces to a different cause: a Shopify-side adjustment (manual stock count, marketplace channel allocation) didn’t propagate back to NS. Action: NS team to investigate the manual-adjustment trail; if the goods are physically there, push the correct figure back to Shopify.
  4. Aggregated impact analysis:
    • Overselling cases: 56 SKUs, total over-allocated quantity 1,240 units, average price A148.If60148. If 60% of these overselling units result in customer orders before sync resolves: 1,240 × 0.6 × A148 = A110,000oforderflowthatwillrequirerefundorbackorder.Customerexperiencehit+roughlyA110,000 of order-flow that will require refund or backorder. Customer experience hit + roughly A15,000 of operational cost (CS handling, refund processing, restocking from canceled SOs).
    • Underselling cases: 28 SKUs, total under-allocated quantity 720 units. If 50% of demand for these SKUs is suppressed by the inaccurate “Low Stock” message: 720 × 0.5 × A280averageprice=A280 average price = A100,000 of unrealised demand. Lost revenue, never recovered.
  5. **Total estimated impact: A210,000+customerexperiencedamage.Thecostoffixingthesync(4hoursofintegrationteamtime):roughlyA210,000 + customer experience damage.** The cost of fixing the sync (4 hours of integration team time): roughly A800. ROI on resolution = 250x.
  6. The strategic insight: inventory sync drift is the inverse signal of Commerce Orders Without NetSuite SO. Both reveal commerce-NetSuite sync breaking. Where unmapped-orders shows revenue invisibility (orders happened, NS doesn’t know), inventory drift shows operational risk (NS knows the truth, customers see the lie).
Why this card lands well in CEO conversations: The pitch: “Right now, on your website, we count 38 units of your $600 power supply that physically don’t exist. The next 38 customers to buy will get refunded. How quickly do you want to find that out?” The merchant CEO who has been through this experience nods immediately; the merchant CEO who hasn’t realises the risk is real and starts asking the integration team uncomfortable questions.

Sibling cards merchants should reference together

CardWhy pair it with Inventory Sync Drift
Commerce Orders Without NetSuite SOThe revenue-side counterpart; same root cause (broken commerce-NS sync).
OOS with Open SO DemandWhen sync drift produces zero on-hand in NS but Shopify still says in-stock, this card surfaces the risk.
Total Inventory ValueThe denominator dollars; drift × cost = exposed inventory value.
Low Stock AlertsNS-side low-stock; combined with this card detects whether the alert is firing on accurate data.
shopify.inventory_totalThe Shopify-side total inventory dollars; reconcile to NS.
bigcommerce.inventory_totalSame for BigCommerce.

Reconciling against the vendor’s own dashboard

Where to look in NetSuite’s own dashboard: NetSuite has no native cross-platform inventory comparison view. Manual approach:
  1. NS: Reports > Inventory > Inventory Stock Status for the relevant location, exported to CSV.
  2. Commerce platform: export inventory levels (Shopify Admin > Inventory, BigCommerce Control Panel > Products > Inventory).
  3. Diff manually by SKU.
This is exactly what Vortex IQ automates continuously. Why our list may legitimately differ from a manual cross-check:
ReasonDirectionWhy
Snapshot timestampEitherInventory changes constantly; manual checks of the two sides at slightly different times will show different drift. Vortex IQ uses synchronised snapshots.
Multi-location aggregationMaterialNS shows per-location stock; commerce typically aggregates. The merchant must configure which NS location maps to commerce’s “available” pool.
Reserved / committed stockEitherNS distinguishes “On Hand” from “Available” (subtracting committed-to-SO). Commerce may show “Available”. Vortex IQ defaults to comparing Available; configurable.
Bundle / kit SKUsMaterialNS bundles materialise to component SKUs; commerce typically tracks the bundle SKU directly. Drift on bundles requires bundle-component join logic.
Cross-connector reconciliation: This card IS the cross-connector reconciliation, between NS inventory and the commerce platform’s inventory.

Known limitations / merchant FAQs

Drift on a single SKU. Should I worry? Investigate, don’t panic. Single-SKU drift can be a transient sync delay (an inbound receipt posted to NS but commerce hasn’t refreshed yet). If the same SKU shows drift for >12 hours, it’s a real issue. My drift suddenly appeared on 50+ SKUs. What just happened? Usually a sync regression: credential expiry, API rate-limit lockout, or a Shopify-side configuration change. Open the integration logs at the timestamp the drift began. Cross-reference with Commerce Orders Without NetSuite SO, if both cards show simultaneous spikes, the broken sync is the common cause. Why does NS show 0 on hand but Shopify shows 38? The most common cause: NS recorded the shipments (sales reduced inventory in NS to 0), but the inventory-update push from NS to Shopify hasn’t run since. Resolution: rotate the credential / fix the sync, then force-resync inventory. The 38 figure on Shopify will adjust to 0 within minutes. Some drift is normal because NS only updates inventory at end-of-day. Should I increase the threshold? Yes. End-of-day batch sync produces predictable mid-day drift on fast-moving SKUs. Default 5% threshold is tuned for hourly-or-better sync. For daily-batch sync, raise the threshold to 15 to 20%; the alert is meant to catch regressions, not normal end-of-day catch-up. Bundle/kit SKUs always show drift. How do I handle them? Configure the bundle definition in the Vortex IQ manifest. The integration unpacks bundles to components on NS side and matches against the bundle SKU on commerce side. Without configuration, every bundle SKU shows false drift. What is the “overselling” risk exactly? When commerce shows higher stock than NS reality, customers can place orders for goods that don’t exist. The merchant must refund (best case, ~A$15 in CS labour per refund) or backorder (worst case, customer waits 2 to 4 weeks for inbound + customer-experience hit). Either way, the order revenue is at risk. What is the “underselling” risk exactly? When commerce shows lower stock than NS reality, the website displays “Low Stock” or “Out of Stock” warnings, suppressing demand. Customers go elsewhere. The lost-revenue figure is the harder one to estimate; typical conversion-rate impact is 30 to 50% reduction on flagged-low-stock products. My multi-location NS: how does the comparison work? Configurable. The merchant designates one NS location as the “web-allocated” pool. The card compares that location to commerce. If web-allocation is across multiple NS locations, configure a sum-of-locations rule. Does this account for safety-stock buffers? Optional. Some merchants intentionally hold a buffer in NS (e.g. “100 units real, only push 90 to Shopify to keep 10 safety”). Configure the buffer rule in the manifest and the card compares (NS - buffer) to commerce. The drift dollars seem high; is the calculation right? The dollar figure is calculated as drift × cost (for inventory value at risk) or drift × price (for revenue at risk on overselling). Configurable per card view. Default uses cost for understocking risk and price for overselling risk. Can I auto-trigger a resync from the alert? Yes via Ask Viq: “force inventory resync for SKU X” or “force full inventory resync”. The action posts a refresh through the integration. Requires merchant authorisation. My OneWorld account: per-subsidiary? Yes. Each NS subsidiary’s inventory is compared to its commerce instance independently. A multi-region distributor sees 3 separate drift tables.

Tracked live in Vortex IQ Nerve Centre

Inventory Sync Drift is one of hundreds of KPI pulses Vortex IQ tracks across NetSuite and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.