Skip to main content
Card class: HeroCategory: Ecommerce Platform
Variations showing different on-hand quantity between the POS view and the Square Online view. The root oversell risk for unified-commerce merchants.

At a glance

A real-time count of item variations whose on-hand inventory differs between what the POS register sells from and what Square Online sells from. On a true unified-commerce setup these should always agree, both read the same Square Inventory record. When they drift, the same physical unit can be sold twice (once in-store, once online), which is the root cause of the worst customer experience in retail: the oversell. This card surfaces the drift before it becomes a cancelation or a refund.
What it countsCOUNT(item variations WHERE POS-visible on-hand != online-visible on-hand) across the catalog, at the variation (catalog_object_id) level. A non-zero count means at least one variation can be oversold.
Root cause of driftDrift arises when a variation is not configured for unified inventory: it may use present_at_all_locations = false with location-specific stock, have inventory tracking disabled for one surface, or be served by a separate fulfilment location that the online channel does not draw from. A correctly unified variation reads one on-hand number everywhere.
VAT / tax treatmentn/a, this is an inventory parity count.
Refunds / ordersn/a to the count, but drift is the upstream cause of oversell-driven cancelations and refunds.
Channels / sourcesThis card is the channel-parity check. It compares the on-hand a POS sale would decrement against the on-hand Square Online would decrement, per variation.
Currency / unitnumber (count of drifting variations)
Time windowRT (real-time, polled from the Square Inventory API every 5-15 minutes)
Alert trigger> 0 variations with an on-hand count mismatch, threshold-based. Any drift is worth surfacing.
Rolesowner, operations

Calculation

Calculated automatically from your Square Online data. 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 specialty retailer on Square: a flagship store and a stockroom location, plus a Square Online storefront that ships from the stockroom. Catalog of 1,200 active variations. Snapshot taken on 12 Apr 26 at 14:00 UTC.
VariationPOS on-handOnline on-handDrift?Likely cause
Wool throw, charcoal (SKU WT-CHR)88NoUnified, correctly configured
Ceramic mug, 12oz (SKU CM-12)03YesOnline still drawing from stale stockroom count
Candle, cedar (SKU CA-CED)1411YesRecent in-store sales not yet reflected online
Tote bag, natural (SKU TB-NAT)55NoUnified
Notebook, A5 (SKU NB-A5)22-2YesOnline oversold; negative on-hand projected
Drifting variations (this card)3
Three things to notice:
  1. Any non-zero count is actionable, which is why the alert is > 0. Three drifting variations out of 1,200 sounds small, but each one is a live oversell waiting to happen. The mug (POS shows 0, online shows 3) will take three web orders Square cannot fulfil, each ending in a cancelation or refund and an unhappy customer. Parity is binary: it is either clean or it is leaking.
  2. The notebook is already past the warning stage. Online on-hand of -2 means two orders have already been taken for stock that does not exist. This variation should also be lighting up Oversell Risk (Negative On-Hand Projected). Drift is the leading indicator; negative on-hand is the confirmation that the damage is done.
  3. The fix is configuration, not firefighting. Each drifting variation traces to a setup gap: present_at_all_locations = false with location-specific stock, inventory tracking off for one surface, or an online channel pointed at a different fulfilment location than the register. Clearing the alert means unifying the variation’s inventory config in the Square Item editor, not just manually re-syncing the count, which will drift again.

Sibling cards merchants should reference together

CardWhy pair it with POS to Online Inventory Drift
Oversell Risk (Negative On-Hand Projected)Drift is the cause; negative projected on-hand is the effect. A drifting variation that keeps selling becomes an oversell. Watch them together.
POS vs Online Inventory ParityThe positive-framed companion: the share of the catalog that is correctly in parity. This card counts the failures; that card scores overall health.
Out-of-Stock ProductsA variation that is OOS at POS but in stock online is a drift case that converts into oversells. The two cards overlap on the dangerous variations.
Refund RateDrift-driven oversells end in fulfilment fails and refunds. A drift spike often precedes a refund spike by a day or two.
Canceled Orders (24h)Oversold orders are frequently canceled. A drift count climbing alongside a cancelation burst confirms the link.
Online-Only SKUsOnline-only items are intentionally not at POS, so they should never count as drift. Useful to confirm a drift case is a real misconfiguration, not a deliberate online-only item.

Reconciling against Square

Where to look in the Square Dashboard: Square Dashboard, Items, Inventory, and the Stock by location view. Square does not surface a single “drift” report, you reconcile by comparing the on-hand a location-filtered POS view shows against the on-hand the Square Online channel is configured to draw from. For each variation this card flags, open the item in the editor and check its Stock per location and its Site visibility settings. Other Square Dashboard views that look like the same number but aren’t:
  • Items, Inventory, single-location filter: shows one location’s on-hand, not the POS-vs-online comparison. You need to compare two surfaces.
  • Items, item editor, Stock field: shows the master on-hand. Drift shows up only when a variation’s online-served count diverges from its POS-served count, which the single Stock field does not reveal on its own.
  • Square Online, product visibility: tells you whether an item is published online, not whether its inventory agrees with POS.
Why our number may legitimately differ from Square Dashboard:
ReasonDirection of divergence
Sync lag. Square Inventory has a small lag (typically <5 minutes). A register sale that creates momentary drift is reflected here ~1-5 minutes later; the dashboard updates on its own schedule.Brief mismatch around live sales
Intentional location-specific stock. A merchant who genuinely runs separate POS and online stock pools (different fulfilment locations) will see “drift” that is by design. Confirm whether the variation is meant to be unified.Vortex IQ flags intended setups as drift
Untracked variations. Variations with inventory tracking off always read “in stock” on both surfaces and never count here, even if physically depleted.Vortex IQ may understate true risk
Online-only / POS-only items. Items deliberately on one channel only are not drift; we exclude clearly single-channel items.No divergence when correctly classified
Negative on-hand. Square permits negative on-hand from oversells. We treat any mismatch including negatives as drift; some dashboard views floor the display at zero.Vortex IQ may show drift where dashboard shows 0
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
Marketplace listing stock (Amazon, eBay via Square Inventory vs Marketplace Listings)A variation drifting between POS and online will usually also drift against marketplace listingsIf Square inventory and a marketplace listing disagree, the same root configuration gap is likely feeding both. Fix the Square parity first, then re-push to the marketplace.
The Square unified-inventory advantage, and its trap: Square’s promise is one inventory record serving POS and Square Online from the same number. When configured correctly, drift is structurally impossible, the register and the website decrement the same on-hand. This card exists precisely to catch the cases where that promise is broken by a configuration gap (present_at_all_locations = false, a separate fulfilment location, tracking disabled on one surface). Any non-zero count means the unification is not actually unified for those variations.

Known limitations / merchant FAQs

Isn’t Square inventory supposed to be unified? How can it drift at all? Square’s design is one on-hand record per variation per location, shared by POS and Square Online. Drift happens when a variation is not configured for that unification: present_at_all_locations = false with location-specific stock, inventory tracking disabled on one surface, or the online channel pointed at a different fulfilment location than the register draws from. The card catches exactly these configuration gaps. A fully unified variation cannot drift. Why is the alert set to fire on a single drifting variation? Because every drifting variation is a live oversell risk. Unlike a count metric where a small number is tolerable, parity is binary, one variation that can be sold twice produces one customer who orders something you cannot ship. The > 0 trigger reflects that any drift is worth a look, even if the operational fix can be batched. A variation shows online on-hand below zero. What does that mean? It means orders have already been taken for stock that does not exist, an oversell that has happened, not just a risk. That variation should also appear on Oversell Risk (Negative On-Hand Projected). Those orders typically end in cancelations or refunds. Fix the inventory config, then triage the affected orders before they auto-cancel and frustrate the customer. I deliberately keep separate stock for my store and my website. Is that drift? Technically yes, this card will flag it, because from its perspective the POS and online on-hand disagree. If running separate stock pools is intentional (different fulfilment locations, a reserve set aside for walk-ins), you can treat those variations as expected and focus on the unintended cases. The card cannot read your intent, so it surfaces all mismatches; you decide which are by design. Does an untracked variation ever count as drift? No. Variations with inventory tracking disabled always read “in stock” on both POS and online, so they never disagree and never count here. The trade-off is that untracked variations can still oversell physically without any signal. If a variation matters for fulfilment, enable tracking so parity can be checked. How fast does drift clear after I fix the config? Once you unify the variation’s inventory configuration in the Square Item editor, the next inventory poll (every 5-15 minutes) reconciles the on-hand and the variation drops off this card. Note that manually re-syncing the count without fixing the underlying config is a temporary patch, it will drift again on the next location-specific sale. Does this card cover online-only or POS-only items? Deliberately single-channel items are not drift and are excluded when correctly classified. An Online-Only SKU is supposed to be absent from POS, so its “missing at POS” state is not a mismatch. If a single-channel item is showing up as drift, it is likely misconfigured, check its present_at_all_locations and ecom_visibility settings.

Tracked live in Vortex IQ Nerve Centre

POS to Online Inventory Drift is one of hundreds of KPI pulses Vortex IQ tracks across Square Online 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.