Items with present_at_all_locations = false AND ecom_visibility = VISIBLE. The online-only complement to your retail catalog.
At a glance
A real-time count of catalog items that are published to Square Online (ecom_visibility = VISIBLE) but are not present at every location (present_at_all_locations = false). These are your deliberately web-only products: items you sell online but do not stock on the shop floor, drop-ship lines, web exclusives, oversized items, or made-to-order goods. The count is the size of your online-only catalog complement, the part of your assortment that exists for the website and not the till.
| What it counts | COUNT(items WHERE present_at_all_locations = false AND ecom_visibility = VISIBLE). Both conditions must hold: published online AND not stocked everywhere. |
| The two Square fields | present_at_all_locations is a catalog flag controlling which locations an item exists at; false means it is restricted to a subset (often a web fulfilment location only). ecom_visibility is the storefront visibility enum (VISIBLE, HIDDEN, UNINDEXED, UNAVAILABLE); VISIBLE means it shows and sells on Square Online. |
| VAT / tax treatment | n/a, this is a catalog-composition count. |
| Refunds / orders | n/a. This is a catalog state count, not order-based. |
| Channels / sources | This is the web-exclusive slice of the catalog. It is the intentional inverse of items sellable at POS but not online. Together they describe how your assortment is split across retail and web. |
| Currency / unit | number (count of online-only items) |
| Time window | RT (real-time, polled from the Square Catalog API every 5-15 minutes) |
| Alert trigger | none. This is a catalog-composition card, not a threshold alarm. |
| 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 home and garden merchant on Square: two retail stores plus a Square Online storefront that ships nationwide. Catalog of 2,100 active items. Snapshot taken on 12 Apr 26 at 14:00 UTC.| Catalog segment | Items | Notes |
|---|---|---|
| Active catalog items | 2,100 | All non-archived items |
| Present at all locations AND visible online | 1,460 | The shared core, sold in-store and online |
present_at_all_locations = false AND ecom_visibility = VISIBLE (this card) | 380 | Online-only complement |
Present at all locations but ecom_visibility = HIDDEN | 210 | In-store only, deliberately not online |
present_at_all_locations = false AND not visible online | 50 | Restricted and not on the web, e.g. staging |
- Online-only is a deliberate assortment strategy, not an error. The 380 web-only items are likely oversized or drop-ship goods (garden furniture, large planters) that do not fit the shop floor but ship fine, plus web exclusives. A healthy count here is a sign of a mature omnichannel assortment, not a problem. That is why the card has no alert: more or fewer online-only items is a merchandising decision.
- The two flags must both be checked, and one alone misleads. An item with
present_at_all_locations = falsebutecom_visibility = HIDDENis restricted AND not on the web, it is not online-only, it is nowhere customer-facing (the 50-item staging bucket). Only the items that are both location-restricted and visible online belong on this card. Readingpresent_at_all_locationsalone would overcount. - Online-only items still need inventory discipline. Because they are not at every location, their stock is held at a web fulfilment location and must be tracked there. An online-only item with no SKU or with inventory tracking off is an oversell waiting to happen, the website will keep selling it. Pair with Items Missing SKU to make sure the web-only catalog is properly identified.
Sibling cards merchants should reference together
| Card | Why pair it with Online-Only SKUs |
|---|---|
| Items POS-Sellable but Not Online-Visible | The exact mirror image. This card is web-only; that card is store-only. Together they map how your assortment splits across channels. |
| POS to Online Inventory Drift | Online-only items are correctly absent from POS, so they should never count as drift. Useful to confirm a flagged drift case is a misconfiguration, not a deliberate web-only item. |
| Items Missing SKU | Online-only items still need SKUs for inventory and reordering. A SKU-less web-only item is an oversell risk. |
| Total Catalog Items | The denominator. Online-only as a share of the catalog describes how web-weighted your assortment is. |
| Revenue from POS-Only Items | The revenue mirror on the retail side. Comparing online-only count with POS-only revenue shows where each channel’s exclusive assortment pulls its weight. |
| Out-of-Stock Products | Online-only items that go OOS hit the web channel directly with no in-store fallback, so their stock-outs are higher-stakes. |
Reconciling against Square
Where to look in the Square Dashboard: Square Dashboard, Items, Item library, plus the Square Online site editor. In the item editor, an online-only item shows Site visibility = Visible while its Locations setting is restricted to a subset rather than “All locations”. To audit at scale, export the catalog to CSV and filter for items where the all-locations flag is off and the online visibility is set to visible. Other Square Dashboard views that look like the same number but aren’t:- Square Online, Items, Visible: counts everything visible on the web, including items present at all locations. You also need the location-restriction condition to isolate online-only.
- Items, Item library, Locations filter: shows items restricted to a location set, but does not filter by online visibility, so it includes restricted items that are hidden online too.
- Items, item editor, single item: shows both flags for one item at a time, the place to fix, not to count.
| Reason | Direction of divergence |
|---|---|
Both conditions required. We require present_at_all_locations = false AND ecom_visibility = VISIBLE. A dashboard view filtered on only one flag will report a different, larger set. | Vortex IQ lower than a single-flag view |
Visibility enum nuance. Square’s ecom_visibility has four states (VISIBLE, HIDDEN, UNINDEXED, UNAVAILABLE). Only VISIBLE counts here; UNINDEXED (sellable by direct link but not in nav) is excluded. | Vortex IQ excludes UNINDEXED items |
| Item vs variation. This card counts at the item level for catalog composition; SKU-related cards count at the variation level. | Different granularity from SKU cards |
| Archived items. Archived items are excluded here. | Vortex IQ lower than a full export |
| Sync lag. The most recent ~5 minutes of catalog edits may not be in our index. | Self-resolves within minutes |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_analytics product views | Online-only items should generate web product views; POS-only items never do | GA4 sees only the web storefront, so online-only items appear in its product reporting while store-only items do not. A web-only item with zero GA4 views may be buried in navigation (check it is VISIBLE, not UNINDEXED). |
present_at_all_locations) from whether it shows online (ecom_visibility). That separation is what makes a clean online-only catalog possible, you can stock an item only at a web fulfilment location and still publish it to the storefront. This card is the intersection of those two flags, which is why reading either flag alone gives the wrong number.
Known limitations / merchant FAQs
What makes an item “online-only” in Square terms? Two conditions together:present_at_all_locations = false (the item is restricted to a subset of locations rather than stocked everywhere) AND ecom_visibility = VISIBLE (it is published and sellable on Square Online). An item meeting both is sold on the web but not carried on every shop floor, the deliberate web-only complement to your retail assortment.
Why do I need both flags? Isn’t one enough?
No, and reading one alone is the most common mistake. An item with present_at_all_locations = false but hidden online is restricted AND off the web, it is not online-only, it is nowhere customer-facing. An item visible online but present at all locations is part of the shared core, sold in-store too. Only the intersection (restricted location set plus visible online) is genuinely online-only.
Is a high online-only count a problem?
No, which is why there is no alert. The count reflects a merchandising decision: how much of your assortment is web-exclusive (oversized goods, drop-ship lines, web exclusives, made-to-order). A growing online-only catalog often signals a maturing omnichannel strategy. Watch the trend for unexpected jumps (a bulk import that wrongly restricted items), but there is no universally good or bad level.
Do online-only items still need SKUs and inventory tracking?
Yes, arguably more than shared items. Because an online-only item is sold without an in-store fallback, an inventory error goes straight to a web oversell with no shop floor to catch it. Make sure online-only items have SKUs (Items Missing SKU) and tracked stock at their fulfilment location, or the website will keep selling stock that is not there.
What about UNINDEXED items, do they count?
No. Square’s ecom_visibility enum has four states: VISIBLE, HIDDEN, UNINDEXED, and UNAVAILABLE. Only VISIBLE counts here. UNINDEXED items are sellable by direct link but hidden from site navigation and search, a deliberately limited-exposure state, not a fully published online-only item. If a web-only item you expect to see is missing from this card, check it is VISIBLE and not UNINDEXED.
Should an online-only item ever show up as inventory drift?
No. An online-only item is correctly absent from POS, so its “not at POS” state is by design, not a mismatch. If an online-only item is appearing on POS to Online Inventory Drift, it is likely misconfigured, recheck its present_at_all_locations and ecom_visibility settings to confirm it is genuinely meant to be web-only.