Episodes, not inquiries
Rank channels by care actually delivered and billed rather than by first appointments.
Marketing attribution for physical therapy practices
Match billed episodes of care to the inquiries, referrals and ads that produced them — because one visit is not an episode.
$213,000 71% of $300,000 paid
The blind spot
A new patient inquiry is worth almost nothing; a completed twelve-visit plan of care is worth a great deal. Inquiry counts treat them identically.
What you get
Rank channels by care actually delivered and billed rather than by first appointments.
Physician referral is a channel like any other once its list is uploaded.
A contact detail, an amount and a date. No clinical information.
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 | 96 | $72,000 | 24% | |
| Physician referral | 148 | $114,000 | 38% | |
| Meta Ads | 44 | $27,000 | 9% | |
| Direct / Unknown | 112 | $87,000 | 29% |
A plan of care is a course of visits. A patient who attends once and drops out is worth a fraction of one who completes, and the difference between channels on that measure is large.
Ranking by billed episode rather than by new patient shows which channels produce patients who finish. That is usually the difference between a marketing budget that grows the clinic and one that just fills tomorrow's diary.
Most clinics treat referral as untrackable and advertising as measurable, which flatters advertising and hides the largest source of care.
Add the referral list to the lead file, each patient tagged with the referring practice, and it attributes like any other channel — including which referring practices actually produce patients who complete care, which is a conversation worth having with them.
A course of therapy is not one appointment, it is a plan of care running eight to twenty visits over six to twelve weeks, and the payer frequently decides how many of those visits will be funded. That ceiling is invisible to any advertising measurement, and it is not evenly spread across sources. Plans that authorize six visits and plans that authorize twenty arrive through different adverts, because the adverts that mention coverage attract people for whom coverage is the deciding factor.
This makes visit counts a misleading unit even inside the clinic. Two sources producing the same number of new patients can differ by a factor of two in funded visits per patient, and therefore in revenue, without either of them doing anything wrong. A clinic ranking channels on new evaluations is ranking them on the one part of the episode that every payer covers, and ignoring the part where the money actually accumulates. The gap compounds over an episode, because the visits a payer will not fund are the later ones, which is where a course of care either finishes properly or quietly stops. Clinics feel this as a retention problem long before they recognize it as a measurement problem.
Exporting completed, paid visits with a patient contact detail on each row solves it without any modeling. All the visits from one person join to that person and therefore to the inquiry that produced them, so the report ranks sources on episode value rather than on evaluations booked. No service type, diagnosis or body region belongs in the file: a contact detail, an amount and a date are all the match reads.
A growing number of practices run a self-pay line alongside the insured caseload: performance work, post-rehabilitation training, dry needling packages, sessions sold at a rate the clinic sets rather than one it is handed. The economics are completely different. A cash session collects in full on the day at a price the clinic chose, and an insured visit collects an allowed amount weeks later after a claim, an adjustment and sometimes an appeal. One of those two lines can be advertised at almost any price and still make sense, and the other cannot, which is the whole reason it matters that they are told apart in the report.
Advertising treats them as one funnel because they share a phone number and a website. That is the trap: a campaign producing cash-pay clients can be worth several times a campaign producing insured referrals at the same cost per inquiry, and no report inside an advertising account will ever say so, because the platform knows a form was submitted and nothing about what happened next. Clinics frequently underfund the profitable half for years on the strength of an even-looking lead count.
Seeing it does not need a column, and a payer column is not one to add: whether somebody's care was insured is health information, and CloseRev signs no business associate agreements. If the cash-pay line is the question, export only the cash-pay revenue, so the file carries nothing but a contact detail, an amount and a date, and the report ranks channels on that line alone. Cash work tends to produce fewer, higher-value visits, which shows up as value per sale — precisely the shape a volume-based dashboard is worst at seeing. It turns a vague preference for cash work into a number that can sit next to a budget line, and it can make the case for a dedicated landing page, which is usually the cheapest improvement available.
A surgeon tells a patient to go to a named clinic. The patient goes home, types that clinic's name into a search engine, clicks the advert sitting above the practice's own listing, and books. The advertising account records a conversion and claims the entire episode. Nothing in that record is false, and the conclusion drawn from it — that branded search is the clinic's most efficient channel — is completely wrong, because the referral did the work and the advert intercepted a patient who was already arriving.
This is the most expensive measurement error in outpatient therapy, and it is self-reinforcing: branded campaigns look efficient, so they get more budget, so they intercept more referred patients, so they look more efficient. Clinics have spent years bidding on their own name on the strength of it. The only way out is to know the referral source independently of the click, which means capturing it at intake and putting it in the file rather than inferring it afterwards. It is also the reason a first report in this segment often shows a smaller paid share than the clinic expected, and that smaller number is the useful one.
Where the intake form records a referring physician, add those patients to the lead file with the physician as their source, and that source is ranked beside paid media on collected revenue. A patient who appears both as a referral and as an ad inquiry is credited to whichever lead came first; the report does not show that overlap as a separate figure, but every match links back to the rows behind it. Only exact matches count automatically, which matters here because the wrong answer is one a clinic will act on for years.
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 upload the referral list and measure it. Treating referral as invisible while measuring ads precisely gives you a distorted picture of both.
Run the report over a longer range and the whole episode traces back to the channel that produced the patient.
You should not. Contact detail, amount and date only — no diagnoses, no notes.
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 outpatient physiotherapy and rehabilitation clinics — 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.
Billed care: a patient phone number or email, the amount, and the date.
Run the report over the full episode length and the difference shows in the revenue per patient by channel.
Yes — add the referral list to the lead file, each patient tagged with the referrer, and referral becomes a measurable channel.
By site, yes: a site column mapped as Location. A clinician column is not one to add, because which clinician somebody saw can reveal what they were treated for.
A contact detail, an amount and a date. Notes, diagnoses and billing codes are not read, so leaving them out changes nothing about the match.
No. It is useful rather than required, and plenty of physical therapy practices run this with only an ad platform export.
Yes. Those cases were recorded because you billed for them rather than because anybody was tracking, so a finished year matches exactly as well as the current one.
Billed rows analyzed in a calendar month. Inquiry and referral rows do not count.
Export each paid visit as its own row. Every visit carrying the patient's contact detail credits the inquiry that produced them, so the channel ranking shows episode value by source without you defining where an episode ends. Each visit is still one sale in the report and counts toward the monthly record allowance.
Either, as long as it is the same choice every month. Visit dates track clinical activity and payment dates track cash; clinics reporting to an owner usually pick payments, and clinics judging campaigns usually pick visits.
Not with a column: whether somebody's care was insured is health information and stays out of the export. If the cash-pay line is the question, export only the cash-pay revenue, and the report ranks channels on that line alone.
Those visits join to the same person, so they credit the inquiry that first produced them. There is no setting to treat a return as a new episode: a later inquiry only gets the credit if it is the earliest lead carrying that contact, which it will not be.
Capture the referring physician at intake and list it as a source in the inquiry file. It is then ranked beside paid channels, which is the only way to tell a genuine referral from an advert that intercepted one.
They behave like any other inquiry and are ranked on the revenue their episode produced. How somebody was referred into care is not a column to add; if direct access arrives through its own route, tag that route as a source in the lead file instead.
CloseRev does not sign HIPAA Business Associate Agreements and is not built for protected health information. Upload only non-clinical visit billing — a phone number or email, the amount paid and the date — never diagnoses, plans of care, body regions or therapist notes. If your patients' phone numbers and emails count as PHI under your obligations, talk to your compliance lead before using CloseRev.
Nearby
Match care plans purchased and visits billed to the offers, ads and referrals that produced the patient.
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 worksMatch invoiced visits to the calls and ads that produced them, and see which channels bring clients rather than inquiries.
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 exportMatch collected revenue to the campaigns and calls that produced the patient, across the months a claim takes to settle.
What to exportExport invoiced visits from ezyVet, upload the inquiries beside them, and rank marketing on what clients billed rather than on appointments booked.
What to exportExport your Mindbody sales, upload the leads that produced them, and rank marketing on what members spent rather than on trials booked.
What to exportExport collected payments from AdvancedMD, upload the inquiries beside them, and rank marketing on what was actually received.
What to exportExport collections from ChiroTouch, upload the leads behind them, and rank marketing on the plan rather than the first appointment.
What to exportExport collections from DrChrono, upload the leads behind them, and rank channels on what was actually received.
What to exportExport sales from WellnessLiving, upload the leads behind them, and rank channels on members rather than on intro passes.
What to exportExport collections from eClinicalWorks, upload the sources behind first visits, and rank channels on the patients who stay.
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 articleEvery attribution vendor quotes a match rate and none of them define it the same way. Here is what the number actually measures, what range is honest for a mid-market business, and the three ways the figure gets inflated before it reaches your slide.
Read the articleStart today
Upload two exports and see your real revenue by channel in minutes. 14 days free, no card.