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 Boulevard

A booking is not revenue, and a first appointment is not a client.

Export completed appointments from Boulevard, upload the leads that produced them, and rank marketing on what clients actually spent.

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

CloseRev reads a Boulevard export of completed appointments — the client's phone or email, the amount taken and the date — and matches it against the calls, forms and ad clicks that produced the first booking. In aesthetics a first appointment is worth a fraction of the client, so ranking channels on bookings ranks them on the wrong number. Appointments with no traceable lead are reported as Direct / Unknown.

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

The gap

Your ads report bookings and your booking system reports appointments. Neither can tell you that one channel brings people who come once and another brings people who come monthly.

Boulevard 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

    Client phone or email

    On the client record rather than the appointment. Aesthetics clients book online and by phone in roughly equal measure, so both columns earn their place.

  2. Needed

    Amount taken

    What the appointment actually took, including retail product and any package payment. Service price alone understates the channels that bring people who buy product.

  3. Needed

    Appointment or payment date

    When the visit happened or was paid for. For packages, the payment date is the one that ties to the marketing.

  4. Optional

    Service or category

    Injectables, laser, facials, retail. It is the split that shows which channel brings the high-value treatments and which brings the introductory offer.

Step by step

Getting the file out of Boulevard.

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

  1. Export completed appointments with what they took

    One row per appointment with a client contact detail, the amount and a date. Cancellations and no-shows should not be in the file — they took nothing.

  2. Include retail and packages

    A client who comes for a facial and leaves with three hundred in product is worth what they spent, not what the treatment listed at. Leaving retail out understates exactly the channels worth keeping.

  3. Export your leads

    Paid social is usually the largest in this category, plus search, the booking widget and any local marketplace. Contact detail plus the source.

  4. Cover several months on the revenue side

    The first visit is often an introductory offer. The channel's real value shows in the second and third visits, which land weeks or months later.

  5. Upload both

    The match runs on the phone and the email, normalised, and reports repeat visits separately from the first.

What comes back

The page Boulevard 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 Boulevard 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 appointment and the ad share a row.

The introductory offer is the point where most attribution goes wrong

Almost every med spa runs one, and it works — it fills the diary. It also means the first appointment is deliberately priced below what the client is worth, so attributing a channel on that first transaction measures the discount rather than the customer.

Two channels producing the same number of introductory bookings can be worth completely different amounts, because one brings people who return at full price and the other brings people who came for the offer and will do the same at the spa down the road next month.

Matching several months of revenue back to the first booking is what separates them, and in this category that separation is usually the single most valuable output.

Paid social dominates the spend and is the hardest to measure honestly

This is a visual category with a visual buyer, so the budget goes where the imagery works. It is also the category where platform-reported conversions are furthest from cash: view-through windows, modelled conversions and in-platform booking all report generously.

The platform will tell you it produced a booking. It has no idea whether the client turned up, what they spent, or whether they came back.

Reading the appointment export against the lead file replaces all of that with what was taken at the till. It usually moves the ranking, and it almost always moves it away from whichever channel was best at reporting itself.

Retail and packages are where the margin hides

Product sales and prepaid packages carry margin that individual treatments do not, and they are unevenly distributed across clients — some buy on the first visit, most never do.

If the export includes them, channels sort differently than they do on service revenue alone, because the propensity to buy product travels with the kind of client a channel brings rather than with the treatment they booked.

It is a column worth insisting on in the export for that reason. Without it the report is about appointments; with it the report is about clients.

Who books, and what that does to the join

Bookings arrive through the widget, by phone, by text, and occasionally through a third party. Each route captures a different contact detail — the widget gets an email, the phone gets a number — so a file with only one of the two will match only one of the routes.

That is not a small effect. It is the most common reason a channel appears not to work in this category: it produced calls, the export only carried emails, and the calls had nowhere to land.

Exporting both columns costs nothing and removes the whole class of error.

Fair questions

“Boulevard already does that.” Not quite.

They say

“Our booking platform already reports marketing.”

We say

It reports bookings made through it. It does not know what the client spent over six months, or whether the channel that produced them brings people who return.

They say

“Most of our spend is on paid social, which reports its own conversions.”

We say

It does, generously and in its own favour. This reads what was taken at the till, which is the number the platform cannot see.

They say

“Our clients book online, so we have emails not phones.”

We say

Export both columns anyway. Phone bookings are the ones that otherwise go missing, and they are usually the higher-value ones.

Questions

Boulevard, specifically.

Something else? Ask us and a person answers.

No. It reads a file you exported, so your booking calendar, your client notes and your card vault are never reachable from here — there is nothing to reach them with.

Boulevard 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 Boulevard, no API key, and no need to have been tracking anything until now. Last year works as well as this month.