The 2019 the website is still selling
A customer orders a Barolo online because the page says 2019 and quotes a critic's glowing note on that vintage. The picker takes a bottle from the rack. It is the 2020, which arrived last month. The customer notices, as fine wine buyers always do, and emails to ask whether she can have the vintage she paid for.
The same thing happens on the shop floor. The shelf talker still says 2019, the tasting note describes the 2019, and the price was never changed when the 2020 came in at a higher cost.
Vintage is data, not decoration
Most EPOS and web shop setups were built for products that do not change year to year. A wine merchant's range does, constantly. When vintage is stored as part of the product name, or not at all, there is no way to hold two vintages of the same wine at once, and no trigger for anything to change when one runs out.
- The new vintage is booked into stock under the old product.
- The product name is edited by hand, if someone remembers.
- Critic notes and scores are attached to the product, not the vintage.
- The cost of the new vintage is different but the selling price stays.
- For a while you hold both, and the systems cannot tell them apart.
What mismatched vintages cost
At the fine end, a wrong vintage is a real complaint and sometimes a return, because vintages differ in price and reputation. At the everyday end, the damage is slower: margin lost on a new vintage sold at last year's price, and a steady trickle of customers noticing that the notes do not match the bottle. Staff spend time on fixing product pages instead of selling.
It also makes stock counts unreliable, because two different things are being counted as one.
Vintage-level stock, built properly
- Each wine is held as a parent product, with each vintage as its own variant carrying its own stock, cost, price, notes and scores.
- Deliveries are booked in against the specific vintage, using the supplier's delivery note or a scan of the case.
- When a new vintage arrives while the old one is still in stock, you choose the rule: sell the old first, show both, or show only the new online.
- When the old vintage reaches zero, the website page, the shelf label file and the tasting note switch to the new one automatically.
- A new vintage with no tasting note or price set is flagged before it goes live, so it never appears with last year's text.
- The change pushes to your web shop and EPOS through their APIs, so both show the same vintage.
| Moment | Without vintage records | With them |
|---|---|---|
| New vintage delivered | Added to old product's stock | Booked to its own vintage |
| Both vintages in stock | Indistinguishable | Shown by your chosen rule |
| Old vintage sells out | Page still shows it | Page switches to new vintage |
| New vintage has no notes | Old notes stay up | Flagged before going live |
| Price changes with vintage | Often missed | Set per vintage |
Which vintage to show first, and how to price it, is your decision. The records just make sure what the customer sees is what you are selling.
A shelf and a website that agree
On a normal morning, the delivery from your importer is booked in: three wines have a new vintage. The system lists them with a red mark because nobody has written notes yet. The buyer adds a line to each and checks the new prices. The old vintages still have a few bottles, so the website shows the new one as 'arriving' and keeps selling the old until it is gone. When the last bottle sells, the page changes on its own and the shelf label file is ready to print.
Customers get the vintage they ordered. The margin on the new vintage is protected. And the question 'which one do we actually have?' no longer needs a trip to the rack.
Does this happen in your shop?
- Customers have received a different vintage from the one on the website.
- Vintage is part of the product name rather than its own field.
- Shelf talkers and tasting notes lag behind the stock.
- New vintages have been sold at the old price.
- You cannot hold two vintages of the same wine in the system at once.