“Phorest already has client retention reports.”
Excellent ones, for clients you already have. They cannot say which marketing produced them.
For Phorest
Export your sales, upload the leads that produced them, and find out which channels produce clients who stay rather than clients who visit.
No API key Nothing to install in PhorestNothing to install No card requiredNo card
CloseRev reads a Phorest export of sales — the client's phone or email, the amount and the date — and matches it against the campaigns, listings and calls that produced the first visit. Phorest measures retention and rebooking better than almost anything in this catalogue; what it cannot see is which marketing produced the clients being retained. Sales with no traceable lead are reported as Direct / Unknown.
Last checked against Phorest's own documentation on September 24, 2026.
The gap
You have excellent retention reporting and no idea which marketing produced the clients it is reporting on.
What was sold, to whom, and for how much.
The click, the keyword, the call, and what each one cost.
The file
Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.
On the client record. Salon clients give a mobile number more reliably than an email, so the phone usually carries the match.
Service and retail together. Phorest separates them well, and a report built on services alone misses where the margin is.
When the visit was paid for. Course and package purchases are better attributed on the purchase date.
For a group, the branch is what turns an average into a decision; the service group shows which channel brings colour clients and which brings blow-dries.
Step by step
Written for somebody with Phorest open in the next tab. Report names vary by edition, so each step says what to look for.
One row per sale with a client contact detail, the total and a date, including retail lines.
Phorest's own strength is the long view of a client, so use it: six to twelve months of sales matched against the lead that produced the first visit.
Paid social, local search, the online booking widget, listings and any offer or voucher site you have used.
A client visiting every six weeks appears eight times a year. Per client is the unit a marketing decision needs.
The join is the phone and the email, normalised, with first and subsequent visits reported apart.
What comes back
Revenue by channel, the count of sales behind each figure, and an honest bucket for the ones nobody could trace. Sample figures, from the worked example on the Med Spas & Dermatology page — not from a Phorest account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Meta Ads | 96 | $78,200 | |
| Google Ads | 61 | $55,200 | |
| Email marketing | 44 | $32,200 | |
| Direct / Unknown | 79 | $64,400 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
Discount voucher sites deliver volume that looks like a triumph for a month. The clients arrive, take the offer and, in most salons, are never seen again.
The cost of that is invisible in any booking-based report, because the booking happened and the offer was redeemed. It only becomes visible when you follow those clients forward and find no second visit.
Matching sales over six months back to the source is exactly that test. Salons that run it usually stop buying vouchers, or start structuring them completely differently.
The structure that survives is the one that asks for something back — a rebooking at full price, a card on file, a membership — rather than one that discounts a first visit and hopes. The file tells you which of your offers did that and which did not.
A salon lives on clients returning every four to eight weeks. The difference between a client who returns three times and one who returns twelve is the difference between a profitable chair and an empty one.
Return rates vary systematically by how the client found you — proximity, intent and price sensitivity all travel with the channel.
So the number that matters is revenue per acquired client over a fixed window, and the report gives it. It routinely separates channels that looked identical on cost per new client.
Group marketing is bought centrally and judged centrally, and the average is what reaches the owner. Catchments differ, competition differs, the team differs.
A channel that is the cheapest new client at one branch can be the most expensive at another two miles away, and nothing in a blended report reveals it. Catchment, not creative, is usually the reason.
Where the export carries a branch, the report splits on it. For a multi-branch group that split is usually the reason to do this at all.
Retail sales in a salon are driven by the conversation in the chair, which makes them look like a purely operational metric.
They are also uneven across clients in a way that correlates with how engaged the client is, and engagement travels with the source.
Including retail in the export changes the channel ranking often enough to be worth doing every time, and it costs nothing but a column.
The same applies to gratuities, with one caveat: include them or exclude them consistently. A file that carries tips for card payments and not for cash will rank channels by how their clients happened to pay.
Fair questions
Excellent ones, for clients you already have. They cannot say which marketing produced them.
They do, and this tells you what those weeks actually cost once the clients fail to return.
Then the branch split does not apply and everything else does. Two exports and a six-month window is the whole exercise.
No. It reads a file you exported; your appointment book and client records are not reachable from here.
Sales with a client contact detail, the total and a date, including retail.
Six to twelve months. The first visit measures the offer; the following months measure the client.
Yes, on revenue per acquired client, which is normally the comparison that ends the voucher debate.
Yes, where the export carries one. A group average usually describes none of the branches.
Yes. It is real margin and it correlates with how engaged a client is.
Attribute on the purchase date rather than each redemption, so one decision is not spread across months.
They are reported separately so you can decide, rather than being folded in silently.
Direct / Unknown — and in a salon that is usually walk-ins, whose true share is worth knowing.
No. It adds the half before the client existed, which Phorest never saw.
A contact detail, an amount and a date, plus a branch or service group if you include them. No treatment notes, no photographs, no card data. Encrypted in transit and at rest and deleted with the import.
Revenue per acquired client by source and by branch, first and repeat visits apart, and everything unmatched kept visible.
By trade
What the report looks like once the export is in, written for each one.
Other systems
Running more than one system, or comparing? The method is the same and the columns are not.
Phorest and the other product names and logos on this page belong to their owners and are shown to identify the software a file comes from. CloseRev is not affiliated with or endorsed by them, and connects to none of them: it reads a file you export.
Start today
Nothing to install in Phorest, no API key, and no need to have been tracking anything until now. Last year works as well as this month.