>
Business Tech

Stop blaming the price list when the queue is the problem

I spent my first year running a small hosting operation staring at the wrong number every single week.

The number on the pricing page. The number in the signup confirmation. The number that rolled into the MRR (monthly recurring revenue) report at the end of every month. I tracked it like a hawk, ran promotions to grow it, lost sleep when it dipped a few percent. The number was a beautiful, clean, satisfying number.

The number I should have been staring at was in a spreadsheet I had not built yet. It was the cost of every minute my one senior engineer spent cleaning up a malware infection, walking a confused customer through cPanel permissions, or rebooting a wedged MySQL container. When I finally sat down and added it up, the math was not pretty. Two customers could pay the same invoice and have wildly different lifetime cost to the team. One might burn a few hours of cleanup work a month, and the other might never open a ticket. They looked identical on the pricing page, and they were nothing alike on the books.

That spreadsheet changed how I run the business. Here is what it taught me, and what I wish I had done earlier.

What I learned the first time I tagged a month of tickets

I had been running support for about eight months before I forced myself to sit down with one month of closed tickets and tag each one. Not by priority or by category in the help desk software. By who actually paid for the fix. How many engineer minutes went into it. And whether the same customer came back in the next two weeks with the same problem.

The pattern was ugly. Roughly a third of the month’s engineer hours were spent on fewer than ten percent of the customers. The most expensive repeat offenders were running WordPress sites with outdated plugins, no firewall, and a habit of clicking through phishing emails. The cheapest customers ran small static sites, paid annually, and asked one sensible question every few months.

The lever I had been ignoring was not acquisition cost or pricing tier structure. It was the cost of every customer after the sale. Two customers can pay the same invoice amount and have wildly different lifetime cost to your team. If you do not measure that, your pricing decisions are guesses.

  • One customer who triggers a hacked-site ticket every other month can consume more engineer time than ten quiet customers combined.
  • A slow page report that takes forty-five minutes to diagnose is not a support ticket, it is a sales opportunity you cannot see.
  • A repeat infection that is never fully remediated doubles your support cost for that customer and quietly erodes your margin on the whole node.
  • Annual payers who never email you are subsidizing the rest of the cluster, and you have no way to know it without the spreadsheet.
  • Customer concentration matters. If your engineer hours are dominated by your worst five customers, the answer is not better support tooling.

Stop letting the same five accounts set your engineering payroll

Once you have the spreadsheet, you have a choice. You can use it to fire the bad customers, or you can use it to fix whatever is breaking them in the first place. Most hosting operators I have talked to skip the second step and wonder why their churn rate never improves.

Here is what tends to work. First, build the smallest possible set of preventive controls that stop the same handful of problems from becoming tickets. For a typical WordPress-heavy VPS cluster, that means a hardened kernel with live patching so reboots do not interrupt customer sites, a web application firewall that actually blocks bad bots and known exploits, and a per-account resource isolation layer that stops one noisy site from drowning its neighbors. None of these are exotic. They are all well-known, well-supported options that have been around for years. What is exotic is actually deploying them and measuring the ticket drop.

The thing the marketing pages for those tools will not tell you is the cost. Some of them are CPU-heavy enough to notice on a busy node. Some of them conflict with custom kernel modules your more technical customers want to load. The support team needs training to read the new logs. None of that is a reason not to deploy. It is a reason to pilot on one cluster for thirty days and read your own numbers, not the vendor’s benchmark slide.

The combination that has worked for me across multiple hosts is a hardened Linux distro designed for shared hosting plus an integrated security layer that scans and blocks in real time, with a patching tool that applies kernel updates without rebooting. The exact brand names matter less than the architecture. The point is that prevention compounds. The first month you deploy it, your hacked-site tickets drop. The second month, your reinfection tickets drop. By month three, your support queue has changed shape entirely and the engineer hours that used to go to cleanup are free for revenue work.

What slow-page reports actually mean once you can see them

The other big bucket of expensive tickets is performance complaints. Without per-account resource data, every one of these is a guessing game. Your engineer logs into the node, runs top, checks load average, pokes at MySQL, asks the customer which plugin they installed last week, and forty-five minutes later they still do not know what is wrong. The customer gets a refund and feels vaguely dissatisfied. You get nothing.

With per-account resource isolation, the same ticket takes two minutes. The customer is hitting a hard cap on CPU, or memory, or I/O, and you can see exactly which one. That is no longer a support problem. It is a sales conversation. The customer needs a bigger plan, and you can show them the data that proves it.

The trick is that the visibility has to be baked into your support workflow, not buried in a dashboard nobody opens. The first action in your slow-page playbook should be “check the customer’s resource graph.” If they are pinned at their CPU cap, the conversation becomes “here is what is happening, here is the next plan up, here is what changes for you.” Most customers upgrade on the spot because the upgrade is the answer, and you have just demonstrated that you understand their problem better than they do.

A small warning. Some customers will not upgrade no matter how clear the data is. They will leave. That is fine. A customer who cannot pay for the resources they use is not a customer you want. Trust is the asset. Spend it carefully. A few rules of thumb I have learned the hard way:

  • Show the resource graph, not a sales pitch. Customers buy clarity more than they buy speed.
  • If the site is slow because of a bad plugin or theme, recommend the fix before the upgrade. Honest advice keeps people longer than any discount.
  • Build a two-minute playbook for performance tickets. If your team cannot resolve one in two minutes, training is the bottleneck, not tooling.
  • Track what fraction of performance tickets end in an upgrade versus a refund. That single number tells you if your upsell motion is real or just wishful thinking.
  • Do not sell an upgrade that does not change the experience. Customers notice the gap faster than you do.

Trade-offs to name out loud

This whole approach assumes a few things that are not free. The hardened distro and integrated security layer are not a one-time setup. They require a maintenance window every quarter to update rules and review what is being blocked. Your support team needs to learn a new set of logs and a new escalation path. Some of your more technical customers will push back when the new isolation layer prevents them from doing something they used to do. You will have a short period where tickets actually go up because the new tools surface problems nobody had reported.

The other trade-off is customer concentration. If your worst ten customers are responsible for half your support load, you have two options. You can spend the next year fixing what is breaking them, or you can tell five of them to find a different host. The first option is harder. The second option is faster. Both are valid. Most small hosts do neither, which is why their margins stay thin.

The lesson I would tell past me

If you run a hosting business and you only fix one thing this quarter, build the support cost spreadsheet. Pricing tweaks and marketing campaigns move slower than people hope. Knowing what each customer actually costs you moves margin immediately and tells you where to spend your prevention budget. Start with one month of tickets and tag them honestly. You will see the same three or four patterns eating most of your hours. Those are the only problems worth solving this month.

Leave a comment