What field service software actually cost me

I run a plumbing and heating shop in Lancaster County. Three of us. Over about eight months we paid our field service vendor $5,974.05.

The first invoice was $3,468, paid up front, and I signed that one happily. Both numbers are accurate. This is how you get from one to the other, and what $795 of premium support turned out to mean when I needed it.

I want to lay out how the gap between those two things opens up, because it did not happen to me in one move. It happened in about six, and every one of them looked reasonable on the day.

I am not naming the vendor, and not to protect anybody. I am not naming them because naming them would let you read this as one bad company, and it is not. Every number below describes how this category is built. Whoever you are paying right now is running most of the same plays, and the useful thing you can do with this page is go and check.

The subscription is the smallest number on the bill

Every one of these platforms publishes a per-user price. That price is real, and it is also the least useful number on the page, because the thing you are picturing when you read it — the software doing the job you need it to do — is usually not what that price buys.

What it buys is the base platform. Scheduling, jobs, invoices. The parts that made it worth having for us were sold separately, as their own products, on their own contracts.

I ended up with three of them, signed over about six weeks. They were pitched as one connected system with the first one as the anchor, and that framing is exactly why I bought the second and the third. If you had shown me the three contracts side by side on day one, I would have asked different questions.

Worth knowing how the anchor went, since the other two were bought on the strength of it. The contract came through on a December afternoon with a same-day expiry on it. I was charged $225 for the product on the 30th. It did not go live until the 8th of January, and the 8th of January was also the first day it failed.

Price it at next year’s size, with everything on

Here is the arithmetic nobody does before signing, including me.

Take the per-user price. Multiply it by the number of people who will need a login next year, not this year, and remember that includes whoever answers the phone, not just the techs in trucks. Then add every add-on you would actually use, at its own price, on its own contract. That total is what you are deciding on.

Mine: $2,673 for the year for two seats, after a 25% discount. Then $795 for premium support, annual, paid up front on the same day. That is $3,468 before a single add-on and before a single minute of usage.

I am not telling you those numbers are outrageous on their own. I am telling you I never sat down and added them up until I was already in it, and that the way this is sold makes it very easy not to.

The discount was on the seats I signed for, not the seats I grew into

Partway through the year we put a third person on. One more seat. Nothing dramatic, and exactly the thing you would hope your software makes easy.

When I went looking at what the renewal was actually going to cost, that third seat was not carrying the 25% the first two had. It was going to come back at full price. Nobody flagged it. It was not hidden either, in the sense that it was sitting there in the numbers if you went and read them.

I only found out because I went and read them, and then called and asked.

Think about what that means as a shape. The discount is attached to the deal you signed on day one. Every seat you add after that, because the shop is doing well and you hired somebody, arrives at list price. The better your year goes, the worse your rate gets, and the difference shows up a year later on a renewal quote most people skim.

I do not think anyone sat in a room and designed that to catch me. I think it is just how the pricing is built, and nobody has any reason to bring it up. Which is the same thing from where I am standing.

What $795 of premium support bought

That $795 is its own line on the July invoice. Premium support. Annual, up front, paid before I had the first idea whether I would need it.

I want to walk through what it bought, because it is the part I am angriest about and it is the part that is hardest to put in a number.

In late December I asked where my setup was. I was told my account manager would reach out that day. He did not. I asked again on the second of January. I was told he would assist me that day. He did not. He surfaced on the fifth.

On the fifth of February I had a call with him. He sent a note that evening promising to follow up before lunch the next day. He did not.

Then there were fourteen days of nothing at all.

I sent him nine text messages across those two weeks, while a product I was paying for by the minute was mishandling calls from my customers. He answered none of them. The last one I sent said: Are you getting any of these?

What broke the silence on day fifteen was not support. It was a pre-written email acknowledging “the past couple of months,” which is what it looks like when somebody upstairs finally notices. He did not come back because he wanted to. He came back because he was sent.

After that it did not get better, it just got more polite. On the twenty-seventh of February I got a written commitment: full refund, incoming invoice voided, billing paused, someone to meet me on the fourth of March, a kickoff document by the fourth of March. On the twenty-eighth I was billed again. On the second of March I was told the refund was being initiated right now, keep an eye out, talk soon. Nobody talked soon. On the fourth of March, the day both deliverables were due, one person told me the document was late and that somebody else would reach out separately about the money. She never did. Then five days of nothing. Then an automated system email. Then, a week later, the document, with no mention of the refund at all.

The refund moved on the twelfth of March, and only because I said I would not book another call until it had. What moved it was my account manager writing: I need to eat this one. This one was 100% my fault. I believe he meant that. I also think he was the only one in the building willing to write it down.

None of that is a product problem. A product can be broken; that happens, and I have shipped broken things myself. This was a company that would tell me a thing was going to happen and then simply not do it, over and over, for four months, while the invoices kept going out on time.

The invoices never once ran late. Not one of them. I want you to sit with that next to the fourteen days of silence, because those two facts were produced by the same company in the same month, and only one of those systems was working.

The rate you are quoted and the rate you sign are two different numbers

One of the add-ons billed by the minute.

On the sales call I was quoted $2.25 a minute, with an offer to bring the monthly minimum down. The contract I signed that same afternoon said $4.50. Nobody said that number out loud on the call, and I signed it the day it was put in front of me because I was told it expired that day.

That is on me. I signed it. I did not read every line of a contract that was handed to me under a deadline, and I have thought about that plenty since.

It is also a sales practice, and it is worth naming so the next man reads the line. Across January and February that product ran 436 minutes past its included allowance. At the $4.50 in the contract, that came to $1,962. At the $2.25 I was quoted on the call, it would have been $981.

Most of those minutes were the thing talking on calls it was mishandling. I was paying by the minute for it to get my customers wrong.

Two things you can do this week. Read the rate out of the contract, not off the call — ask the rep to point at the number in the document, and if the document is not in front of you, the number is not real yet. And refuse the expiring-today close. No legitimate software company loses money by letting you read a contract overnight.

Being billed for a thing that is not working

By February the product had not worked properly since I bought it. It answered my phone as “Tomfawk Plumbing and Heating.” On one call it went with “Tom Fog.” It did not recognise a service that was listed on my own portal, so a customer who called about it went somewhere else. It booked in the wrong time zone. I reported every failure with the call transcript attached, filled out every intake document they asked for, and sat on every call they scheduled.

I want to sit on that first one for a second, because it is the whole thing in miniature. I was paying by the minute for a machine to answer my phone, and it could not say the name of my company. Not once, over weeks. The transcripts are still in my inbox.

On February 20 I had it in writing that I would not be charged until it was working. On February 27 I had it in writing again, from a different person, that billing was paused.

In February it ran 252 minutes past the included hundred. Those 252 were billed at $4.50, and the invoice was processed on February 28 — the day after the second of those emails.

This is the point where it stops being about pricing models. Two people told me in writing that the meter was off. The meter was not off. Whatever was happening inside that company, the effect on me was that I paid for a product that did not work, in a month I had been told twice I would not be billed.

And it kept going. A product I had explicitly disabled, that their team had confirmed was disabled, and that my own account showed as disabled, answered a live call to my business in March. The caller had an emergency — a failed well pump at his house. The thing took his name, his phone number, his address and his problem, and none of that was mine to give it. They logged it as a bug in their own disablement process and told me it would not happen again.

It happened twice more, in August, on an account that had been closed since July. I reported the first of those. Nobody replied. I did not bother reporting the second one, which I suppose tells you where the relationship had got to.

Somewhere in the middle of all this I told them, on a video call, that I had spent months assuming the problem was me. That I had not configured it right, or read the right help article, or been patient enough.

It was not me. I want to say that plainly, because it is the part I would go back and tell myself. A shop owner arguing with software he is paying for will nearly always assume he is the one holding it wrong. That instinct is worth about a year of your life and several thousand dollars, and it is not warranted nearly as often as you think.

None of this is on a pricing page or a review site. You find it out the first time something breaks, which is the first time you learn what you actually bought.

Why it is built this way

I want to be fair here, because I do not think this is a room full of people trying to fleece plumbers.

Every one of these platforms was founded and built by software people. One or two will tell you there were contractors in the family, a father or an uncle in the trade, and they mean it kindly.

It is not the same thing. Watching your father come home from the trade is not the trade. It tells you what the work costs a man. It does not tell you what to do at twenty to eight when the tech calls and the part is wrong and there are two customers already waiting on him.

What changes the decisions you make in software is not having seen the work. It is carrying the liability. It is knowing that if this screen is wrong on Tuesday, you are the one who eats the callback, pays the man for the day anyway, and rings the customer to apologise. Nobody who has not stood in that spot builds the same product, no matter how carefully they interview the people who have.

So the trades got consulted, and the trades got studied, and the trades did not build it. That is not a scandal. It is just what happens when the person deciding what matters has never had to price a job in a driveway with the customer watching him do it.

What you get from that is software that is genuinely capable and priced like software. Everything is a module, because modules are how software companies grow. Every module is a line item, because line items are how the number goes up without the headline price moving. And every line item comes with somebody whose job it is to tell you about it.

That last part is the one I would warn a friend about.

You will be told, regularly and pleasantly, about things you are not using. And it works, because you are not a software person and you have no way to know whether the thing being described is essential or invented. So you sit there thinking: wait. Maybe I do need that. Maybe I have needed it this whole time and I did not know.

I want to name that feeling, because it is the same one that showed up later when the product did not work and I assumed the fault was mine. It is the same machinery. Somebody who knows more than you about their own product tells you what you are missing, and you believe them, because why would you not.

You are not missing anything. You know what your shop needs better than anybody selling to you does. If you cannot describe what a module would do on a Tuesday morning, in your own words, using a job you actually ran, you do not need it yet.

What I would actually check before signing anything

This is the part I would have wanted, so here it is plainly.

Before you sign

  • Get every contract in one email before you sign the first one. If there are add-ons, ask for all of them up front, including the ones they have not pitched you yet. A vendor that will not do that is telling you the second conversation is going to be different from the first.
  • Ask what happens to your data on the way out before you ask what it does on the way in. Confirm you can export customers, job history and invoices yourself, without a support ticket and a waiting period.
  • Find out who can turn off billing, and how fast. Not whether they will. Who, and how fast. Ask for it in writing, and then ask what happens if the system charges you anyway.
  • Price it at next year’s crew size with every add-on on. Write that number on a piece of paper and decide against that, not against the headline.
  • Ask whether your discount covers seats you add later or only the ones on the original contract. Get that in writing. If it only covers the seats you signed for, then every person you hire is quietly priced at list, and you will not find out until the renewal quote.
  • Do not sign the same day. Ever. For anything.

Where I ended up

I built our own.

I am not going to pretend that is advice. Almost nobody in this trade has any business writing software, and I would not recommend it to anyone who has payroll to make. I did it because I could, and because I was angry enough to keep going after the point where it stopped being interesting.

But it does mean the thing got built from the other side. Not by somebody studying how a shop works, but by somebody who had to get four trucks out the door the next morning and needed the software to not be the reason he could not. Every decision in it was made by a person who was going to have to live with that decision on a job that week. That is the entire difference, and it is why the tagline on the front page says Tech for Techs rather than something about empowering the trades.

It is also why there are no add-ons. Not as a principle I am proud of — as an obvious consequence. I was never going to build a module and then sell it back to myself.

It went live in our shop in April 2026 and it has run it since. The schedule, the estimates, the invoices, the texts that go out before a truck shows up.

The reason I am writing this down is not the software. It is the bill. We paid $5,974.05 in total. The per-minute product was refunded in full, $1,826.05, which I asked for and which they did eventually process. That leaves $4,148 for a year in which the thing I bought did not do the job.

And $795 of that was premium support. I have thought about that number more than any of the others, because the rest of it I can at least call a bad purchase. That one I paid specifically so that when something went wrong there would be somebody on the other end. Something went wrong. There was nobody on the other end. I sent nine texts into it.

If you are in the middle of something like this right now: the product might just not work, the bill is not going to stop by itself, and you are allowed to put it in writing and ask for the money back. I did, and some of it came back.

And if you are not in the middle of anything, and your software is fine, go and pull your own contract up tonight anyway. Find the overage rate. Find out whether your discount covers the man you hired in March. Find out which of your line items are separate agreements with their own end dates.

You are probably not with the company I was with. That is rather the point. Go and look anyway.

One more thing, if the number is all you need

Not every shop needs a platform. If what you actually need is the right price coming out on the customer’s step, that is a different tool and it costs a different amount. I built Dead Hand for that: set your rates once, and the number comes out on its own, on your phone, for $15 a month. One truck, no platform, no contract.

Friendly is the other end of the same ladder — the platform a shop moves into when the schedule stops fitting in one head. If you are somewhere in between, the honest answer is usually that you need the cheap thing for longer than you think.

Common questions

How much does field service software cost for a small shop?

The published per-user price is rarely what you end up paying. Mine was $2,673 a year for two seats after a 25% discount, plus $795 for premium support — $3,468 before a single add-on. With three add-ons and usage billing on top we paid $5,974.05 over about eight months. Price it at next year’s crew size, with every add-on you would actually use turned on.

What are the hidden costs in field service software?

Add-on products sold on their own contracts, per-user fees for office staff who only ever look at a schedule, and usage billing by the minute, the message or the transaction — at a rate that may not match what you were quoted on the call.

Does a software discount apply to seats I add later?

Often not. A negotiated discount is usually attached to the seats on the original contract, so a user you add mid-term can renew at list price. Mine did, and nobody mentioned it. I found it by reading the renewal numbers and calling to ask. Get the answer in writing before you sign.

Should I sign a software contract the same day I am shown it?

No. A deadline that exists to stop you reading the contract is itself information. Ask the rep to point at the rate inside the document, and take it away overnight.

Disclosure: I make a competing product. Friendly is the app I built to run my own shop, and it has run it since April 2026. It is priced by the size of the crew rather than per seat, and every feature is in every size. Friendly is not open to other shops yet — it opens next year, once the last bugs are out. If you want to know when, leave your email. None of the advice above depends on you doing that.