SKUs whose Sage Intacct on-hand quantity differs from the ecommerce stock count by more than 5%. Drift causes oversell and stockout. Intacct Inventory module required.
At a glance
A table of the individual SKUs whose Sage Intacct on-hand quantity disagrees with the ecommerce stock count by more than 5%, sorted so the most dangerous drift sits at the top. Where ERP-vs-Ecom Inventory Variance % gives you the single catalogue-level gauge, this card is the line-item drill behind it: the named SKUs you can actually fix. Negative drift (storefront higher than Sage) is oversell waiting to happen; positive drift (Sage higher than storefront) is sellable stock the channel cannot offer. Both cost money, and both are invisible to either system alone. The card requires the Sage Intacct Inventory module and hides for Sage Accounting merchants who carry no perpetual inventory.
| What it counts | A row per SKU where the absolute difference between Sage Intacct on-hand quantity (InventoryItem.QuantityOnHand, summed across fulfilment locations) and the ecommerce platform’s available-to-sell count exceeds 5% of the Intacct figure. Columns show both quantities, the percentage drift, the direction, and the recent order velocity so you can triage by risk, not just by size of drift. |
| Threshold | 5% is the default per-SKU trigger. Configurable per workspace and tunable per Class; high-velocity SKUs often drop to 2% because a small percentage is a large unit count at speed, while slow movers can relax to 10%. |
| Direction | Negative (storefront higher than Sage) is the oversell risk and is weighted to the top. Positive (Sage higher than storefront) is missed-revenue. The direction column drives the action. |
| Velocity weighting | Rows carry recent sales velocity so a 6% drift on a SKU selling 200 a day outranks a 40% drift on a SKU selling one a month. The card sorts by risk (drift times velocity), not by raw drift percentage. |
| Currency | Not applicable. This is a quantity-parity table. Pair with Sage Total Inventory Value to attach a dollar figure to the drifting SKUs. |
| Entity scope | Card respects the dashboard entity filter. In Multi-Entity Console a SKU is evaluated per entity, because a SKU can be in parity in one warehouse and drifting in another. |
| Time window | RT/24H |
| Alert trigger | >10 SKUs drifting, sentiment inventory_drift. Configurable per workspace. The count threshold matters less than which SKUs are on the list; one high-velocity oversell SKU is worse than twenty dormant ones. |
| Roles | owner, finance, operations |
Calculation
Calculated automatically by comparing Sage Intacct on-hand quantity against the connected ecommerce platform’s stock count, per matched SKU. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US merchant on Sage Intacct (single entity, USD) with an Inventory Control module of roughly 3,800 SKUs, selling through Shopify Plus DTC. Snapshot 14 Apr 26. The catalogue gauge reads 6.1% and this card lists 18 SKUs drifting more than 5%, above the 10-SKU alert line. The operations lead sorts by risk (drift times velocity).| SKU | Sage on-hand | Storefront count | Drift | Direction | Velocity (units/day) |
|---|---|---|---|---|---|
| PLNT-204 (bestseller planter) | 320 | 380 | -18.8% | Storefront higher | 95 |
| HOSE-88 (seasonal) | 140 | 168 | -20.0% | Storefront higher | 40 |
| TOOL-512 | 60 | 52 | +13.3% | Sage higher | 22 |
| SEED-77 | 410 | 360 | +12.2% | Sage higher | 8 |
| MISC long-tail (14 SKUs) | various | various | 6-9% | mixed | <2 each |
| SKUs drifting >5% (this card) | 18 |
- PLNT-204 is the row that matters, and it is at the top because of velocity, not because it has the largest percentage drift. At 95 units a day with the storefront showing 60 more units than Sage actually holds, the channel will accept roughly 60 orders it cannot fulfil within the day, then keep overselling until someone corrects the count. A 20% drift on HOSE-88 looks worse on paper but at 40 units a day it does less damage. This is why the card sorts by drift times velocity rather than by raw percentage: the operations lead should fix PLNT-204 first, and the card puts it first automatically.
- The negative-drift SKUs (PLNT-204, HOSE-88) are the oversell emergencies; the positive-drift SKUs (TOOL-512, SEED-77) are the quieter missed-revenue problem. Negative drift means the storefront promises stock Sage does not have: cancelled orders, refunds, support tickets, and lost trust, all today and all visible to customers. Positive drift means Sage holds stock the storefront is not offering: no customer harm, but real revenue left on the table. A good triage handles the negative-drift, high-velocity rows within the hour and batches the positive-drift rows into the daily inventory review.
- TOOL-512 at +13% positive drift is often a returns or receipt-timing artefact worth understanding before acting. Sage holding more than the storefront on a moderate-velocity SKU frequently means stock was received or returned into Intacct and the storefront sync has not caught up, or the storefront is showing available-to-sell (net of committed) while Sage shows gross on-hand. Before manually correcting, the operations lead should check whether this is a real drift or a definition mismatch, because manually editing a count that the next sync would have fixed introduces a new error.
- The 14 long-tail SKUs at 6-9% drift and under 2 units a day are real drift but low risk, and the right response is to find the common cause rather than fix them one by one. Fourteen low-velocity SKUs drifting just over the threshold usually share a root cause: a location not included in the fulfilment-eligible set, a UOM mapping gap, or a sync that excludes a product type. Fixing the 14 individually is busywork; finding the one configuration cause clears all 14 and prevents the next batch. This is where the card feeds Inventory Sync Drift, which looks at whether drift persists across refreshes (a plumbing problem) or resolves on its own (a timing artefact).
- This table is the cross-channel join made actionable, and it is the level at which oversell is actually prevented. The catalogue gauge tells leadership there is a parity problem; this card tells the operations lead exactly which SKUs to touch and in what order. Sage knows the true on-hand because it is the book of record; the storefront knows what it has promised customers; neither can compute the per-SKU disagreement alone. On this account the join caught PLNT-204 drifting two hours after a large wholesale receipt was posted to Intacct but failed to push to Shopify, before a single oversell order landed. That two-hour head start is the difference between a quiet count correction and a day of cancelled bestseller orders. It is the cross-channel finding that pays for the connector, and where the Implementation Partner usually demonstrates value to operations.
Sibling cards merchants should reference together
| Card | Why pair it with SKUs with Intacct-vs-Ecom Inventory Drift >5% |
|---|---|
| ERP-vs-Ecom Inventory Variance % | The catalogue-level gauge. This card is the SKU-level drill behind it. |
| Inventory Sync Drift | Tells you whether the drift is a one-off timing artefact or a persistent plumbing fault. |
| OOS with Open Order Demand | Negative drift plus open demand is a confirmed oversell in flight. |
| Inventory Item On-Hand Went Negative | A negative Intacct on-hand guarantees drift and flags a data integrity fault. |
| Low Stock Alerts | Drift near the reorder point is where oversell happens fastest. |
| Sage Total Inventory Value | Attaches a dollar figure to the drifting SKUs so you can size the exposure. |
| Slow-Moving Inventory (>90d) | Drift on dormant SKUs matters less; this tells you which rows are cold. |
Reconciling against Sage
Where to look in Sage Intacct: The native Sage Intacct views to run side by side with this card:Reports → Inventory Control → Item Stock Status (real-time on-hand by Warehouse, the book-of-record quantity this card compares against the storefront) Reports → Inventory Control → Inventory Valuation (on-hand by Location to confirm which locations should feed the sellable basis) Inventory Control → Items with the on-hand and committed columns exposed, exported per SKU to compare against the storefront stock export Inventory Control → transaction history for a specific drifting SKU, to see the recent receipt, sale, adjustment, or transfer that opened the gap Interactive Custom Report (ICR) on the Inventory data source listingThe reconciliation discipline is per-SKU timestamp alignment and definition matching. A SKU that drifts in a manual comparison but not on the card is almost always an available-vs-on-hand or a location-scope difference. Pull the Intacct transaction history for the disputed SKU: a recent receipt, return, or transfer usually explains the gap and tells you whether it is real drift or a sync that has not yet run. Common reconciliation pitfalls:ItemID,QuantityOnHand, committed quantity, andWarehouseID, joined against the storefront export by SKU
- Available-to-sell vs on-hand. The storefront usually shows on-hand minus committed; Intacct on-hand is gross. A SKU with committed stock reads as positive drift in a raw comparison that the card correctly nets out.
- Location scope. Intacct holds on-hand per location. If the storefront only fulfils from two of five locations, summing all five overstates the sellable basis and manufactures drift the card avoids by scoping to fulfilment-eligible locations.
- Unit of measure. A SKU stocked in cases and sold in eaches drifts massively in a raw comparison until the UOM conversion is applied. The card applies it; a manual export does not.
| Reason | Direction | Why |
|---|---|---|
| Available vs on-hand | Card lists fewer | Card nets committed stock to compare like-for-like; a gross comparison reports committed-stock SKUs as drifting. |
| Location scope | Card lists fewer | Card scopes to fulfilment-eligible locations; an all-location sum overstates the sellable basis. |
| Unit of measure | Card lists fewer | Card applies UOM conversion; a raw case-vs-each comparison reports huge false drift. |
| Timestamp alignment | Either | Card snapshots both sides at one moment; exports pulled hours apart show order and receipt activity as phantom drift. |
| Threshold and velocity weighting | Card lists fewer | Card lists SKUs over 5% and ranks by velocity; a raw comparison lists every non-zero difference. |
| Negative on-hand | Card lists more | A negative Intacct on-hand (data integrity issue) registers as drift; some manual reports floor on-hand at zero and hide it. |
| Unmatched SKUs | Card excludes | SKUs with no storefront match are reported separately, not as 100% drift, which a naive join would do. |
| Card | Expected relationship | What the comparison reveals |
|---|---|---|
| shopify.inventory_value | Per-SKU source | Shopify’s per-variant stock is the storefront side of each row. The drift against Intacct on-hand is what the card lists. |
| bigcommerce.inventory_value | Per-SKU source | Same for the BigCommerce catalogue; channel-scope exclusions must be mapped so by-design gaps are not listed. |
| adobe_commerce.inventory_value | Multi-source caveat | Adobe Commerce Multi-Source Inventory holds per-source stock; the row must target the source mapped to the Intacct location. |
| ERP-vs-Ecom Inventory Variance % | Roll-up | This table aggregates into that gauge. The SKUs here are the ones moving the catalogue number. |
| Inventory Sync Drift | Diagnostic | A SKU drifting on this card every refresh is a connector mapping fault, not real movement. |
| OOS with Open Order Demand | Oversell confirmation | A negative-drift SKU with open demand is a confirmed oversell already in flight, the most urgent row. |