“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.
No API key Nothing to install in Tebra (Kareo) No card required
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.
Enough to separate a cash cosmetic line from insured work. Nothing clinical is required beyond that.
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, in most practices, a call tracking export — 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 recognises.
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. A service-line column is enough to separate lines of business.
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. Which regulatory obligations apply to a given practice is a question for that practice and its advisers — we never see your records and are not in a position to answer it.
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.
A service-line column keeps them apart. Without it, a handful of cash cases can flatter a channel whose insured volume is collecting at a fraction of what it billed.
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. Exporting adjustments as well lets you see why, rather than only that.
Practices that find this generally change the targeting rather than the budget, which is a cheaper fix 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 an optional service line.
Twelve to eighteen months, so the collection lag is fully inside the file.
Yes, with a service-line or payer column.
No, but most practices book by phone, so a call export is usually the strongest second file.
Yes, with the relevant column, on Growth and above.
No. It works from a CSV export, so nothing is authorised and nothing is installed.
Encrypted in transit and at rest, isolated per workspace, deletable in one click, DPA available.
Yes, if adjustments are exported alongside receipts. A channel with high denials is a targeting problem, not only a billing one.
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.
Start 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.