Cookie preferences

Choose what we may use. Strictly necessary cookies keep you signed in and can't be turned off; everything else is your call and changes nothing about how the site works. You can change your mind any time from the footer.

For Zenoti

The group average is true of no single location you operate.

Export sales from Zenoti, upload the leads behind them, and get guest value per source per location.

No API key Nothing to install in ZenotiNothing to install No card requiredNo card

CloseRev reads a Zenoti export of sales — the guest's phone or email, the amount and the date — and matches it against the campaigns and calls that produced the first booking. Zenoti is chosen by multi-location operators, which means the single most valuable thing the data can do is stop being an average: a channel that wins in one catchment routinely loses in another. Sales with no traceable lead are reported as Direct / Unknown.

Last checked against Zenoti's own documentation on September 24, 2026.

The gap

Marketing is bought centrally, judged centrally, and delivered into a dozen different local markets.

Zenoti sees

What was sold, to whom, and for how much.

no shared row
Your ad account sees

The click, the keyword, the call, and what each one cost.

The file

What the export needs in it.

Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.

  1. Needed

    Guest phone or email

    On the guest record. Groups usually have both, which makes this one of the cleaner matches in the catalogue.

  2. Needed

    Sale total

    Services, retail, packages and memberships together. Retail and memberships carry the margin.

  3. Needed

    Sale date

    When money was taken. Packages are better attributed on purchase than on redemption.

  4. Needed

    Location or centre

    The column that makes this page worth doing. Without it the report is a group average.

Step by step

Getting the file out of Zenoti.

Written for somebody with Zenoti open in the next tab. Report names vary by edition, so each step says what to look for.

  1. Export sales with the guest and the location

    One row per sale with a contact detail, the total, the date and the centre.

  2. Include retail and memberships

    A services-only file understates every channel that brings engaged guests and flatters the ones that bring discount-seekers.

  3. Take six to twelve months

    First visits are usually promotional. The channels separate on what the guest spent afterwards.

  4. Export lead sources with the location where possible

    A national campaign and a local one need to be distinguishable, or the split cannot be made.

  5. Upload both

    The join runs on the phone and the email, normalised, with results reported per location as well as per group.

What comes back

The page Zenoti cannot show you.

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 Zenoti account.

Traced to a channel$165,60072% of $230,000
Sales matched201 of 280high confidence only
Average sale$820per paid sale
ChannelShareSalesRevenue
Meta Ads96$78,200
Google Ads61$55,200
Email marketing44$32,200
Direct / Unknown79$64,400

Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.

The argument

What changes when the guest and the ad share a row.

Catchment decides more than creative in a multi-location group

Two locations twenty miles apart can face different competitors, different price expectations and a different local search landscape.

A channel that produces the cheapest new guest at one can be the most expensive at another, and a blended report will never show it because the average sits between them.

Splitting revenue by centre turns one ambiguous number into a set of local decisions, which is how a group actually allocates.

It also identifies the locations where a channel is carrying the group average, which is usually two or three of them.

Those are the sites where a change in spend has an effect, and the rest is noise being managed as though it were signal.

Memberships change the unit of value entirely

A guest on a monthly membership is recurring revenue with a predictable life, quite unlike one who books a treatment when a promotion runs.

Counted as a single sale, a membership looks small; counted across its life it is often the most valuable outcome a channel can produce.

The report sums by guest across the window and keeps memberships identifiable where the export allows, so the two outcomes are not averaged together.

Channels differ sharply in how often their guests convert to membership, and that difference is usually larger than the difference in first-visit value.

For a group, shifting spend toward the channels that produce members is the single highest-leverage finding this report produces.

Promotional first visits make the first transaction uninformative

Introductory pricing is close to universal in this category, so the first sale measures the offer rather than the guest.

Every source looks similar at that point, which is why cost per new guest is such a stable and such a useless ranking.

Six to twelve months of sales shows which guests returned at full price, and the ordering is frequently the reverse of the acquisition-cost ordering.

It also shows which offers produce returning guests, which is a creative decision rather than a channel one and is often the cheaper fix. Changing an introductory offer costs a morning; replacing a channel costs a quarter, and the file usually shows the first is what was needed.

Packages and gift cards move money away from the treatment

A package bought once and redeemed over months, or a gift card bought by one person and used by another, both break a naive match on the treatment date.

Attributing on redemption spreads one decision across a season and credits whatever ran each time; attributing on purchase keeps it with the campaign that produced it.

The report sums by guest and uses the purchase date, and flags guests whose spend is dominated by a single prepaid event rather than a habit.

A gift card's redeemer is a new relationship of their own, and the report treats them as such rather than crediting the original purchase's channel. Crediting both to one campaign would double-count a guest the group acquired once, which is the sort of quiet inflation that makes a report impossible to defend.

Fair questions

“Zenoti already does that.” Not quite.

They say

“Zenoti already reports across our locations.”

We say

It reports what was sold at each. It has no record of the campaign that produced the guest.

They say

“We buy marketing centrally.”

We say

Which is exactly why the per-location split matters: the same spend is landing in a dozen different markets.

They say

“Everyone arrives on a promotion.”

We say

Yes, which is why the first sale cannot rank channels and six months of them can.

Questions

Zenoti, specifically.

Something else? Ask us and a person answers.

No. It reads an exported file, so your appointments, guest records and payment vault stay where they are.

Zenoti 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

Two exports, and you will know.

Nothing to install in Zenoti, no API key, and no need to have been tracking anything until now. Last year works as well as this month.