Half your shop
has sizes.
Half of it doesn't.
A rack of jerseys is thirty variations. The bat beside it is one line with a weight on the label. Most systems make you choose which kind of shop you are and then fight you on the other half.
Two shops
under one roof.
The football boots need a size run. The goalposts need a delivery date and a note about who is collecting them. The protein tubs go off. The rackets come in three grip sizes that are not sizes in any sense the software understands. By March you are holding last season's colourway in the sizes nobody wanted, and the only thing that told you was the markdown rail.
What stops happening
- Entering a size run one variation at a time, then a single-line item, then a size run again
- Kit that is ordered for a customer sitting in stock with nothing saying who it is for
- Season stock and all-year stock counted as though they behave the same
- Protein and supplements going out of date at the back of a shelf
- A cashier hunting for the right grip size with a queue behind
Fashion &
footwear.
Sporting goods is a fashion shop with a hardware shop inside it, so this is the profile that turns on the part you cannot do by hand. Everything it adds is for variations; nothing it adds gets in the way of a product that has none.
You choose · Fashion & footwear
The size matrix on purchase orders
Sizes across the top, colours down the side. A jersey run is one grid instead of thirty lines — and a bat is still just a bat on the row below it.
Variant badges at the till
Size and colour on the tile itself. The cashier taps the badge rather than reading a dropdown with a customer waiting.
Expiry, where you need it
Supplements and drinks carry dates. Expiry tracking is not part of this profile by default, but it can be switched on for the lines that need it without turning your whole shop into a grocery.
Anything the choice leaves out is hidden, not removed. You are not locked out of a thing by picking wrong at setup — a clothes shop simply is not shown expiry dates it will never use, and a grocery is not shown a size matrix. Change your mind and it is all still there.
What actually
helps here.
The size curve, visible as you order
Because a run is entered as one grid, the shape of the order is in front of you while you type it. Ordering heavier through the middle sizes stops being a thing you have to remember.
Stock takes that survive a rail
Count a rail of forty variants against a figure already on screen, on a phone, without a clipboard. Partial counts are saved as you go, so a count interrupted by a customer is not a count lost.
One figure across shop and website
The last medium is one medium. It cannot be sold in the shop and on the site at the same time, because both are reading the same number.
The size matrix, stock takes and multi-outlet stock are in the free plugin. Transfers between outlets and stock valuation are in the paid one.
What we
do not do.
Read this before you buy rather than after. Sporting goods carries two things this plugin has no answer for, and neither is on the roadmap.
No serial numbers
Bikes, firearms and anything else you must track by individual unit are not supported. Stock is counted by quantity, not by identity — there is nowhere to record that unit 4471 went to a named customer. If your trade requires a serial register, this is the wrong product and no setting changes that.
No custom orders or deposits
Kit ordered in for a customer, part-paid and collected later, has no first-class place here. You can record it as a normal order and take a payment against it, but there is no deposit ledger and nothing chases the balance.
No hire or rental
Skis out for a weekend, a machine on loan — anything that leaves and comes back is not modelled. Stock that goes out is sold.
We would rather lose the sale here than in week one.
For this trade.
Can I mix sized and unsized products?
Does it handle grip sizes and weights?
Can I track expiry on supplements?
What about club and team orders?
Order the run.
Sell the bat.
Both halves of a sports shop, in one till and one stockroom, without pretending either one is the other.