If you want the short version: open Shopify POS on the device tied to the location you're counting, go to stock counts, create either a cycle count (a subset of SKUs you pick) or a full count (everything at that location), scan or key in what's actually on the shelf, then submit it. Nothing moves yet. The count sits as a draft until someone approves it in Shopify admin, and only then does the adjustment post to that location's on-hand. If that location is published to your online store, the corrected number reaches your product pages within seconds of approval. That approval step is the whole point of the feature, and it's what makes a Shopify POS stock count safe to hand to a seasonal hire.
Stock counts arrived in POS at the end of September 2026, which gave Canadian merchants a clear run at Black Friday and then Boxing Week. If you haven't used them yet, Boxing Day is the wrong week to learn. Start in November.
Cycle count vs full stock count: what each one is actually for
A full count is a freeze. Everything at the location, counted once, ideally with the till closed and no receiving happening. It's honest and it's slow. For a 1,800-SKU apparel store, plan on a closed evening and three or four people.
A cycle count is a rolling subset. You pick 40 to 120 SKUs, count them in twenty minutes before open, and move on. You never freeze the store. Over six weeks of weekly cycle counts you'll have touched every SKU that matters and ignored the long tail that doesn't.
The trade-off is coverage versus disruption. Full counts give you a clean baseline but you can only afford one or two a year. Cycle counts give you accuracy where it earns money, and they quietly tell you why you're drifting, because the same categories keep showing variance. Our usual advice to retail-plus-online brands: one full count in early November, then weekly cycle counts through to the first week of January. Not the other way round.
Which SKUs to cycle count weekly before Boxing Day
Don't count alphabetically. Count by risk of oversell, which is a different list from your bestsellers.
- Every SKU with on-hand between 1 and 3. This is where oversells live. A SKU showing 1 that's actually 0 will sell within a day during Boxing Week.
- Anything negative. Negative on-hand is a receiving or returns error that already happened, and it masks a second error underneath.
- Your top 40 by units sold in the last 28 days, pulled fresh each Monday. Velocity changes in December.
- Everything in the Boxing Day promo set, counted the night before the price change goes live.
- Size-run apparel and footwear. Returns, try-ons and wrong-bag mistakes make these the highest-variance category in almost every store we audit.
- Components of bundles and multipacks, if you build bundles from individual SKUs rather than as their own inventory item.
- Small, high-value items near the till. Sunglasses, chargers, silver chains, cosmetics. Shrink is real and counting is how you find out.
Skip the slow movers entirely. If a SKU has sold four units since July, an inaccurate record on it costs you nothing in December.
What an oversell actually costs
Run your own numbers, but here's the shape of it. Say you have 1,900 active SKUs and your last full count found 6% of them off. That's 114 SKUs with a wrong record. In most stores roughly two thirds of errors are overstatements, where the system thinks there's more than the shelf holds, so call it 76 SKUs that can oversell. During Boxing Week, assume one in four of those gets ordered: 19 cancelled or short-shipped orders.
At an average order of CAD 92 and 55% gross margin, each one costs about $50.60 in lost contribution. That's $961. Add the 15% apology code you'll send to keep the customer, $13.80 a head, another $262. You're at roughly $1,220 before anyone has written a support email.
Six weeks of weekly cycle counts at four staff-hours a week is 24 hours. At $20/hour that's $480. The arithmetic isn't close. And the part you can't put a dollar on is a customer who bought a gift on 26 December and got a cancellation notice on the 28th.
Approving stock counts in Shopify admin is the control
Counting and adjusting should never be the same permission. Let floor staff count. Let one person approve. In admin you see counted quantity against expected quantity per SKU, with the variance, and you approve the count to write the adjustment. Anything with a large gap gets recounted before approval, not after.
Two things we get wrong on the first pass more often than we'd like. The first is counting while the store is trading, so a SKU sells between the scan and the approval and the variance you're staring at is a phantom. Either count before open, or re-scan the movers right before you approve. The second is approving a count that includes items physically in the store but assigned to a different location in Shopify, usually online orders waiting on a pickup shelf. Those are not your stock. Pull them off the shelf and into a clearly marked bin before anyone starts scanning.
Give approval to two people, not one. If your store manager is off on 26 December and the counts pile up unapproved, your online availability stays wrong all through the busiest trading day of the retail year.
How approved counts reach online availability
Inventory in Shopify is held per location. Your online store draws from whichever locations are published to the Online Store sales channel, and the product page shows the sum of available across those locations, minus anything committed to unfulfilled orders. So the moment you approve a count at the retail location, if that location is published online, the storefront number changes.
That's the behaviour you want, and it's also the one that surprises people. If you correct a SKU from 4 down to 0, it goes out of stock online immediately. If you correct it up, it reappears. There is no delay and no review stage between POS and the product page beyond the approval itself.
Which is why the question of whether to publish the retail location online is the real decision. If your store ships online orders or fulfils local pickup, you have to publish it. If the store exists purely for walk-in trade and all shipping goes out of a warehouse or 3PL, unpublish it and your store shelf stops being an oversell risk for the website entirely. A lot of brands publish the store location by reflex and never revisit it.
Buffers, and the "continue selling when out of stock" trap
Shopify has a per-variant setting that lets an item keep selling after available hits zero. It's useful for made-to-order and preorder. It is a disaster on a retail SKU during Boxing Week, and it gets switched on by accident constantly, usually by a CSV import where the column was left populated or by a migration that carried the flag across from another platform.
Audit it now. Filter your variants for the ones still set to continue selling and turn it off on everything that isn't genuinely made to order. If you've migrated recently, assume it's wrong until you've checked. We see this on nearly every store that came across from another platform.
Shopify has no native safety-stock field, so a buffer has to be constructed. Three ways that work:
- A hold location. Create a location called something like "Store Display" that isn't published to the online store, and move one or two units of your highest-risk SKUs into it. Online sees the rest. The units are still sellable in POS because POS sells from the location the device is assigned to, so you keep floor availability without exposing the last unit to the website.
- Low-stock thresholds tied to velocity, not a flat number. A threshold of 5 means nothing. If a SKU sells 14 units a week in December, your alert needs to fire at 14, not 5.
- Turning off the last unit. For SKUs where a cancellation is expensive, treat 1 as 0 online. Crude, and it costs you a sale. It costs less than the refund and the review.
Shopify does hold inventory briefly once a customer reaches checkout, but that window is short and it only protects against two people racing for the same unit. It does nothing about a record that was wrong before either of them arrived. With Shop Pay adoption as high as it is here, the gap between add-to-cart and paid order has collapsed to a few seconds for returning customers, so more buyers hit that last unit at once than you'd expect from your traffic numbers.
Multi-location accuracy when the store is also your fallback carrier plan
Canada Post disruptions have pushed a lot of brands into ship-from-store and local pickup as a backup. That decision moves your online fulfilment onto a shop floor where customers pick things up, put them down in the wrong place and buy them. Store counting stops being a retail housekeeping task and becomes an online fulfilment dependency.
If you're running two or more locations, three habits fix most of the drift:
- Count locations on the same day, not staggered across a week. Stock in transit between a warehouse and a store gets counted twice or not at all when counts are days apart.
- Receive transfers the day they land, before the boxes get unpacked onto the floor. An unreceived transfer sitting on a shelf is the single most common cause of a store showing zero while the shelf is full.
- Restock returns to a location deliberately. Christmas gift returns start on 26 December and run for two weeks. Every one of them is an inventory movement, and if the staff member processing the refund doesn't tick restock, your count on the 29th will tell you the truth and nobody will know why.
One Quebec-specific note, because it bites on inventory rather than on language. Bilingual catalogues should be built with Shopify's translation layer, where one product carries both French and English content. Some merchants instead duplicate the product and translate the copy, which splits one physical SKU across two inventory records. Under Bill 96 you need the French storefront either way; you don't need two sets of stock numbers for the same box on the shelf. If your catalogue is structured that way, fixing it is worth doing before December, and a developer can usually re-map it in a day or two.
A counting run sheet, November to Boxing Week
- First week of November: full count at every location, store closed or before open. This is your baseline. Record the variance rate by category, because it tells you what to cycle count for the next eight weeks.
- Weekly from mid-November, Monday before open: cycle count the top 40 movers plus every SKU sitting at 1 to 3 units. Twenty to thirty minutes.
- Two days before Black Friday pricing goes live: cycle count the entire promo set. Discounted SKUs sell at five to ten times their normal rate and an error on one of them compounds fast.
- Monday 1 December: full count on your single highest-variance category only. Usually apparel sizes or small accessories.
- Weekly through December: same Monday cycle count, refreshed top-40 list.
- 24 December after close: count the Boxing Day promo set and anything you've committed to online local pickup. Approve the same night.
- 26 December, 7am: count the returns bin from the 24th, approve, open the doors.
- Daily through Boxing Week: promo SKUs only, before open, approve immediately.
None of this is heroic. It's twenty minutes a day with a scanner and someone in admin who clicks approve.
Questions we get asked
Does a POS count affect my online store immediately? On approval, yes, provided that location is published to the Online Store channel. Draft counts change nothing.
Can I count one location from a device in another store? No. The count applies to the location the POS device is assigned to. If you need a warehouse count, someone needs to count at the warehouse.
How do I keep store and online inventory in sync? They're already the same records, as long as you're not running a separate system of truth. The sync problems we're called in to fix are almost always an ERP or a 3PL app pushing stale quantities over the top of corrected ones. Check the direction of every inventory sync you have running, and make sure nothing overwrites a POS count a few minutes after you approve it.
Should I cancel an oversold order or source the unit? Source it if you can. A cancellation on a cross-border US order is messier than it looks, because duties and taxes were quoted and collected at checkout and the refund has to unwind all of it. Same for a multi-province order where the tax lines differ. Short-shipping and refunding one line is usually cleaner than killing the order.
If you want someone to look at your inventory setup before the November full count, book a free audit and we'll go through location publishing, continue-selling flags and your sync apps. Or if you'd rather have it handled, our Canadian team runs this as a pre-peak project every year.


