Handcount
Running a stocktake with Handcount
The whole path, in order: from creating a count to writing it into your stock — including what happens when stock moves mid-count, when the signal drops, and when you need it all put back.
Install HandcountHandcount is two halves. One is a page in your Shopify admin, where a count is created, watched and applied. The other is a link — the people counting open it on their own phones, install nothing, and never sign in to your store.
Nothing reaches your inventory until you press Apply. Everything before that is a list of numbers sitting next to Shopify's, which is what makes it safe to leave a count open all day, or to abandon one halfway and start again.
- 1
Create the count
Stock counts is the app's home page: every count you have ever made, with its location, when it started, how many items it covers and how many scans have come in. A badge on the row says where it got to — in progress, applied, or cancelled — and flags the two things worth knowing at a glance: how many lines disagree with Shopify, and how many are unresolved conflicts. New count starts one.
Every count, with where it got to First, the location. A count belongs to exactly one, and every quantity it writes goes to that one. On the single-location plan you pick from the locations you have and count one of them; the multiple-locations plan lets you run counts on any number of them, including several at the same time.
Then the scope, which is optional. Limit to vendor and Limit to product type narrow the count to part of the catalogue — for walking one supplier's shelf, or the jackets, rather than the whole room. Left as Everything, the count covers every item stocked at that location.
Then the one setting that changes what Apply does. Leave unchanged updates only the items somebody counted, and everything nobody scanned keeps the quantity Shopify already holds. Set to zero treats anything unscanned as out of stock — that is a full count, and it is how a stockroom is emptied and re-counted honestly.
A full count sets every uncounted item to zero. On a location holding 160 items where 8 were counted, that is 152 items going to zero. The app names the number before it writes anything, but this is the one setting worth reading twice.
Creating a count: location, scope, and what to do with anything nobody scans Reason recorded in Shopify is what Shopify files against every change this count makes. It defaults to Stock count, and the others are the ones Shopify itself offers: correction, shrinkage, damaged, quality control, restock. Whatever you choose shows up later in each item's inventory history, so a year from now the adjustment says why it happened.
A name and a note are both optional. The name is only there to tell counts apart in the list — Monday warehouse count reads better than a date. The note stays with the count and is not sent to Shopify, which has no field for one.
Creating the count takes a snapshot of what Shopify holds right then. That snapshot is the At count start column you will see later, and it is what the counted numbers are compared against — so anything that sells after this moment shows up as a difference rather than being quietly absorbed.
- 2
Share the link
A new count comes with one link and a QR code beside it. Everyone who opens it counts into the same session, and their scans appear in your admin within seconds. There is no app to install, no Shopify account to issue, and nothing to set up on the device — which is the point: the people who count are usually not the people with admin access.
The counting link and its QR code, in the admin Copy link puts it on the clipboard for a message; Open loads it in a new tab, which is the quickest way to check it yourself. Under the link, Counting now lists the people whose phones are in the session at this moment, by the name they typed.
The first screen asks for a name and nothing else. That name goes on every line that person counts, which is how you answer "who counted this" a week later — and it is all the app ever knows about them. After Start counting the phone downloads the catalogue for that location, which takes a few seconds and is what lets it work later without a signal.
What the person on the floor opens The catalogue downloading to the device Change link issues a new one and kills the old. Use it when the link went somewhere it should not have — a group chat, an ex-employee — and not for tidying up.
Changing the link stops the old one immediately. Anyone counting on it is locked out on their next tap, and whatever their phone has not sent yet can no longer be sent — those scans are lost. Everything already received is kept.
Cancelling a count is the other way out. It closes the count and stops the link accepting scans, keeps everything counted so far so the page can still be read, and writes nothing to Shopify. A cancelled count cannot be reopened; if you need to carry on, create a new one.
- 3
Count from a phone
The counting screen is the whole app for the person on the floor. At the top, the location and how far the count has got; in the middle, one field; underneath, everything counted so far, newest first.
The counting screen, before the first scan A scan counted, with the running total The field takes three things: a barcode, a SKU, or part of a product name. A Bluetooth scanner is simply a keyboard as far as the phone is concerned — it types the barcode into the field and presses enter, so no pairing beyond the phone's own Bluetooth settings is needed. Typing works the same way, which matters for the item whose label has been rubbed off.
Each scan adds one. A stocktake counts units rather than scans, so scanning the same box twice is how the second one gets recorded — the number goes to two, and a toast confirms which item it landed on and what its running total is.
For a shelf with no scanner at hand, Use camera turns the phone into one: point it at a barcode and it is read and counted, with the phone staying in camera mode so a row of items can be walked without looking up. For a shelf of forty identical items, the scanning mode can be switched to ask for a quantity instead — scan one, type 40, done.
The camera as a scanner Scan one, type the quantity Both modes live in the phone's own settings, along with whether a scan should count immediately or wait for confirmation. They are per-device: the person on the ladder can work one way while the person at the bench works the other.
A code the count does not contain is refused, and the screen says so plainly rather than silently doing nothing. That normally means one of three things: the item is not stocked at this location, the count was narrowed to a vendor or type that excludes it, or the barcode is not in Shopify at all. Tapping any counted line opens that item, where the quantity can be adjusted up or down, a note left, or the line removed.
A code this count does not contain One item: adjust it, note it, or remove it Removing a line is not the same as counting zero. A removed line goes back to never having been counted, which on a cycle count means Shopify's number stands; counting it as zero says the shelf is empty. The app asks which you meant before it removes anything.
With no signal, counting carries on. The catalogue is already on the device, and each scan is written there first — the screen says how many are waiting. When the connection returns they go up on their own, oldest first, and the banner turns back to synced.
No signal: scans wait on the phone The connection is back and everything has gone up The phone keeps its copy for as long as the count is open, and erases it when the count closes or thirty days after that phone last opened it. Nothing else about the person is stored: no account, no contact details, only the name they typed and the scans they made.
Twelve languages, picked per device The counting screen speaks twelve languages and follows the phone's own setting, so a shop with a mixed floor needs no arrangement — each person opens the same link and reads it in their own language. It can also be picked by hand in settings.
A link that has been replaced If the link has been replaced or the count has been cancelled, the phone says so instead of failing silently. Scans that were already delivered are safe; anything still waiting on that device cannot be sent, and the person needs the new link to carry on.
Several people count one location at the same time, each seeing the running total the others are building. There is no assignment and no locking — two people scanning the same shelf simply produce a total that is too high, which is what the discrepancy column is for.
- 4
Watch it fill in
In the admin, the table is what the shelf says against what Shopify holds. At count start is the quantity when the count was created, Counted is what came in from the phones, Difference is the gap between them, and Counted by is who scanned it. Above the table, five tiles keep the shape of the whole thing in view: items, counted, discrepancies, not counted, scans.
Was, counted, the difference, and who counted it The tabs narrow the table without changing it. Discrepancies is where the work is — the lines where the shelf and Shopify disagree. Matched is everything that came out right. Counted, Not counted and All are the obvious three, and With notes collects the lines somebody flagged.
Search takes a product name, a SKU or a barcode, so a question from the floor — "what did we get for the olive shirt?" — is one field away from an answer.
Counted by filters to one person or several. On a count worked by three people it is a convenience; on a count worked by thirty-four it is the only practical way to find a row, and the filter has its own search and a select-all for that reason.
Counted by, on a count several people worked Add an item covers what the phones missed entirely: the box found in the stockroom after everyone had gone home, or an item that is stocked at this location but was never scanned. It searches the same catalogue the phones use and adds a counted line as though it had been scanned in the admin.
Adding an item nobody scanned Notes work in both directions. Anyone counting can leave one from their phone — a crushed box, an aisle behind a pallet — and you can leave one from here, against one item or against the count as a whole. Everyone counting sees them, and each note can be ticked off once it has been dealt with.
A note against one item, from the admin None of this has touched your stock. The count holds its own numbers until you apply it: closing the page, coming back tomorrow, or filtering the table changes nothing in Shopify.
Nothing on this page has been written to your inventory yet. Until Apply is pressed, Shopify still holds exactly what it held when the count started.
- 5
Stock that moved while you counted
A conflict is an item whose quantity in Shopify changed after the count reached it. A sale, a return, another app doing its work — whatever the cause, the number the count was compared against is no longer the number Shopify holds, so writing the counted figure over it would erase whatever happened in between. Handcount does not do that. It writes every line it safely can and holds the rest back.
The result appears as a banner on the count: how many items were updated, how many were already correct, and how many are conflicts. That banner is also where the way out is, so nothing needs hunting for.
What the apply wrote, and what it held back Resolve conflicts opens them one by one. Each line shows the quantity at count start, the quantity Shopify holds now, and the counted figure, and offers three answers. Keep Shopify's number leaves it alone and stops it being a conflict. Write the scanned number puts the counted figure over what Shopify holds now. Write another number takes a figure you type, for when neither is right and somebody has been back to look.
Three answers per line, and nothing written until you choose An item that has stopped being stocked at this location while the count ran gets a fourth case of its own: there is no quantity to write, so the only sensible answer is to leave it alone.
Anything you do not decide stays a conflict. The app does not guess, and it does not quietly pick the counted number because that is what you probably meant.
Conflicts can be settled before applying or after. Before, the same screen opens from the apply confirmation; after, the count carries a Not applied table with the reason on every line and a write button on each, so a single stubborn item can be settled without touching the rest.
What did not get written, with the reason on every line - 6
Apply it
Apply writes the counted quantities to the location the count was created for. Before it does, it re-reads Shopify and tells you what has changed since the count started, so the confirmation is about the store as it is now rather than as it was this morning.
On a full count the confirmation also names how many uncounted items are about to be set to zero, and how many items it is leaving alone. Those two numbers are the difference between a full count and a cycle count, stated at the last moment where it can still be stopped.
Each change is recorded with the reason you picked when the count was created, so it appears in that item's inventory history in Shopify like any other adjustment — the same place a manual correction would show up, with the same audit trail.
Afterwards the count keeps the result. Updated in Shopify lists every line that was written, with its before and after and the difference; Not applied lists anything held back. Both stay on the page, which makes the count its own record of what happened.
What the apply wrote, line by line - 7
Undo the apply
Undo this apply puts the quantities back to what they were before. It works line by line, and only where Shopify still holds the number this apply wrote — so anything that has sold since the apply is left exactly as it is rather than being overwritten a second time.
Applied, with the way back on the same row That means an undo can come back partly done, and when it does it stays available: press it again and it walks only the lines that have not gone back yet. The button disappears once every line has been returned.
Items that were reported as conflicts were never written in the first place, so the undo does not touch them either — they stay as they are.
Shopify records the reversal as a correction rather than as another stock count, which keeps the item's history readable: one count that was taken, and one correction that took it back, instead of two counts that appear to disagree.
- 8
Compare counts
Compare with an earlier count sits on the count page and on its own. Pick a location, then two or more of its applied counts — only applied ones appear, because a count that was never written has no result to compare.
Choosing which counts to put side by side The comparison is one row per item and one column per count, with a change column showing the movement from the first to the last. Search narrows it by name, SKU or quantity.
One row per item, one column per count It is the view that turns single counts into a pattern. One count tells you today's number; four of them tell you which SKU is short every month, and that is not a miscount — it is something happening in the shop.
Counts stay in the list as long as the app is installed, so the comparison gets more useful the longer you have been counting.
- 9
What each plan gives you
Single location is $19 a month: one location, up to five phones counting at once, and no limit on items or on how many counts you run.
Multiple locations is $49 a month: any number of locations and any number of phones, with the same absence of limits on items and counts.
Neither plan is priced by catalogue size, so the bill does not change because the shop grew. Both start with a 14-day free trial, and the app tells you how many days are left on every page of the admin while it runs.
The two plans and what each one covers
That is the whole path. The demo runs the counting half on a real store, with barcodes on the page to scan — or install it and create a count in your own admin.
Something to tell us?
A bug that got in your way, a feature that ought to exist, or a question the pages here did not answer.