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 ezyVet

The first consult is fifty. The client is worth thousands.

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

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

CloseRev reads an ezyVet export of invoiced visits — the client's phone or email, the amount billed and the date — and matches it against the calls and forms that produced the first appointment. A veterinary client is a multi-year relationship rather than a single visit, so a channel's value shows in what a client bills over time and not in what their first consult cost. Visits with no traceable lead are reported as Direct / Unknown.

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

The gap

New client numbers go up and nobody can say which marketing did it, or whether the clients it brought are the ones who come back.

ezyVet 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

    Client phone or email

    On the client record rather than the patient. The client is the person who rang and the person who pays; the animal is neither.

  2. Needed

    Invoiced amount

    What the visit billed, including medication and diet sold at the counter. Consult fee alone understates every channel that brings clients who buy products.

  3. Needed

    Invoice or visit date

    When the visit happened or was billed. They are usually the same day in practice.

  4. Optional

    Visit type or department

    Wellness, dental, surgery, emergency. It is the split that shows which channel brings routine care and which brings the high-value work.

Step by step

Getting the file out of ezyVet.

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

  1. Export invoiced visits

    One row per visit with a client contact detail, the amount billed and a date. Look for the invoice or sales export rather than a particular report name.

  2. Export on the client, not the patient

    A household with three animals is one client and one enquiry. Matching per patient will triple-count the relationship and distort every channel unevenly.

  3. Export your enquiries

    Call tracking, the website booking form, local search and any marketplace or directory you pay for. Contact detail plus the source.

  4. Cover twelve months or more

    The first visit is a small fraction of a client's first year. A short window measures the introductory consult rather than the client the channel produced.

  5. Upload both

    The join is the phone and the email, normalised on both sides, with repeat visits reported separately from the first.

What comes back

The page ezyVet 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 Veterinary Clinics page — not from a ezyVet account.

Traced to a channel$149,50065% of $230,000
Sales matched258 of 390high confidence only
Average sale$590per paid sale
ChannelShareSalesRevenue
Google Ads148$96,600
Meta Ads71$34,500
Email marketing39$18,400
Direct / Unknown132$80,500

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 visit and the ad share a row.

A new client is a decade of visits, not a consultation fee

A puppy or kitten arriving as a new client will generate vaccinations, neutering, annual wellness visits, dental work, medication and eventually senior care — for ten years or more, from one acquisition.

Measured on the first visit, every channel looks roughly the same and all of them look expensive. Measured across a year, they separate sharply, because the propensity to stay with a practice differs by how the client found it.

That is the comparison this produces, and it is not available from any single system: the enquiry is in the ad platform and the ten years of invoices are in ezyVet.

Emergency and routine are bought differently and are worth differently

An emergency visit is searched for urgently, converts immediately, bills a great deal and frequently never returns — the client has their own vet elsewhere.

A routine wellness enquiry converts slowly, bills little on the first visit, and may stay for a decade. Both are valuable and they are valuable in opposite shapes.

Ranking channels on a single month's revenue will always favour emergency, because the money lands at once. Splitting by visit type, and reading a long window, is what stops the practice buying only the traffic that never comes back.

Product and medication belong in the revenue

Food, preventatives and medication dispensed at the practice are a meaningful share of what a client bills, and they are unevenly distributed — some clients buy everything at the counter, others buy online.

Excluding them measures the consult and misses the client. The channels that bring engaged, compliant clients are exactly the ones this exclusion penalises, which is the opposite of useful.

If the export separates services from products, keep both and let the report show the split. It frequently explains a channel that looked mediocre on service revenue alone.

One household, several animals, one enquiry

The commonest data error in this category is treating each patient as a customer. A household with two dogs and a cat is one client record, one phone number and one marketing decision.

Exported per patient, that household appears three times, and channels producing multi-pet households are inflated relative to channels producing single-pet ones — for no reason connected to marketing.

Exporting at the client level fixes it at the source, and it is worth checking before the first upload rather than after the first confusing report.

Fair questions

“ezyVet already does that.” Not quite.

They say

“Most of our clients come from word of mouth.”

We say

Very likely, and the report will say so rather than hide it. Knowing the true share of Direct / Unknown is what makes the paid channels readable.

They say

“Our practice management holds clinical data.”

We say

None of which is needed. A contact detail, an amount and a date — no patient record, no clinical history, no prescriptions.

They say

“We do not run much advertising.”

We say

Then the question is whether the little you run pays, which is a smaller question with the same answer shape and the same two files.

Questions

ezyVet, specifically.

Something else? Ask us and a person answers.

No. It reads a file you exported; nothing holds a credential to your practice.

ezyVet 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 ezyVet, no API key, and no need to have been tracking anything until now. Last year works as well as this month.