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.

Marketing attribution for Medical Clinics

Which ads produced patients who actually attended?

Match 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.

  • No card required
  • Nothing to install
  • Cancel anytime
Medical Clinics workspace August 2026 Sample data
Billed procedures traced to a channel

$269,100 69% of $390,000 paid

  • Google Ads $148,200 · 38%
  • Meta Ads $81,900 · 21%
  • Email marketing $39,000 · 10%
  • Direct / Unknown $120,900 · 31%
Direct / Unknown is shown, never shared out across the channels above.
Google Ads · LeadAug 14 · (•••) •••-0134
Closed sale · Aug 27$2,930
Matched · high confidence

The blind spot

What's actually happening

Inquiry volume is easy to produce and easy to mistake for progress. The clinic's problem is that most inquiries never convert, and the ones that do are worth wildly different amounts.

What you get

Built for Medical Clinics.

Paid procedures, not inquiries

Channels rank by what was billed, so a channel producing few high-value procedures wins properly.

Long consideration windows

An inquiry in spring that books in autumn still matches the ad that produced it.

Minimal data, deletable

A contact detail, an amount and a date is all the match needs. No clinical information required.

A worked example

The number you can take into a budget meeting.

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.

Total revenue$390,000paid billed procedures
Attributed to a channel$269,10069% of revenue
Average deal$2,930per paid sale
Match rate67%of sales matched
ChannelSalesRevenueShare%
Google Ads41$148,20038%
Meta Ads33$81,90021%
Email marketing16$39,00010%
Direct / Unknown44$120,90031%
01

Elective medicine has a long, quiet funnel

Someone researching a procedure may inquire in March, think about it for six months, discuss it with a partner, and book in October. Every part of that except the first click is invisible to an ad platform, so the campaign that actually produced the patient looks like it produced nothing.

Matching on the person rather than the session makes the October booking count against the March inquiry. For clinics with high-value elective procedures this routinely reverses which channel appears to be working.

02

Why we ask for as little as possible

The match needs a phone number or an email address, an amount, and a date. It does not need a diagnosis, a procedure code, or a clinical note, and those should not be in the file you upload.

Data is encrypted in transit and at rest, isolated per workspace and deletable in one click, and we act as a data processor with a DPA available. The match itself needs a contact detail, an amount and a date — nothing clinical — so the narrowest export that works is also the safest one to send.

03

Payer mix decides what a patient is worth, and the advert never knew

Two patients arrive for the same appointment with the same complaint. One is self-pay at the posted price. One carries a plan whose allowed amount is roughly half of it. A third has a deductible that means the clinic waits four months and then writes part of it off anyway. None of this was visible at the moment somebody clicked an advert, none of it appears in any report an advertising platform produces, and counting booked appointments treats all three as one identical unit of success. The clinic's own books know better, and they are in a different building from the marketing decision.

Coverage and channel are not independent of each other, which is what makes this an attribution problem rather than a billing one. Campaigns built around a named procedure pull self-pay demand from people who have already decided to spend their own money. Campaigns built around symptoms and same-day availability pull whoever lives nearby with whatever coverage they happen to have. A clinic ranking its marketing on appointments is comparing those two campaigns as though a filled slot were a filled slot, and then wondering why a strong month for bookings was a poor month for the bank balance.

Ranking on what was collected takes the guess out. Export posted payments rather than charges, and the report shows the revenue each source produced after whatever the payer adjusted away, so the effect of coverage is already in the money. Do not add a payer or plan-type column to see the split: how somebody's care was paid for is health information, and CloseRev signs no business associate agreements. One campaign can carry a respectable share of visits and a much smaller share of money. That is a bidding decision rather than a reason to stop: the campaign is working, it is simply worth less per booking than the budget assumed, and now there is a figure for how much less.

04

The no-show sits between the booking and the money

Every clinic has a number for this, and most treat it as one operational figure — twelve per cent, say, applied evenly across the schedule and reviewed once a year. It is almost never even. Appointments booked at three in the morning through a social advert do not attend at the rate of appointments booked by somebody who rang during office hours and asked two questions first. The spread between sources can be wide enough to reverse a ranking built on bookings entirely, and it is wider in clinics that have made online booking genuinely frictionless.

Nothing in an advertising account can see this, because the conversion fires when the booking form submits and nobody returns a week later to amend it. The clinic knows, in the sense that the front desk knows and has said so repeatedly, and that knowledge does not reach the person setting next month's budget in any form anybody can act on. The gap between booked and attended is where a cheap lead source quietly becomes an expensive one, and it stays quiet because the two numbers live in two systems that were never asked to agree.

Because only attended, paid visits appear in the billing export, the report measures the far side of that gap by construction. Use the appointment export as the lead file, each booking tagged with its source, and booked and paid counts sit beside each other per channel, which turns the front desk's impression into a figure somebody can defend in a meeting. A clinic finding that one source books well and attends badly then has a specific thing to fix — a reminder policy, a deposit, a landing page that sets expectations — rather than a general suspicion that some leads are worse than others.

05

When the diary is full, the useful question inverts

A clinic running at capacity is in an unusual position: more inquiries do not produce more revenue, they produce a longer wait, more cancellations and a worse experience for the patients already booked. At that point advertising has stopped being a growth lever and become a selection mechanism. The question is no longer which channel brings the most patients, because the clinic cannot see more patients. It is which channel brings the patients worth giving a slot to, and which one can be switched off tomorrow without the schedule noticing it has gone.

Lead counts cannot answer that at all — they are a measure of the thing that is no longer scarce. What answers it is revenue per patient by source, which means joining the billing export to the inquiry file and letting the averages fall out of it. A source delivering two hundred inquiries a month at a low average is a different proposition from one delivering forty at four times the value, and when appointments are rationed the second is the one that deserves the budget. In a half-empty clinic the first would be perfectly sensible.

Clinics that run this exercise usually end up spending less and earning more, which is an uncomfortable result to present because it contradicts the direction every marketing conversation assumes it is heading. It holds up under challenge for a structural reason: the unmatched revenue stays in Direct / Unknown rather than being shared out across the channels under discussion. Nobody defending the campaign that lost can argue the model quietly moved its revenue somewhere else, because the report never redistributes anything it could not prove belonged to a source.

Why it matters

What changes when you can prove it.

You stop defending the budget and start growing it

"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.

You can cut the wrong channel without a fight

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.

Your reporting survives the finance review

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.

You answer in an afternoon, not a quarter

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

The pushback we hear from Medical Clinics.

They say

We cannot put tracking scripts on patient-facing pages.

We say

You do not need to. There is nothing to install anywhere — CloseRev reconciles two exports after the fact, which is precisely why it suits clinics with restrictions on what can run on their site.

They say

Our inquiry data and our billing data live in different systems.

We say

That is the normal case and the reason this works as two files rather than an integration. They never have to talk to each other; they only have to be exported.

They say

Much of our work is referral.

We say

Then it belongs in Direct / Unknown rather than being credited to paid media. Referral is a real channel and worth knowing the size of — mixing it into Google Ads would make the paid numbers meaningless.

Pricing

Flat monthly pricing. No per-call fees.

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 private clinics and elective medical 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.

Questions

Questions we get about Medical Clinics.

Anything else? Talk to us — a person answers, usually the same day.

Completed, paid procedures: a patient phone number or email, the amount, and the date. Nothing clinical.

Where your sales already are

What to export, by system.

All systems

Tebra (Kareo)

Tebra's encounter export carries receipts as well as charges — which is exactly what an honest channel report needs.

What to export

Dentrix

Match accepted, completed and collected treatment to the campaigns and calls that produced the patient.

What to export

athenahealth

Match collected revenue to the campaigns and calls that produced the patient, across the months a claim takes to settle.

What to export

ezyVet

Export invoiced visits from ezyVet, upload the inquiries beside them, and rank marketing on what clients billed rather than on appointments booked.

What to export

AdvancedMD

Export collected payments from AdvancedMD, upload the inquiries beside them, and rank marketing on what was actually received.

What to export

Curve Dental

Export collected production from Curve, upload the inquiries beside them, and rank marketing on what patients actually paid for.

What to export

Solutionreach

Use the patients Solutionreach messages as one side of the match and collected production as the other.

What to export

RevolutionEHR

Export collections from RevolutionEHR, upload the leads behind them, and rank channels on the whole patient rather than the appointment.

What to export

NexHealth

Use NexHealth bookings as your lead file, match them against collected production, and separate the patients you acquired from the ones who rebooked.

What to export

Weave

Export call records from Weave, match them against collected production, and find out what the phone was actually worth.

What to export

Jotform

Export your submissions, match them against closed sales, and find out which forms and which sources produced revenue.

What to export

DrChrono

Export collections from DrChrono, upload the leads behind them, and rank channels on what was actually received.

What to export

Open Dental

Export collections from Open Dental, bring the referral source and your other lead files with them, and rank every source on what it collected.

What to export

NextGen

Export collections from NextGen, bring referral and campaign sources with them, and rank every source on what was collected.

What to export

Denticon

Export collections from Denticon, upload the leads behind them, and rank sources on the patients the group actually won — office by office.

What to export

eClinicalWorks

Export collections from eClinicalWorks, upload the sources behind first visits, and rank channels on the patients who stay.

What to export

Start today

Stop guessing which ads pay off.

Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.