Why two stock counts end up selling what isnât on the shelf
A shop that sells in person and on Shopify often runs two stock counts without meaning to. The till keeps one, and Shopify keeps another. Each is right about its own sales and wrong about the otherâs, until someone copies the numbers across.
For example, a gift shop rings up sales on Square and sells online through Shopify. At 11Â am a customer buys the last blue candle at the counter. Square drops to zero, but Shopify still shows one, because nothing told it. At 3Â pm an online order comes in for that candle, and someone has to send an apology and a refund.
Selling what you donât have is only half the cost. The other half runs the opposite way. Staff stop trusting the online count and mark items sold out âto be safe,â and the website turns away sales the shelf could have filled.
The gaps usually come from the same few places:
- Sales in one system that never reach the other, or reach it hours later.
- Returns and exchanges that go back on the shelf but not back online.
- Counts typed into one system only, after a stocktake or a short delivery.
- Items on the shelf that arenât for sale: floor models, holds for a customer, damaged stock.
- The same product under two names or item codes (SKUs), so nothing can match them up.
- Bundles and gift sets sold as one item, so the pieces inside never come off the count.
First, check which setup you have
How you get to one count depends on what rings up your in-store sales. Most shops fit one of three setups.
- Shopify POS at the counter and Shopify online. You already have one count. Shopify says its POS syncs with your Shopify admin to track orders and inventory across your retail locations, online store and other sales channels. A sale or restock at the till updates the count for that location. If your numbers still drift, the cause is usually setup or offline sales, not the sync itself, and the steps below cover it.
- Another till, like Square, Clover or Lightspeed, and Shopify online. Each system keeps its own item list and its own count. To make one sale update both, you can move in-store sales to Shopify POS, add a connector app, or have a connection built.
- Stock in more than one place, or stock thatâs spoken for. A warehouse, a second shop, special orders, or items held for a delivery date. Here the true count depends on records that neither the till nor Shopify may see.
References: Shopify Help Center: Selling in person with Shopify POS (opens in a new tab) · Shopify Help Center: Tracking and adjusting Shopify POS inventory (opens in a new tab)
Option 1: ring up in-store sales on Shopify POS
If you already sell on Shopify, moving the till to Shopify POS is the simplest route to one count. Thereâs no link to break, because thereâs only one item list. When we checked in October 2026, every paid Shopify plan came with basic in-person selling. On the Basic, Grow and Advanced plans, that meant simple customer profiles and returns at the original location. POS Pro, for retail locations, cost an extra $89 a month per location, billed yearly. It adds inventory counts, purchase orders and low-stock alerts.
Shopify plans also cap locations: 2 on Starter, 10 on Basic, Grow and Advanced, and 200 on Shopify Plus, when we checked. Count the shop, back room, warehouse and any pop-up you want to track on its own.
Three things to know before you switch:
- Staff can sell below zero. Shopify says its âcontinue selling when out of stockâ setting doesnât apply to POS. Staff can keep selling when the available count reaches zero, and POS warns them first. That helps with a miscounted shelf, but each sale below zero means the count was wrong somewhere.
- Offline sales wait. Shopify POS takes cash and manual payments without internet, and card payments offline once you turn that on. Orders and inventory sync when you reconnect, and thereâs a way to force a sync if they donât. Shopify also warns that signing out or turning off the device while offline can lose those orders. Until they sync, the website doesnât know about those sales.
- Switching has its own costs: new card readers, staff training, and moving your item list and customer history. If your till works well and only the count is the problem, a connection may cost less.
References: Shopify: POS pricing (opens in a new tab) · Shopify Help Center: Setting up and managing locations (opens in a new tab) · Shopify Help Center: Setting up inventory tracking (opens in a new tab) · Shopify Help Center: Using Shopify POS offline (opens in a new tab) · Shopify Help Center: Offline checkout on Shopify POS (opens in a new tab)
Option 2: keep your till and add an inventory sync app
If staff like your till, or it does things Shopify POS doesnât, keep it and add an app that passes stock changes between the two. Shopifyâs App Store listed more than 600 apps in its inventory sync category when we checked in October 2026. Many of those link Shopify to marketplaces like Amazon or eBay, not to a till, so read each listing closely. Your tillâs own app marketplace is the other place to look.
If only a few items sell both online and in the shop, updating Shopify by hand may be enough. Shopifyâs inventory spreadsheet (CSV) import replaces on-hand counts. It skips any row whose stock changed after you exported, so a sale made in between isnât wiped out.
One example of a connector: Thrive Inventory Management, by Shopventory, lists Square, Clover and QuickBooks Online among the apps it works with. Its plans ran from $59 to $559 a month, billed monthly, with a 14-day free trial, when we checked. Another, Trunk, lists Square POS and multiple Shopify stores among the places it syncs. Its plans started at $35 a month and rose with monthly orders; bundles came on the Pro plan, from $39. So it also fits a shop that runs a second Shopify store, like one for wholesale, from the same stock room. Treat these as examples of the kind of app to compare, not picks.
Before you pay for any connector, get clear answers to these:
- Which way does it sync? Both ways, or only from one system to the other?
- How fast? The moment a sale happens, every 15Â minutes, or once an hour? A busy shop with one-of-a-kind items needs minutes, not hours.
- Does it pass each sale as a change, like âminus one,â or copy whole totals across? Changes are safer, for the reasons in the next section.
- What does it match on? Item code or barcode, and what happens to an item that exists in one system but not the other?
- Does it handle returns, exchanges, sizes and colors, and bundles made from items you also sell alone?
- Can it keep separate counts for the shop floor and a back room or warehouse?
- What happens when it fails? You want an alert, a log of each change, and a way to re-send what was missed. A link that stops quietly is worse than none, because everyone keeps trusting it.
- What does it cost at your size? Price the plan that covers your number of items, orders and locations, not the one on the banner.
References: Shopify App Store: Inventory sync apps (opens in a new tab) · Shopify Help Center: Exporting and importing inventory quantities with a CSV file (opens in a new tab) · Shopify App Store: Thrive Inventory Management by Shopventory (opens in a new tab) · Shopify App Store: Trunk â Stock Sync & Bundling (opens in a new tab)
How a connection keeps one count, and where it slips
Whether itâs an app or a custom build, every connection does the same job. It hears about a change in one system and makes the matching change in the other. Both sides can send that kind of notice. Shopify can tell another system when an order is placed, and Square can when a stock count changes.
Two rules decide whether the count stays right. First, pick one master count: the system you trust when the two disagree. For most shops, itâs the one where you do your stocktakes. Second, pass changes, not totals. âSold one, so minus oneâ is safer than âthe count is now 4.â
Shopifyâs own developer guide gives the same advice. It says to set totals only from the system that holds the true count, and to pass changes otherwise. It also warns that setting totals without first checking the current number can leave counts wrong when changes overlap. Picture a sale at the till landing a second before an overnight total from the website: one of them gets wiped out.
Square works the same way underneath. Its developer guide says the count it calculates is an estimate, built from the changes since the last physical count. So a full count on a quiet day, then changes passed one by one, beats copying totals across at closing time. If you want other jobs passed between apps too, our guide to the first jobs worth automating covers how to pick them.
References: Shopify developer docs: Webhook topics (opens in a new tab) · Square Developer: Handle inventory event notifications (opens in a new tab) · Shopify developer docs: inventorySetQuantities (opens in a new tab) · Square Developer: Inventory API (opens in a new tab)
How to sync Shopify and in-store inventory, step by step
Whichever option you pick, the setup is much the same. Give it a slow week, and do the full count on a day youâre closed.
- List every place stock sits and every place it sells: the counter, the website, the back room, a market stall, a warehouse.
- Clean up the item list. Give each size and color one item code, the same in both systems. Add barcodes where you can, so staff scan instead of type.
- Pick the master count and write it down, so nobody âfixesâ the other system by hand.
- Turn on stock tracking for every item in Shopify. Then decide whether the website may keep selling when an item hits zero. For most shops, it shouldnât.
- Mark stock that isnât for sale. Shopify splits stock on hand into available, committed (in unfulfilled orders or reserved in a draft order) and unavailable. Unavailable covers things like damaged stock, quality control and safety stock. Floor models and damaged returns belong there, not in available.
- Use safety stock as a small buffer on fast sellers, so a till sale that hasnât reached the website yet canât oversell. For an item a customer is holding, reserve it in a draft order, so Shopify counts it as committed and the website canât sell it.
- Decide which locations fill online orders. Each Shopify location has a setting for this, and itâs on by default. If the shop floor shouldnât fill web orders, turn it off there.
- Count everything on a closed day, enter it in the master count, then switch on the link.
- After that, count one shelf a week. On Shopify POS, you turn on quick count in your admin first. A quick count replaces the quantity with what was counted, so a sale between counting and submitting throws it off. On any till, count when youâre closed or quiet, and submit right away.
References: Shopify Help Center: Setting up inventory tracking (opens in a new tab) · Shopify Help Center: Understanding inventory states (opens in a new tab) · Shopify Help Center: Setting up and managing locations (opens in a new tab) · Shopify Help Center: Planning an inventory count with Shopify POS (opens in a new tab) · Shopify Help Center: Changing inventory quantities on Shopify POS (opens in a new tab)
Test it with real sales before you trust it
A demo shows tidy sample items. Your shop has sizes, bundles and the odd item with no barcode. Spend an afternoon on this list with five real items, and write down how long each change takes to show up on the other side.
- Sell one item at the till. Watch the online count drop, and time it.
- Place a real online order. Watch the tillâs count drop.
- Return an item at the counter, then exchange a size. Check both counts.
- Sell the last unit at the counter and online within a minute of each other. See what happens, and who gets told.
- Make a sale with the internet off, reconnect, and check both counts.
- Change a count by hand in each system, and see which change wins. It should be the master count.
- Find the log. You should see each change, when it happened and where it came from. In Shopify, the Inventory adjustment changes report in your admin lists changes made by hand, by apps, by transfers and by fulfilled orders, plus quick counts made on POS.
- Export the item list and counts to a spreadsheet, and open it. If you ever switch, you need your data out in one piece.
References: Shopify Help Center: Changing inventory quantities on Shopify POS (opens in a new tab) · Shopify Help Center: Inventory reports (opens in a new tab)
When one count needs more than a sync
For many shops, Shopify POS or a good connector app is enough. Having a connection built only makes sense when no app handles how your shop works, or when the count has to do more than pass sales back and forth. Simple holds may not need anything extra either: Shopify counts units reserved in a draft order as committed, so they stop showing as available.
A sync only passes along what the two systems know, though. Some stock is spoken for in ways neither one tracks:
- A furniture or lighting showroom. A sofa can be sold, part-paid and waiting for a delivery date while it still sits in the warehouse. The count should show it as taken. Our guides to special orders and deposits and booking delivery days cover those records.
- A shop that orders from vendors for customers. Items sold before they arrive need to reach the right customer when the delivery comes in, not go back on the shelf for anyone.
- A bike or appliance shop that also repairs. Parts used on a repair leave stock without a sale at the counter, and they should land on the repair invoice too.
- Someone copies the same sale between the till, Shopify and a third app, like an order book or job tracker, every week.
Reference: Shopify Help Center: Understanding inventory states (opens in a new tab)
How we connect Shopify and your shop, and what it costs
If two or more of those sound like you, the count belongs in a system that also holds those orders, holds and jobs. Our guide to choosing between an inventory app and your own system walks through that choice.
We build custom business software, plus the connections that keep it in step with the apps you keep. We connect to Shopify, Square, Stripe, QuickBooks Online, Google Calendar, and Gmail or Outlook. For any other till, we check it can connect before we quote.
These are our prices as of October 4, 2026. A focused fix, like connecting Square to Shopify so one sale updates both, is $750â$3,000 over 1ââ 2Â weeks. One business system, like special orders, deposits and delivery dates that hold stock and connect to Shopify and Square, is $6,000â$18,000 over 6ââ 10Â weeks. A full system with customers, orders, stock, delivery scheduling, invoices and payments is $18,000â$40,000 over 10ââ 16Â weeks.
Every launch includes 30Â days of fixes, and monthly care is priced in your quote. You own the code we write once itâs paid in full; hosting runs on our account, and you can take it over after payment. The first call is free, and you get a fixed price in writing within 48Â hours of it. If Shopify POS or a connector app fits your shop better, weâll tell you.
Want a system like this, built around how your business works?
See business systems & software