ActualStock count it once

warehouse management for woocommerce

Know what's actually on the shelf

ActualStock runs the warehouse behind your WooCommerce store — scanning, bins, picking, receiving and stocktakes — and keeps the number in the shop matched to the stock on the floor.

Android scanners · thermal and shelf labels · two-way WooCommerce sync

bin a-01 · trd-8841
the store said 158
actually on hand 142

16 short · counted by Dan, 7:42 am · store updated

Every count keeps a name and a time against it, so the argument ends early.

01 · the problem

The number in the shop is not the number on the shelf

Stock does not go wrong all at once. A pick goes out unrecorded. A return never gets booked back in. The same item is listed twice because that is how customers search for it, and only one of the listings gets adjusted. A count happens once a year, on a Saturday, with the doors shut.

By the time anyone checks, the figure in WooCommerce is a guess with a decimal point on it.

Staff learn not to trust the numbers, and from then on the shop is run from memory.

02 · how it works

Three steps, and none of them is a switchover

Your shop keeps trading the whole way through.

  1. step 01

    Map the catalogue

    ActualStock groups your listings by the part numbers inside them and walks you through them a group at a time: confirm, skip, split a group that turns out to be two items, undo a mistake on the next screen.

  2. step 02

    Count a shelf

    Blast-scan a bay with the trigger. What you counted is what the shop shows from that moment, with your name and the time on it. Everything you have not counted yet carries on untouched.

  3. step 03

    Sell from one pool

    An order deducts once, from the bin it was picked out of, and the new level goes back to every listing that sells that item.

03 · what it does

The whole floor, not just a stock figure

Scanning on the floor

Look up, receive, count, pick, move and correct — all from an Android scanner with a hardware trigger. The barcode on the box is enough; print your own labels for whatever arrived bare.

Bins, not just quantities

Stock lives in bins — zone, aisle, bay, shelf, position — and one item can sit in several. A lookup says which shelf and how many are on it.

bin a · 01 · 3 · qty 142

Picking in walking order

The orders waiting, what to pick for each, and which bin to take it from — sequenced by the route through the racking rather than by the order they came in.

Receiving against purchase orders

Book a delivery in against the PO it belongs to. Short shipments and overs are recorded as what they are, so receiving stops being a guess and the cost comes in with the stock.

Rolling stocktakes

Count a bay at a time instead of shutting the place down for a weekend. Repeat scans add up, variances are listed with the bin and the person, and the count is a record rather than an overwrite.

Two-way WooCommerce sync

Orders arrive by webhook and deduct from the right bins, at the point the order actually holds stock — not when an abandoned checkout writes a pending row. A stock change queues one push per mapped listing.

An append-only ledger

Received, picked, sold, moved, counted, corrected, returned — every movement is written down, and nothing is ever edited or deleted. The level you see is what the history adds up to, and it can be rebuilt from that history at any time.

why does it say 3 when there are 5 here → one screen, back to day one

Supplier part numbers that stick

The number printed on the box is kept and searchable, learned from real deliveries rather than guessed from prefixes — so you can find something by what is on the carton instead of a SKU that only exists in the database.

Reports about money

Dead stock by value, not a count of slow lines. Warranty exposure on stock bought longer ago than the supplier's claim window. Sales against what the stock actually cost. Counted against advertised, at cost and at retail.

04 · in the warehouse

Built for gloved hands,
not for a phone in a café

A native Android app for rugged barcode scanners. Scanning is the hardware trigger — there is no on-screen scan button anywhere, because the operator's hands are full.

  • Look up — scan an item, see its shelf, its stock and its part numbers
  • Receive — book a delivery in against a purchase order
  • Count — blast-scan a shelf; repeat scans add up
  • Pick — the orders waiting, what to pick, which bin, in route order
  • Move and correct — from the item you are already holding

It stays signed in between shifts. Asking a picker to type an email address and a password on a four-inch screen in a cold aisle is how a system gets abandoned.

pull the trigger · no on-screen button to find

05 · one pool, many listings

One item listed three times is still one box

Shops list the same physical item more than once — under a second category, a trade title, a brand name, a duplicate that came in with an import.

WooCommerce then tracks a separate stock figure for each of them, and nothing keeps those figures honest. One sells, the others still say in stock, and the shelf is empty.

ActualStock puts one stock pool behind every listing for an item. A sale on any of them deducts once, and the new level is pushed back to all of them. The figures stop drifting because there is only one figure.

trd-8841 · three listings

what the store tracks today

  • listing #44717
  • listing #51200
  • listing #603322
one pool, on the shelf 142

sell on any listing · deduct once · all three updated

aisle a

  • a-01 · countedlive · pushing
  • a-02 · countedlive · pushing
  • a-03 · not countedunchanged
  • a-04 · not countedunchanged

the shop keeps trading either way

06 · going live

Go live one shelf at a time

The frightening part of any stock system is the day you turn it on. ActualStock does not have that day.

An item starts talking to the shop when somebody counts it, and nothing else does. Count a shelf, and those items go live: their levels push, their sales deduct. Everything uncounted carries on exactly as it did.

There is no moment where a system with no numbers in it overwrites a shop that is trading.

07 · what makes it different

It assumes the data is messy, because it is

Honest about what it does not know

A margin drawn from one costed receipt in ten says so. A dead-stock figure that is a minimum is labelled a minimum. A part number that could mean two different items resolves to neither, and asks. Most systems present every number with the same confidence, which is how people end up trusting the wrong one.

Nothing is deleted

Soft deletes, an append-only ledger, and an undo on the screens where mistakes get made at speed. The history is the record; the current number is only what the history adds up to.

A name and a time on everything

Who counted it, who picked it, who corrected it and when. When a number changes you can see what happened instead of guessing, and the argument about the shelf ends early.

08 · who it is for

A real warehouse behind a WooCommerce shop

Built for

  • Trade suppliers, spares, parts and consumables — anything where one item ends up listed more than once.
  • A few thousand SKUs, physical shelves, people picking orders.
  • Shops where receiving, picking and counting all happen in the same building as the stock.
  • Somebody who already knows their stock numbers are wrong and has been putting off doing something about it.

Not for

  • Dropshippers.
  • Print-on-demand.
  • Shops with no warehouse — there is nothing for it to count.

09 · what it runs on

What you need on your side

No middleware subscription, no connector marketplace, nothing to install on the shop floor but the app.

your store
WooCommerce on WordPress, with the REST API and webhooks enabled. A plugin puts the bin and the quantity into the products list and the product edit screen, so admin staff never have to learn a second system.
scanners
Rugged Android barcode scanners with a hardware trigger. The app stays signed in between shifts.
labels
A thermal printer for product labels, and a continuous roll for shelf labels. Both print barcoded and scan back.
your racking
Bins named by zone, aisle, bay, shelf and position. If the shelves are not labelled yet, that is the first afternoon's work.

10 · pricing

One price, everything in it

No modules, no per-seat maths, no quote. If you want to know what it costs, it is on this page, which is where prices go.

$500 USD / month

Card payment is not switched on yet, so the first accounts are set up by hand. Same price, same everything in it.

What that covers

  • One WooCommerce store
  • Unlimited scanners
  • Unlimited users
  • Unlimited SKUs
  • Every feature; no modules to add on

No setup fee, no minimum term.

11 · talk to us

If your numbers are wrong and you know it, that is the conversation

Tell us roughly how many SKUs you carry, how many listings sit on top of them, and what your shelves look like. We will tell you plainly whether ActualStock suits the way you work.

or email hello@actualstock.app

No newsletter, no drip sequence. A reply from someone who knows the system.