The calculation
Return on investment is profit from the campaign divided by the cost of the campaign.
Spend $595 on 500 cards. Suppose the campaign produces $4,000 of revenue at a 60% gross margin, so $2,400 of gross profit. Subtract the $595 and you have $1,805 of return on $595 spent — roughly 3x.
Two details in there matter more than the formula. Use gross profit rather than revenue, or you will dramatically overstate every campaign. And be careful about what you count as "produced by the campaign", which is where most of the error lives.
Attribution is the hard part
The naive method is to compare revenue during the mailing window to a normal period and credit the difference. It is quick and it is usually wrong, because too many other things move at the same time — seasonality, weather, a competitor closing, a good review.
The reliable method is a response mechanism unique to the card. A QR code produces a countable scan tied to a specific recipient. A personalized URL does the same. A dedicated phone number works if you can staff it.
Without one of those, you are estimating. Estimating is better than nothing, but do not present it to yourself as measurement.
Count conservatively
Some of the people who respond would have come anyway. A lapsed customer who was already thinking about rebooking, and who happens to receive a card the same week, is not fully attributable to the mail.
You cannot separate those cleanly without a control group, and most small businesses will not run one. So bias toward under-counting: credit the campaign with responses that carry a scan or a mention, and not with everything else that happened that month.
An understated ROI that is trustworthy is more useful than a flattering one you cannot act on. The point of the number is to decide whether to mail again.
Set it up before you send
Measurement has to be designed into the drop. It cannot be reconstructed afterward.
Before mailing: decide the response mechanism, make sure the destination page works on a phone, and make sure whoever answers the phone knows to ask. Note the drop date and the exact number of cards mailed — you will need both as denominators.
Then give it time. Postcard response is not instantaneous; cards sit on counters. A campaign judged after ten days will look worse than the same campaign judged after six weeks.
What to do with the answer
A positive return says mail again, larger, to a similar list. That is the easy case.
A negative return has three possible causes, and it is worth knowing which. If almost nobody scanned, the list or the offer was wrong. If people scanned but did not book, the landing page or the booking process is the problem. If people booked but the numbers still did not work, your cost per acquisition is above what a customer is worth, and volume will not save it.
Each of those has a different fix, and only tracked responses tell you which one you are looking at.