“Our billing is outsourced.”
Then the export comes from your biller. Encounter-level financial reporting is standard, and they can run it.
For Tebra (Kareo)
Tebra's encounter export carries receipts as well as charges — which is exactly what an honest channel report needs.
CloseRev reads a Tebra export of receipts — patient contact detail, the amount received and the service date — and matches it against the calls and forms that produced the appointment. It answers which marketing produced patients who were actually seen and paid for, rather than which produced appointment requests. No patient record leaves the practice beyond the columns the match needs.
Page updated September 24, 2026.
The gap
Charges are not revenue. Between the charge posted on the day and the money in the account sit the contractual adjustment, the patient balance and sometimes a denial.
What was sold, to whom, and for how much.
The click, the keyword, the call, and what each one cost.
The file
Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.
The patient record on the encounter. Either is fine; phone tends to be more complete in practice data.
Money actually received. Tebra's encounter-level reporting exposes receipts alongside charges and adjustments, which is the distinction that makes this segment work.
Use service date rather than posting date, and keep it consistent. The two answer different questions and mixing them is the classic reconciliation error.
The site the patient was seen at, mapped as Location, for a practice with more than one. Nothing about the visit itself — no service line, payer or provider.
Step by step
Written for somebody with Tebra (Kareo) open in the next tab. Report names vary by edition, so each step says what to look for.
Tebra's encounter reporting lists encounters with the patient, the service date, charges, adjustments and receipts. That is the shape you want — one row per encounter with money on it.
Decide once and stay with it. Tebra's own documentation is explicit that figures tied to encounters in a period will not agree with reports built on payments posted in that period.
A financial export with no phone or email cannot be matched to a call or a click.
Mapping is suggested and confirmed by you. Manual mapping is always available.
Ad platform exports and a call tracking export if you have one, combined into a single lead file with the source named on each row. Patients book by phone far more often than by form.
What comes back
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 Medical Clinics page — not from a Tebra (Kareo) account.
| Channel | Share | Sales | Revenue |
|---|---|---|---|
| Google Ads | 41 | $148,200 | |
| Meta Ads | 33 | $81,900 | |
| Email marketing | 16 | $39,000 | |
| Direct / Unknown | 44 | $120,900 |
Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.
The argument
A practice management system posts a charge on the day of service and collects some fraction of it weeks later, after the contractual adjustment, the patient responsibility and occasionally an appeal. The gap between charged and collected is routinely large and it is not uniform.
That matters for attribution because payer mix differs by channel. A channel that brings self-pay cosmetic patients and a channel that brings insured patients can post identical charges and collect amounts that are not remotely comparable. Ranked on charges, they look alike. Ranked on receipts, one of them is twice the other.
Tebra's encounter reporting exposes receipts alongside charges, which makes the honest version of this report straightforward to produce. Export receipts, and the channel table reconciles to the practice's own financials instead of to a gross-charges figure nobody recognizes.
Tebra's documentation warns that an encounter-scoped report will not tie out against reports built on a posting period, because the two are scoped differently by design. That is not a quirk; it is the accrual-versus-cash distinction showing up in a reporting menu.
For attribution, service date is usually the right choice: it puts the money next to the visit the marketing produced. Posting date answers a cash-flow question instead. Either works here provided you use the same one every time, and the report says which one it is reading.
The match reads a contact detail, an amount and a date. Diagnoses, notes and clinical detail are not needed, are not read, and should not be in the export. The one optional column worth adding is the site, for a practice that runs more than one.
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. CloseRev does not sign HIPAA Business Associate Agreements and is not built for protected health information; whether even a contact detail and an amount count as PHI under your obligations is a question for your compliance lead before the first upload.
Many independent practices run a self-pay line alongside insured work: aesthetics in a dermatology practice, cosmetic procedures beside medical ones, membership beside fee-for-service. They are marketed with different keywords at very different costs and they collect at completely different rates.
CloseRev does not split them by service line or payer: a column marking which patients came for cosmetic work and which were insured would put health information in the file. What keeps the whole-practice ranking honest is receipts — each channel is credited with what its patients actually paid, not what was billed — though it will not show how a channel's total divides between the two lines. Where each line runs from its own site, a Location column separates them without describing anyone's care.
If one channel's patients are denied or written off at a materially higher rate than another's, that is a marketing finding wearing a revenue cycle costume. It usually means the channel is bringing patients whose coverage does not match the service, or self-pay patients who do not complete payment plans.
Because the report is built on receipts rather than charges, that difference shows up automatically as a lower revenue figure for the channel. The report shows that it happens, not why; the adjustments stay in Tebra, where the billing team can trace them.
The fix that points to is often in the targeting rather than the budget, which is cheaper than either raising or cutting spend.
Fair questions
Then the export comes from your biller. Encounter-level financial reporting is standard, and they can run it.
Which is why the report is built around service date with a receipts column, rather than assuming money lands in the month the patient walked in.
A contact detail, an amount and a date is all the match reads. You choose what the export contains.
Encounter-level financials: a patient phone or email, receipts, and the service date.
Receipts. Charges overstate every channel, and unevenly, because payer mix differs by channel.
Service date for attribution, used consistently. Tebra's own docs note the two will not tie out against each other.
No. A contact detail, an amount and a date, plus the site if you run more than one.
Twelve to eighteen months, so the collection lag is fully inside the file.
Only by what they paid. The report ranks on receipts, so self-pay and insured patients each count at the amount actually collected — with no column in the file saying which was which.
No, but most practices book by phone, so a call export is usually the strongest second file.
Yes: a location column mapped as Location shows each site's receipts and how much of them traced to a channel.
No. It works from a CSV export, so nothing is authorized and nothing is installed.
CloseRev does not sign HIPAA Business Associate Agreements and is not built for protected health information. Export only non-clinical fields from Tebra — a phone or email, the amount and the date — never diagnoses, treatments or notes. If those contact fields count as PHI under your obligations, talk to your compliance lead first.
Not as a rate. Because the report ranks on receipts, a channel whose patients are denied more shows up as less revenue; the denials themselves stay in Tebra's own reporting.
Yes. The billing side is the side that holds the money, which is the side this needs.
By trade
What the report looks like once the export is in, written for each one.
Other systems
Running more than one system, or comparing? The method is the same and the columns are not.
Tebra (Kareo) 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.
From 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 articleA multi-location business that reports one national attribution number is hiding its most important finding. The same campaign performs differently in every market, and the aggregate is an average of things that should never have been averaged.
Read the articlePerformance Max spent three years as the campaign that would not say where your budget had gone. In 2026 Google opened the channel report and answered that. It is a real improvement, and it answers a question your finance director was not asking.
Read the articleStart today
Nothing to install in Tebra (Kareo), no API key, and no need to have been tracking anything until now. Last year works as well as this month.