“Mangomint already shows client retention.”
It shows retention for clients you have. It cannot show which marketing produced the ones who stay, because it never saw the advert.
For Mangomint
Export your tickets from Mangomint, upload the leads that produced them, and rank marketing on client value rather than on bookings.
No API key Nothing to install in MangomintNothing to install No card requiredNo card
CloseRev reads a Mangomint export of tickets — the client's phone or email, the amount taken and the date — and matches it against the ads, calls and forms that produced the first booking. A salon or med spa client is a series of visits and a retail relationship, so a channel's worth is what its clients spend over months rather than what they spent on arrival. Tickets with no traceable lead are reported as Direct / Unknown.
Last checked against Mangomint's own documentation on September 24, 2026.
The gap
Instagram says it produced bookings. Your till says what came in. Nobody has ever put those two sentences in the same report.
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 rather than the ticket. Bookings arrive online and by phone in roughly equal measure, so both columns matter for coverage.
Everything on the ticket — service, retail, gratuity if you count it consistently, and any package or gift card redeemed against it.
When the visit was paid for. Prepaid packages are better attributed on the date they were bought than on each redemption.
Colour, injectables, facials, retail — and who performed it. Both split a channel's clients into the kinds worth having and the kinds not.
Step by step
Written for somebody with Mangomint open in the next tab. Report names vary by edition, so each step says what to look for.
One row per ticket with a client contact detail, the total and a date. Include retail lines rather than service revenue alone.
A first visit on an introductory price tells you almost nothing. The channel's value is what the client spent across the following visits.
Paid social is usually the largest in this category, plus local search, the booking widget and any marketplace listing. Contact detail plus the source.
A regular client appears many times. Per ticket, a loyal client looks like many wins; per client, they are one relationship with a value.
The join is the phone and the email, normalised, with first visits and repeat visits kept 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 Mangomint 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
Salons and med spas sell product at the counter, and the margin on it is better than the margin on chair time. It is also unevenly distributed: a minority of clients buy most of it.
That propensity travels with the kind of client a channel brings rather than with the service they booked. A channel producing clients who buy product is worth materially more than one producing clients who do not, at identical booking counts.
Export tickets rather than service revenue and the ranking shifts. It is the cheapest correction available in this category and almost nobody makes it.
In a salon, clients who ask for a particular stylist or injector return far more reliably than clients who take whoever is available.
Where the export carries the provider, the report can show which channels produce clients who settle with somebody. That is a better predictor of a year's revenue than anything in the booking data.
It also protects against a real failure: a channel whose clients all landed with one provider will collapse if that provider leaves, and nothing in a cost-per-booking report would ever have warned you.
A package bought in January and redeemed across six months puts cash in on one date and service out on six others. A gift card does the same across two different people.
Attributing on redemption spreads one decision across half a year and credits whatever was running each time. Attributing on purchase keeps it with the campaign that produced the sale.
The report sums by client so both readings exist, and flags where a client's spend is dominated by one prepaid event rather than by a habit.
This is a visual category with a visual buyer, so most of the budget goes to platforms with view-through windows, modelled conversions and in-app booking.
Those platforms will report a booking. They cannot report whether the client turned up, what they spent, or whether they came back — and all three differ by channel.
Reading tickets against the lead file replaces platform-reported conversions with money taken. The ranking almost always moves away from whichever channel was best at reporting itself.
Fair questions
It shows retention for clients you have. It cannot show which marketing produced the ones who stay, because it never saw the advert.
Then the question is which campaigns and which offers, and the till is the only judge that does not report in its own favour.
That is fine and it matches well. Export the phone column too so phone bookings are not silently excluded.
No. It reads a file you exported, so your calendar, your client notes and your card vault are never reachable from here.
Tickets with a client contact detail, the total and a date.
Yes. It carries better margin than chair time and it travels with the kind of client a channel brings.
Six months at minimum. A first visit at an introductory price measures the discount, not the client.
Attribute on the purchase date rather than on each redemption, so one decision is not spread across six months of campaigns.
The purchase and the redemption are two different people. Attribute the purchase; the redeeming client is a new relationship of their own.
Yes, where the export carries one — and it is one of the better retention signals available.
They are reported separately, so the decision stays yours rather than being made silently.
They sit in Direct / Unknown. In a salon that bucket is usually walk-ins, and its size is worth knowing.
Yes, where the export carries one. A two-site average usually describes neither site.
A contact detail, an amount and a date, plus a service category if you include one. No treatment notes, no photographs, no consent forms, no card data. Encrypted in transit and at rest and deleted with the import.
Revenue per acquired client by channel, 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.
Mangomint 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 Mangomint, no API key, and no need to have been tracking anything until now. Last year works as well as this month.