The zero-markup SKUs hiding in your pricebook
Somewhere in your ServiceTitan pricebook are items you are selling at cost, and you almost certainly do not know which ones. They are not obvious.
They sit in the book at a clean-looking price, and only when you put cost and price side by side do you see that the markup is zero, or close to it, or negative. They got there quietly, and they bleed margin every time a tech sells one.
How they get there
Zero-markup items are not a pricing decision. Nobody sat down and chose to sell a float switch at cost. They are an accident of how the book was built, and there are two common ways in.
Migration
When a shop moves to ServiceTitan from older software, the items get exported and pasted in, and somewhere in that move the price field gets filled with the cost, or with a number that was already stale in the old system. This is one more reason importing the old book as-is is a trap: you inherit every price mistake the old system had, invisibly.
Cost creep
The item was priced with a real markup at go-live, then the supplier raised the cost two or three times, and the price never followed. The markup gets eaten from underneath until the item is selling at or below cost. That is the same mechanism that makes your price right on Monday and wrong by Friday, just frozen in the book instead of in the field.
Why they hide so well
A zero-markup item looks completely normal on the screen. The price is a clean number. The tech sells it without a second thought, because nothing about it signals a problem.
The only way to see it is to put cost and price next to each other across the whole book and look at the gap. Most owners have never done that, because exporting the book and lining up every cost against every price by hand is a miserable afternoon. So the items stay hidden, and they are usually the small, high-volume parts a tech sells dozens of times a week, which is exactly where it adds up.
What they actually cost
The damage is not one big number, it is a thousand small ones.
A part you sell at cost two hundred times a year, that should carry forty dollars of margin, is eight thousand dollars you simply did not collect, on one SKU, while doing all the work. Multiply that across the handful of zero-markup items in a typical book and it is real money, and it is the cleanest money to recover because the job is already getting done.
You are not selling more, you are just not selling at cost. This is the kind of leak that means a perfect implementation can still lose money daily: the system is fine, the prices behind it are not.
How to find yours
Do it in three moves:
- Export the pricebook and put cost beside the member and non-member price.
- Sort by the margin between them. Everything at or near zero, or negative, is the list.
- Re-price each one to your real markup, the same markup you would apply if you were adding it fresh today.
The free Pricebook Health Audit does this across the whole book automatically and hands you the list of items selling at or below cost, no miserable afternoon required.
When the list is long, or when the prices need a full rebuild on a real loaded labor rate so this stops happening, that is the work we do. The full picture of a book that prices on purpose is in the complete guide to a ServiceTitan pricebook that sells.