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.
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.
Three things to notice:
- 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. - 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.
- The fix is configuration, not firefighting. Each drifting variation traces to a setup gap:
present_at_all_locations = falsewith 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
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.
Cross-connector reconciliation:
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.