Revenue tells you which service lines are busy; margin tells you which ones make money — and they're often not the same. A practice can be loaded with pharmacy volume that runs on thin markups while a few dentals quietly carry the month. This dashboard ranks service lines by what they actually contribute once direct cost is taken out, so capacity and capital go where the margin is.

What this report answers

The revenue-and-margin page answers which lines earn: total service revenue, total margin dollars, the blended gross margin, and procedures performed, with each line — wellness, dentistry, surgery, diagnostics/imaging, pharmacy, boarding/grooming — compared on both revenue and margin. The procedure-economics page answers the unit question: revenue per procedure by line, and the pharmacy capture rate that shows how much prescribable revenue you keep in-house.

The metrics that matter

Gross margin is the headline because a high-revenue, low-margin line (pharmacy is the classic) can crowd out capacity that a high-margin line (dentistry, surgery) would use better. Revenue per procedure normalizes for volume so a small number of high-value procedures don't get lost behind a flood of cheap ones. Pharmacy capture rate is the leakage metric specific to vet practices — every scrip filled at an online retailer instead of your dispensary is margin walking out the door.

Why the data is trapped across the systems

Revenue by service line is reportable in most PIMS, but direct cost is not — drug and supply cost lives in the inventory module, labor is somewhere else, and the two are never netted against revenue per line. Cornerstone, AVImark, ezyVet, and Pulse can each show revenue or cost, but the margin view requires joining revenue to direct cost at the service-line grain, which only happens in an export.

How to read it

Read revenue and margin side by side first — the lines where the two bars diverge most are the ones to rethink. A line that's near the top on revenue but mid-pack on margin dollars is a candidate to reprice or to cap. Read revenue per procedure to spot underpriced work, and read pharmacy capture rate as a standing leakage check: a rate drifting down means scrips are going elsewhere.

The sample on this page uses fully synthetic data — anonymized clinic ids and made-up dollars, no real financials.

Metrics it tracks

MetricWhat it means
Total Service RevenueSum of revenue across all service lines in the period.
Gross MarginMargin dollars (revenue minus direct cost) ÷ revenue — a SUM/SUM ratio.
Procedures PerformedSum of procedure count across service lines in the period.
Revenue per ProcedureRevenue ÷ procedure count — a SUM/SUM ratio, the average value of a unit of work.
Pharmacy Capture RateIn-house pharmacy revenue ÷ total prescribable revenue — the share of scrips filled in-house rather than lost to retail/online.
Total Service Margin DollarsSum of margin dollars (revenue minus direct cost) across service lines.

Used by: Practice owners deciding where to invest capacity — dentals, surgery, wellness, diagnostics, pharmacy — by margin not just top-line revenue

Frequently asked questions

Why look at service-line margin instead of revenue?

Revenue shows which lines are busy; margin shows which ones make money once direct cost is removed — and they're often different. A high-volume, low-margin line like pharmacy can crowd out capacity that a high-margin line like dentistry or surgery would use far more profitably, which only shows up when you net cost against revenue per line.

What is pharmacy capture rate?

Pharmacy capture rate is in-house pharmacy revenue divided by total prescribable revenue — the share of scrips filled in your own dispensary rather than lost to online or retail pharmacies. A capture rate drifting down means margin is walking out the door, which is why it's a standing leakage metric for vet practices.

Can I build this on my own service-line data?

Yes. Export revenue by service line from your PIMS and pair it with direct cost from your inventory module, then use this as a template — we model it into a Power BI report. The sample uses synthetic data, so there are no real financials here.

Build this report on your own data

Clone this Vet clinics template — describe it and we’ll generate sample data so you can try it free, or upload your own export. You get a fully modeled, branded Power BI project that opens in Power BI Desktop.

Use this as a template →