> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# POS to Online Inventory Drift, Square Online

> POS to Online Inventory Drift: variations whose on-hand count differs between the POS view and the Square Online view. The root oversell risk for unified-commerce merchants. How to read it, why it matters, and how to act on it.

**Card class:** [Hero](/nerve-centre/overview#card-classes-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> 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 counts**      | `COUNT(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 drift** | Drift 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 treatment** | n/a, this is an inventory parity count.                                                                                                                                                                                                                                                                                                                            |
| **Refunds / orders**    | n/a to the count, but drift is the upstream cause of oversell-driven cancelations and refunds.                                                                                                                                                                                                                                                                     |
| **Channels / sources**  | **This 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 / unit**     | number (count of drifting variations)                                                                                                                                                                                                                                                                                                                              |
| **Time window**         | `RT` (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.                                                                                                                                                                                                                                                                    |
| **Roles**               | owner, 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.

| Variation                           | POS on-hand | Online on-hand | Drift?  | Likely cause                                    |
| ----------------------------------- | ----------- | -------------- | ------- | ----------------------------------------------- |
| Wool throw, charcoal (SKU WT-CHR)   | 8           | 8              | No      | Unified, correctly configured                   |
| Ceramic mug, 12oz (SKU CM-12)       | 0           | 3              | **Yes** | Online still drawing from stale stockroom count |
| Candle, cedar (SKU CA-CED)          | 14          | 11             | **Yes** | Recent in-store sales not yet reflected online  |
| Tote bag, natural (SKU TB-NAT)      | 5           | 5              | No      | Unified                                         |
| Notebook, A5 (SKU NB-A5)            | 22          | -2             | **Yes** | Online 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)](/nerve-centre/kpi-cards/square-online/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

| Card                                                                                                                         | Why pair it with POS to Online Inventory Drift                                                                                                                                     |
| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Oversell Risk (Negative On-Hand Projected)](/nerve-centre/kpi-cards/square-online/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 Parity](/nerve-centre/kpi-cards/square-online/pos-vs-online-inventory-parity)                       | The 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 Products](/nerve-centre/kpi-cards/square-online/out-of-stock-products)                                         | A 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 Rate](/nerve-centre/kpi-cards/square-online/refund-rate)                                                             | Drift-driven oversells end in fulfilment fails and refunds. A drift spike often precedes a refund spike by a day or two.                                                           |
| [Canceled Orders (24h)](/nerve-centre/kpi-cards/square-online/canceled-orders-24h)                                           | Oversold orders are frequently canceled. A drift count climbing alongside a cancelation burst confirms the link.                                                                   |
| [Online-Only SKUs](/nerve-centre/kpi-cards/square-online/online-only-skus)                                                   | Online-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](https://squareup.com/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:**

| Reason                                                                                                                                                                                                                                | Direction 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:**

| Card                                                                                                                                                                    | Expected relationship                                                                            | What causes legitimate divergence                                                                                                                                             |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Marketplace listing stock (Amazon, eBay via Square Inventory vs Marketplace Listings)](/nerve-centre/kpi-cards/square-online/square-inventory-vs-marketplace-listings) | A variation drifting between POS and online will usually also drift against marketplace listings | If 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.

***

<details>
  <summary><em>Same-metric documentation cross-reference (for agencies running multiple platforms)</em></summary>

  Inventory drift between retail and web is most acute on platforms that try to unify both. The analogous cards on other platforms model POS-to-web parity differently depending on how their POS integrations sync stock.

  * [`shopify.pos_online_inventory_drift`](/nerve-centre/kpi-cards/shopify/pos-online-inventory-drift)
  * [`bigcommerce.pos_online_inventory_drift`](/nerve-centre/kpi-cards/bigcommerce/pos-online-inventory-drift)
</details>

## 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)](/nerve-centre/kpi-cards/square-online/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](/nerve-centre/kpi-cards/square-online/online-only-skus) 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
