
Guides
How to rank pet grooming services by contribution per table hour
A method for ranking grooming services by contribution per table hour from your own booking record, using agreed price, consumables, occupied minutes and rework.
What to take away
- Contribution per table hour, not price, ranks a menu, and the two rankings frequently disagree.
- The variables are all readable from your own bookagreed price, occupied minutes, direct consumables, and rework.
- Drying time belongs in the occupied minutes even when the groomer is elsewhere, if it holds a station a paying dog needs.
- Rework and callbacks reduce contribution for the service that caused them, not for the day they land in.
- Rank the menu twice a year and expect the order to move, because coat mix moves with the seasons.
Profitable pet grooming services rarely sit at the top of the price list. A long breed pattern can occupy a table for most of a morning. Four well maintained smooth coats can pass through that same table in the morning and leave more behind.
The variable that ranks a menu
Let A be the agreed price for one appointment of a given service. Let C be the direct consumables that appointment uses. That covers shampoo, conditioner, disposables, and the blade sharpening and replacement it causes. Let O be the minutes it occupies a station that another paying dog could otherwise be in.
Contribution per table hour inputs
- Aagreed price per appointment
- Cdirect consumables per appointment
- Ominutes on a contended station
- Raverage rework minutes per appointment
| Variable | What it holds | Where the value comes from |
|---|---|---|
| A | The price actually agreed for one appointment | The booking record, after any discount |
| C | Direct consumables that appointment causes | Purchase records, divided by appointments |
| O | Minutes it occupies a contended station | Timing sheets kept at the table |
| R | Rework minutes it generates on average | Callback log, attributed to the original service |
Contribution per table hour is A minus C, divided by O, multiplied by sixty.
Everything else is a judgment call about what belongs in O.
Deciding what counts as occupied
O is where menus are usually flattered. Three rules keep it honest.
What counts as occupied time
- Count drying minutes if the position is contended
- Count intake and collection at a stopping counter
- Count minutes settling a dog that will not stand
- Split shared minutes when two dogs run in parallel
- Count drying minutes if the drying position is a station another dog needs. If your room can dry one dog while a second is on the table, the drying minutes belong to whichever dog is holding the scarce station.
- Count intake and collection when they happen at a counter that stops other work. A five minute handover repeated all day is an appointment.
- Count the minutes spent settling a dog that will not stand, because those minutes are real and they land on this service, not on the next one.
The question O answers is not how long the groomer was busy. It is what the salon gave up to sell one more of this service.
Where two dogs genuinely run in parallel with no contention, split the shared minutes between them rather than charging both.
Rework belongs to the service that caused it
A callback is unpaid table time, and it is caused by a specific service on a specific coat. Attribute it there.
Attributing rework to its cause
- Callback log records unpaid table time
- Attribute rework to the original service
- Average rework minutes per appointment gives R
- Add R to O before dividing
- Service with rework tail ranks lower
Let R be the average rework minutes a service generates per appointment, taken from the callback log rather than from an impression. Add R to O before dividing. A service with a good headline contribution and a persistent rework tail then ranks below a plainer one.
The most common source of R is a coat declared dry that was not dry to the skin. It shows up as a finish that will not hold, and it lands on the double coat services first. The equipment and setup guide explains why drying capacity, rather than skill at the table, is usually the thing that fixes it.
Reading the ranking without over-reading it
Three patterns are worth acting on:
- A line at the bottom that generates most of the rework. Rewrite its description or its duration.
- A line at the top that is rarely booked. Find out whether clients can see it on the menu at all.
- A line whose O has drifted since it was last timed. Time it again.
One pattern is not. Do not delete the lowest line without asking what it feeds. An entry level bath and dry that brings a household into the salon can rank last and still be why the top line is booked.
Contribution also says nothing about who can perform the service. A line that only one groomer can finish is a scheduling risk regardless of where it ranks, which is a staffing question handled in the hiring and training guide rather than a pricing one.
Keeping the inputs defensible
Every variable above should trace to a record. Agreed prices come from the booking, not from the menu, because discounts happen. Consumables come from purchase records; the Internal Revenue Service note on which business records to keep is a reasonable standard for how long to hold them. Occupied minutes come from timing sheets.
No line here comes from an industry average. There is no national figure for what a wire coat takes in your room, and the Bureau of Labor Statistics profile of animal care and service work describes the occupation, not any salon's minutes.
Call a service a saving or a best value in public and the claim has to hold up against what you actually charge. The advertising standards for small businesses published by the Federal Trade Commission set the general test.
The menu the ranking runs on is built in the services and packages guide. Using the ranking to decide on a second room or a second van pushes the question into the expansion and market guide. The groundwork for a first one is in how to start a pet grooming business.
Common questions
Why not just rank by price?
Because price ignores duration, and duration is what a salon actually sells. Two services at the same price can occupy the table for very different periods, and a ranking that ignores duration will recommend filling the day with the slower one.
Should overheads be allocated to each service?
Not in this model. Contribution deliberately stops before fixed costs, because fixed costs do not change with which service is booked. Allocating them adds a layer of assumption without changing the order of the ranking.
How often should the ranking be rebuilt?
Twice a year is usually enough, with one of those runs falling in the season when heavy coats dominate the book. Rebuilding it monthly tends to chase noise rather than find drift.
What if a low ranking service is the one clients ask for most?
Then the duration or the description is probably wrong rather than the service. Time it again, compare it with what is actually being delivered, and correct whichever of the two has drifted before considering removing it.







