Shopify only knows what you tell it. Every untracked event pushes the number in your admin away from what is physically on the shelf: a return that never got restocked, a box that arrived dinged and was quietly pulled aside, a picker who grabbed the wrong variant of two near-identical products, a receiving session where 24 units were entered as 42. None of these show up anywhere. With a few thousand SKUs, even a small monthly error rate means dozens of products where Shopify's availability is simply wrong - and you have no idea which ones.
When the drift runs in the wrong direction, you oversell. The storefront says 2 in stock, the shelf has 0, and an order comes in that you cannot fulfill. Now you write the apology email, process the refund, and hope the customer does not leave a one-star review that says "they sold me something they didn't have." For a small online retailer, those reviews are disproportionately expensive - they sit on your store forever and cost you the repeat buyers your margins depend on.
So you defend yourself, and the defense costs money too. You pad safety stock, listing fewer units than the system shows so an error cannot become an oversell - which means turning away sales on stock you actually have. Meanwhile the drift also runs the other direction: products listed as sold out with units sitting right there on the shelf. That is dead capital, invisible to your storefront and to you, quietly accumulating in every aisle.
The obvious fix - just count the shelves - does not survive contact with Shopify's admin. Counting with a clipboard and then updating products one at a time means searching for each product, opening the variant, clicking into inventory, typing the number, and saving. At 30-60 seconds per SKU, a 2,000-SKU catalog is a 20-hour data entry job, so it never happens. Shopify does support bulk inventory updates via CSV import, but filling that CSV by hand from paper count sheets just reintroduces the transcription errors you were trying to eliminate.