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.

For RevolutionEHR

A full diary and an empty optical is a marketing result, not bad luck.

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

No API key Nothing to install in RevolutionEHRNothing to install No card requiredNo card

CloseRev reads a RevolutionEHR export of collected revenue — the patient's phone or email, the amount and the date — and matches it against the calls, forms and listings that produced the appointment. Optometry has an unusual shape: the examination is often largely covered by a plan and the optical dispense carries the margin, so a channel that fills the diary is not necessarily a channel that pays for it. Collections with no traceable lead are reported as Direct / Unknown.

Last checked against RevolutionEHR's own documentation on September 24, 2026.

The gap

Every channel can fill exam slots. Only some of them bring patients who buy glasses.

RevolutionEHR sees

What was sold, to whom, and for how much.

no shared row
Your ad account sees

The click, the keyword, the call, and what each one cost.

The file

What the export needs in it.

Three things carry the match: who, how much, and when. Anything else is optional and only changes how the report can be sliced.

  1. Needed

    Patient phone or email

    On the patient record. Both are worth exporting — plan-covered patients often give an email only.

  2. Needed

    Amount collected

    Professional fees and optical together, as received. Charges are not collections, and vision plan reimbursement differs from both.

  3. Needed

    Payment date

    When money arrived. Plan payments land well after the appointment.

  4. Optional

    Revenue type

    Exam, frames, lenses, contact lenses. This is the split that makes the report worth running.

Step by step

Getting the file out of RevolutionEHR.

Written for somebody with RevolutionEHR open in the next tab. Report names vary by edition, so each step says what to look for.

  1. Export collected revenue by patient

    One row per payment with a patient contact detail, the amount and the date.

  2. Keep professional and optical separate if you can

    Ranking on total collections hides the whole finding, which is that channels differ mostly on the optical half.

  3. Take a year

    Vision plan reimbursement is slow and contact lens supply is annual, so a quarter measures the diary rather than the patient.

  4. Export your lead sources

    Tracked numbers, local search, plan provider directories, social and any community or school screening programme.

  5. Upload both

    The join runs on the phone and the email, normalised, with exam and optical revenue reported apart.

What comes back

The page RevolutionEHR cannot show you.

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 LASIK & Vision Correction page — not from a RevolutionEHR account.

Traced to a channel$540,00060% of $900,000
Sales matched121 of 201high confidence only
Average sale$4,460per paid sale
ChannelShareSalesRevenue
Google Ads68$306,000
Meta Ads39$171,000
Email marketing14$63,000
Direct / Unknown80$360,000

Unmatched sales stay in Direct / Unknown. They are never spread across the paid channels to make the total look better.

The argument

What changes when the patient and the ad share a row.

The exam fills the diary and the optical pays for the practice

Where a vision plan covers most of the examination fee, the appointment itself contributes little and the dispense is where the practice earns.

That makes appointment volume an actively misleading measure of a marketing channel, because it is the half that is subsidised.

Channels differ substantially on capture rate — the share of examined patients who buy frames or lenses — and nothing in a booking report reveals it.

Splitting collections into professional and optical, then ranking sources on the optical half, is the single most useful thing this data can do.

It frequently shows that the cheapest source of appointments is the most expensive source of revenue.

Plan directories are a channel and they behave like one

Being listed as a provider for a vision plan produces a steady stream of patients who chose you from a list because you were in network.

That is a real acquisition channel with a real cost — the plan's fee schedule — and it is almost never compared with paid media on equal terms.

Those patients also behave distinctively at the dispense, because the plan sets an allowance and the patient decides whether to exceed it.

Ranking plan-sourced patients on collected revenue against search-sourced patients answers a question most practices have only ever argued about.

The answer varies by practice and by plan, which is exactly why it has to be measured rather than assumed.

Contact lens patients are an annuity and look like small transactions

A contact lens wearer buys supply every year, sometimes through the practice and sometimes elsewhere, and each purchase is modest.

Counted per transaction they look unimportant; summed across a patient over several years they are among the most valuable outcomes a channel produces.

The report sums by patient across the window, which makes the annuity visible instead of scattered.

Channels differ in how many contact lens wearers they bring, and a practice that knows which ones can weight its spend accordingly.

It also identifies where supply is leaking to online retailers, which is a pricing decision the marketing report can inform but not make. A channel bringing wearers who buy their supply elsewhere is producing less than its first-year numbers suggest, and the gap widens every year it goes unmeasured.

Recall is retention and must not be credited to acquisition

A practice runs on patients returning every one to two years, and recall communications bring most of them back.

Counted as a source, recall would take credit for the majority of the practice's revenue and make every acquisition channel look ineffective.

Reported separately, it becomes the retention measure it is, and the acquisition channels can be judged on the patients they actually introduced.

Whether a channel's patients return for recall is itself one of the more valuable things the report shows, and it is a better predictor of a practice's future than any first-year figure. A source whose patients never come back is buying you one dispense; a source whose patients return every other year is building the practice.

Fair questions

“RevolutionEHR already does that.” Not quite.

They say

“RevolutionEHR already reports revenue.”

We say

It does, and it has no record of what produced the patient, because that predates the chart.

They say

“We measure appointments booked.”

We say

That measures the subsidised half. Optical collections measure the half that pays for the practice.

They say

“Most of our patients come from the plan directory.”

We say

Then that is your largest channel and it has never been ranked against the paid ones on revenue.

Questions

RevolutionEHR, specifically.

Something else? Ask us and a person answers.

No. It reads an exported file, so your charts, prescriptions and scheduling stay where they are.

RevolutionEHR 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

Two exports, and you will know.

Nothing to install in RevolutionEHR, no API key, and no need to have been tracking anything until now. Last year works as well as this month.