Treatment revenue, not inquiries
Rank channels by the revenue they produced, so one high-value case outweighs a page of inquiries.
Marketing attribution for dermatology practices
Match completed treatments and the revenue they earned to the campaigns that produced the patient, across medical and cosmetic work alike.
$472,000 59% of $800,000 paid
The blind spot
A dermatology practice runs two businesses through one front desk. Insurance-covered medical visits and cash-pay cosmetic work arrive from different channels and are reported as one lead count.
What you get
Rank channels by the revenue they produced, so one high-value case outweighs a page of inquiries.
A consultation this quarter and treatment the next still credits the campaign behind it.
Only exact matches count automatically; no diagnosis or clinical data is ever needed.
A worked example
Not impressions, not leads, not cost per click. Closed revenue, by the channel that produced it, for a period you choose — with the portion we could not trace shown rather than quietly shared out across your paid channels.
| Channel | Sales | Revenue | Share | % |
|---|---|---|---|---|
| Google Ads | 314 | $232,000 | 29% | |
| Meta Ads | 241 | $176,000 | 22% | |
| Email marketing | 88 | $64,000 | 8% | |
| Direct / Unknown | 449 | $328,000 | 41% |
A covered skin check and a $1,400 laser course are the same appointment slot and completely different economics. Channels feed them unevenly — social produces cosmetic interest, search produces medical urgency.
Ranking on collected revenue, with the sale count beside it, shows whether a channel's money comes from a few large cosmetic cases or many smaller visits. A treatment-type column is not one to add: whether somebody came for medical or cosmetic care is health information.
Injectables, laser and skincare are repeat purchases on three- to six-month cycles. A patient acquired once may spend for years, and no click-based tool credits the original campaign past the first visit.
Because the match is on the patient, every subsequent treatment credits the channel that produced them, which usually more than doubles the apparent return on the channels that produce cosmetic patients.
In most general dermatology practices the advanced practice providers carry the majority of the visits. Acne, eczema, rashes and routine follow-ups are seen by a physician assistant or nurse practitioner, while the physician's diary is weighted toward surgical work and complex cases. The economics of those two schedules are not the same, the capacity constraints are not the same, and the marketing that fills them is usually one undifferentiated budget aimed at whoever searches for a dermatologist nearby. A practice that cannot see which of its two schedules a channel fills is flying on one instrument.
The consequence is subtle and expensive. A campaign delivering a steady stream of routine complaints looks productive on patient counts and fills the schedule that was never the bottleneck, while the surgical diary — the one with the waiting list and the revenue — is fed almost entirely by referrals nobody is measuring. The practice concludes that its advertising works, because the appointments do appear, and never asks which appointments they were. It is a comfortable conclusion, it is supported by every number on the dashboard, and it is answering a question about volume when the practice's constraint was never volume. The waiting list for surgery grows regardless.
A location column mapped as Location shows each site's revenue and how much of it traces to a channel, which is the breakdown available here. A provider column is not one to add: which provider somebody saw can reveal what they were treated for, and CloseRev signs no business associate agreements. What the report can still show is whether the practice's total revenue is reached by marketing at all, and the sale count beside each channel hints at whether it is filling the diary that was short or the one that fills itself. A practice may then stop advertising a service entirely, not because the campaign failed but because it was succeeding at something the practice did not need more of, which is a distinction no dashboard built on appointment counts can draw.
A full-body examination is billed at a modest amount and frequently produces a biopsy, and a biopsy sometimes produces an excision or a staged surgical procedure worth many multiples of the original visit. The sequence takes weeks. Every one of those steps happens under the same patient record and none of them happens inside any window an advertising platform recognizes, so the campaign that produced the screening is credited with the screening fee and nothing else. What the practice sees, months later, is a surgical schedule it cannot explain and a screening campaign it has decided is only breaking even. Both impressions come from the same missing join.
That understatement is not evenly distributed, which is what makes it a ranking problem rather than a rounding one. Campaigns aimed at screening and prevention produce the sequence; campaigns aimed at a cosmetic treatment produce a single transaction at a higher price. Compared on the first visit alone, the cosmetic campaign wins comfortably. Compared on everything that followed from the patient over the next quarter, the order frequently reverses, and the practice has been funding the wrong one on a number that was never wrong, only incomplete.
Because the join is on the patient rather than a session, all the downstream revenue credits the original inquiry once the export covers a long enough period. Three months is usually enough to see the biopsy and the excision land against the screening that found them. It costs nothing extra to look, since the billing records exist regardless, and it is the clearest illustration in this segment of why a first visit is a poor unit of account. Practices that extend the window from thirty days to ninety usually watch the screening campaign move several places up the ranking without anything about the campaign having changed at all.
General dermatology in many markets is booked out for a quarter, while cosmetic appointments are available next week. That gap has a measurable effect on what happens after the click. A patient who searched today and is offered a date in November will keep looking, and a proportion of them will be somebody else's patient before the appointment arrives. The advertising account still records the booking as a conversion, and it never learns that the chair sat empty. By the time anybody investigates, the inquiry is six months old and no longer belongs to any report that is still open.
Practices read this as a no-show rate and treat it as an operational nuisance rather than as the thing distorting their channel comparison. It is not evenly spread: sources that attract urgent, symptom-driven searches suffer most from a long wait, while sources producing planned cosmetic inquiries barely notice it. So the ranking a practice acts on is partly a ranking of how patiently each channel's patients wait, which is not a fact about advertising at all. It is, at best, a ranking of how well each channel's demand tolerates a delay the practice cannot currently fix, dressed up as a ranking of advertising quality.
Reconciling attended, paid visits against the inquiries that produced them puts that attrition where it belongs. Upload both files and the booked-to-attended ratio per source becomes visible, which usually reframes the discussion entirely. The answer is rarely to change the campaign; it is to hold slots differently, to triage at booking, or to stop advertising a service the practice cannot see anybody for until the spring. In each case the useful part is that the decision is now being made against an attendance figure rather than against a booking figure that was never going to be honored.
Why it matters
"We generated 400 leads" invites an argument. "This channel closed $186,400 last quarter, here is the reconciliation" ends one. The teams that can show closed revenue by channel are the teams that get the next increase approved, because they are asking with evidence rather than with conviction.
Killing spend is politically harder than adding it, because someone always owns the channel being cut. A number that reconciles to the sales export takes the argument out of the room — you are not overruling a colleague's judgment, you are reading the same ledger they are.
Platform-reported conversions do not reconcile to revenue, and eventually someone in finance notices. Reporting built from your own closed-sales export starts from the number finance already trusts, which is why it holds up when it is checked.
Because this reconciles exports rather than tracking visitors, it works on months that have already closed. You are not instrumenting now to learn something in ninety days — you can answer for last quarter today, which is usually when the question is being asked.
Honest answers
Then export the practice's collected revenue, whoever paid it. The match is on the patient's contact detail, not the payer.
Which is why later treatments must credit the original channel — that is where the value of cosmetic acquisition actually shows.
Only a contact detail, an amount and a date are needed. No diagnosis, no procedure code, no clinical note. Data is encrypted, isolated per workspace and deletable in one click.
Pricing
The price here is the price on the invoice, plus any sales tax that applies — no per-call, per-minute or per-form fees. Growth usually fits medical and cosmetic dermatology practices — thirteen months of history to compare a month to the same month last year, and a PDF you can put in front of whoever holds the budget.
A business scaling ad spend
$49/mo
billed monthly
Questions
Anything else? Talk to us — a person answers, usually the same day.
Completed treatments or collected revenue: a patient email or phone, the amount, and a date.
Not with a column: the treatment somebody received is health information, and it stays out of a file sent to a vendor that signs no business associate agreements. The channel ranking shows each channel's sale count beside its revenue, so a difference in value per patient still shows.
Yes — they credit the channel that produced the patient.
Not with a column: which provider somebody saw is health information, and it stays out of a file sent to a vendor that signs no business associate agreements. A location column mapped as Location is the breakdown to use.
No. A contact detail, an amount and a date is the whole requirement.
It is encrypted in transit and at rest and isolated per workspace, so no other account can reach your patients. Deletion is immediate and a DPA is available.
Yes. Most medical and cosmetic dermatology practices begin with last year, because it is the cheapest way to find out whether the exercise tells them anything.
Treatment rows analyzed in a calendar month. Inquiry rows do not count.
Yes, when the export covers a long enough period. All the revenue from one patient joins to that patient and therefore to the inquiry that produced them, so the surgical work credits the screening rather than nothing.
Not with a column: which provider somebody saw is health information, and it stays out of a file sent to a vendor that signs no business associate agreements. The channel ranking shows each channel's sale count beside its revenue, so a difference in value per patient still shows.
The date the money was collected, which keeps the report consistent with your accounts. Upload the booking file alongside and the gap between booked and attended becomes visible per source.
Yes. List each referring practice as a source in the inquiry file and it is ranked on collected revenue beside paid media, which gives that relationship a figure.
If the practice collected the money, include it. It joins to the same patient and credits the same source, and omitting it understates channels that produce patients who return rather than attend once.
Not with a column: the treatment somebody received is health information, and it stays out of a file sent to a vendor that signs no business associate agreements. Running the report over several years credits recurring payments to the inquiry that produced the patient.
CloseRev does not sign HIPAA Business Associate Agreements and is not built for protected health information. Upload only collected payments — a phone number or email, the amount and the date — never diagnoses, biopsy results, clinical photographs or notes. If your patients' phone numbers and emails count as PHI under your obligations, talk to your compliance lead before using CloseRev.
Nearby
Match completed, paid treatments to the inquiries and ads that produced them — including the packages bought months after the first consultation.
See how it worksMatch completed, paid procedures to the inquiries and ads that produced them — including the ones booked six months after the first consultation.
See how it worksMatch your billing export to your call and ad data, and see which channels produced procedures that were paid for rather than inquiries that were not.
See how it worksWhere your sales already are
Tebra's encounter export carries receipts as well as charges — which is exactly what an honest channel report needs.
What to exportExport completed appointments from Boulevard, upload the leads that produced them, and rank marketing on what clients actually spent.
What to exportExport collected payments from AdvancedMD, upload the inquiries beside them, and rank marketing on what was actually received.
What to exportExport your tickets from Mangomint, upload the leads that produced them, and rank marketing on client value rather than on bookings.
What to exportExport your sales, upload the leads that produced them, and find out which channels produce clients who stay rather than clients who visit.
What to exportExport your sales from Vagaro, upload the leads that produced them, and stop paying to acquire clients who were already coming.
What to exportUse the patients Solutionreach messages as one side of the match and collected production as the other.
What to exportExport sales from Zenoti, upload the leads behind them, and get guest value per source per location.
What to exportExport collections from RevolutionEHR, upload the leads behind them, and rank channels on the whole patient rather than the appointment.
What to exportExport inquiries and treatment revenue from PatientNow, join them, and rank channels on treatments rather than on consultations booked.
What to exportUse NexHealth bookings as your lead file, match them against collected production, and separate the patients you acquired from the ones who rebooked.
What to exportExport sales from Fresha, upload your lead sources, and stop paying to acquire clients who were already arriving.
What to exportExport collections from DrChrono, upload the leads behind them, and rank channels on what was actually received.
What to exportExport collections from NextGen, bring referral and campaign sources with them, and rank every source on what was collected.
What to exportFrom the blog
Multi-site healthcare groups usually conclude that attribution is off limits because the data is clinical. It is not, because attribution does not need clinical data. What it needs is a phone number, an amount and a date, and there is a way to handle even those properly.
Read the articleCall tracking answers one question well: which campaign produced the ring. It has no view of what happened after the call ended, which is where the money is decided. This is what the gap costs, and how to close it without replacing the call tracker you already have.
Read the articleAdd up what your agencies and platforms claim and you have sold the same thing several times over. Nobody is lying. Here is why double counting is structural, how to run the reconciliation meeting, and what to change in the contracts so it stops recurring.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.