Measuring Marketing ROI With POS Data, Not Gut Feeling
How small businesses measure marketing ROI using register data: a simple formula, voucher codes as trackers, fair period comparisons, and cost per customer.
“We ran ads last month and it felt busier.” That sentence — specifically the word “felt” — is why so many small businesses stop advertising right when their ads start working, or keep pouring money into promotions that quietly lose it. Feelings are convincing liars: busy days are remembered better than slow ones, and a payday-weekend rush gets credited to whatever ad happened to be running.
Meanwhile, the measuring instrument is already sitting on your counter: the register. Every recorded transaction is data. What is usually missing is just the bridge between “the promotion I ran” and “the sales that came in”.
The formula is simple — the discipline is the hard part
Marketing ROI boils down to one question: for every dollar spent on promotion, how much profit came back?
The math: gross profit from the additional sales, minus the promotion cost, divided by the promotion cost. A concrete example: a month of Instagram ads costs 100, brings 60 chat inquiries, 25 of which buy, at an average ticket of 6. Revenue from the ads = 150. At a 40% gross margin, that is 60 in gross profit. ROI = (60 - 100) / 100 = minus 40%.
A loss? In month one, yes. But the story is not over — if 10 of those 25 buyers come back in the following months, the picture changes completely. So alongside single-month ROI, track your cost per new customer (in the example: 4 per person) and compare it against how often a typical customer returns. A campaign that loses money in month one can be the most profitable investment of the year — and you will never know unless you count.
The bridge: make every promotion leave a trace at the register
The classic problem: money goes out through ads, money comes in through the register, and nothing connects the two. The fix is forcing every promotion to leave a countable trace.
- A unique voucher code per channel — Instagram ads get one code, the food blogger collaboration gets her name, the printed flyer gets another. When the code is redeemed at checkout, the sale is tied to its source automatically.
- An offer that exists on only one channel — a combo announced only on TikTok. Everyone who orders it told you where they came from.
- The one-second question at checkout — “how did you hear about us?” logged by the cashier with a single tap. Not perfectly precise, but infinitely better than no data.
If your register is still a notebook or a spreadsheet, this kind of tracking is genuinely painful — which is one of the strongest reasons to move from spreadsheets to a POS. A modern system like Tenavora records promo codes and customer sources on the transaction itself, so “which promotion actually paid off” is a report you open, not a midnight spreadsheet session.
Comparing periods fairly
The second most common mistake: comparing the promo week against the week before it, full stop. Local business revenue swings for reasons that have nothing to do with marketing: payday, a full day of rain, holiday seasons, school breaks, one big catering order.
The rule: compare like with like. A week containing payday gets compared with last month’s payday week, not with the lean week before it. When possible, glance at the same period last year too. And never judge from a single week — coincidences happen; a three-to-four-week pattern is far more honest.
This is where clean register data pays off again: daily and hourly sales reports turn a fair comparison into a five-minute job.
Three numbers are enough to start
You do not need a dashboard full of charts. Just three numbers, recorded consistently every month: total promotion cost (ads, collaborations, and discounts given — a discount is a cost too), the number of new customers traced to each promotion, and the gross profit they generated. From those three, ROI and cost per customer are simple division.
Once a month, sit with those numbers for thirty minutes and make one decision: which promotion gets killed, which gets a bigger budget. For benchmark figures per channel, our piece on local marketing metrics goes deeper.
Start this month with the simplest version: one voucher code on one running promotion, and the “how did you hear about us” question at checkout. Those two small habits are enough to make next month’s marketing decisions with numbers — and once you have decided with numbers, going back to guessing feels absurd.