Project work pays well and then stops. An agency that builds twenty sites a year starts every January at zero. Hosting and maintenance is the usual fix: a small monthly fee per client that arrives whether or not you sold anything that month. Done badly, it becomes an unpaid support desk. This post works through the numbers at 20 and 50 client sites, what to put in the plan, how to bill it, and the technical setup that keeps the support load small.
The cost side is almost nothing
The raw hosting cost per client site on a reseller plan barely affects the decision. Using our own reseller plans as the example:
| 20 client sites | 50 client sites | |
|---|---|---|
| Plan | Partner Grow | Partner Pro |
| Accounts on the plan | 25 | 50 |
| Storage pool | 30 GB SSD | 60 GB SSD |
| Monthly traffic pool | 600 GB | 1200 GB |
| Plan price, monthly | $26.99 | $44.99 |
| Hosting cost per site | $1.35 | $0.90 |
| Plan price, annual | $269.90 | $449.90 |
At 50 sites the plan is full, so plan the next step at 40, not at 50.
Tip: the account count is rarely what you run out of first. 60 GB across 50 sites is 1.2 GB each on average, mail included. A few clients with ten years of mail will use the pool long before the account limit, so set a disk limit per package.
What you are actually selling
Nobody pays $59 a month for $0.90 of disk. They pay for not having to think about the website. So the product is a care plan, and hosting is one line inside it. A reasonable three-tier structure, with prices as illustrations to adapt to your market:
| Hosting | Care | Care Plus | |
|---|---|---|---|
| Example price per month | $25 | $59 | $129 |
| Hosting, SSL, daily backups | yes | yes | yes |
| Core, plugin and theme updates | no | weekly | weekly |
| Uptime monitoring | no | yes | yes |
| Content changes | hourly rate | 30 min a month | 2 hours a month |
| Response time | 2 working days | 1 working day | same working day |
Three rules keep this profitable:
- Define the allowance in minutes, and say it does not roll over. "Small changes" without a number becomes a redesign.
- Write down what is excluded: new pages, new features, third-party plugin licences.
- Make the middle tier the default in every proposal.
Worked numbers at 20 and 50 sites
Assume every client is on the $59 Care tier; a real book will have a mix.
| 20 sites | 50 sites | |
|---|---|---|
| Monthly recurring revenue | $1,180 | $2,950 |
| Annual recurring revenue | $14,160 | $35,400 |
| Hosting plan per year (monthly billing) | $323.88 | $539.88 |
| Hosting as a share of revenue | 2.3% | 1.5% |
Hosting is not the real cost. Time is. Put your own figures in, but as a planning assumption take 30 minutes per site per month for updates, checks and the change allowance, at an internal cost of $60 an hour:
| Per site, per month | Amount |
|---|---|
| Care plan price | $59.00 |
| Hosting (50-site case) | $0.90 |
| Labour, 30 min at $60/h | $30.00 |
| Left over | $28.10 |
At 50 sites that is 25 hours of work a month and about $1,400 a month left after hosting and labour. Every minute you automate out of the 30 is margin, and one site that takes two hours a month wipes out the margin of two good ones. Pricing from the cost side is worked through in how to price hosting plans as a reseller.
Invoicing without chasing
- Bill in advance, never in arrears.
- Take a card or direct debit mandate at signup. Bank transfer on a monthly invoice means twelve reminders a year per client.
- Offer annual at a discount. It improves cash flow and removes eleven chances to cancel.
- Start the plan at launch, as a line in the build proposal. Selling it six months later is much harder.
- Put the suspension policy in the contract, then let the billing system enforce it so it is never personal.
Up to about fifteen clients, your accounting software's recurring invoices are enough. Beyond that, a billing system that also suspends and unsuspends accounts saves real time; connecting WHMCS to DirectAdmin shows that setup.
Churn, and why it is lower than you fear
Hosting clients leave for three reasons: the business closes, a new agency rebuilds the site, or something went wrong and nobody told them. Only the third is in your control.
If you have 50 clients and lose one every two months, that is six a year, 12% annual churn, and $354 of monthly revenue to replace by year end at $59 each. Launch more than six sites a year with a plan attached and the base grows.
What keeps clients is a short monthly report (updates applied, uptime, backups taken) and hearing about problems from you before they notice.
Tip: keep every client domain in the client's legal ownership even when you manage it. It removes the ugliest possible argument at the end of a relationship.
Support load: where the time goes
In our experience running shared and reseller hosting, a large share of support questions are about email, not websites: a new phone, a full mailbox, a message that went to spam. Decide early whether mailboxes are in your plan. If they are, write a one-page setup guide and send it instead of answering each time.
A checklist that keeps the load flat as you grow:
- One support address feeding one shared inbox. No requests by text message.
- A record per client: registrar, DNS location, PHP version, paid plugin licences.
- A fixed update day each week, so breakage happens when you are at your desk.
The technical setup that protects the margin
One hosting account per client. Never stack ten client sites as extra domains under one account. Separate accounts mean a hacked plugin on one site cannot read the files of another, and a client who leaves gets a backup of only their own data. On a CloudLinux platform each account also has its own resource limits, explained in how LVE isolates accounts.
Backups you have tested. Our reseller platform takes daily off-site backups kept for 14 days. That covers a bad update noticed this week. It does not cover a hack discovered after a month, so keep a monthly copy elsewhere, and restore one site every quarter to prove the process.
Updates as a routine, not a mood. Where SSH and WP-CLI are available on the account, a weekly pass per site is four commands:
cd ~/domains/client-site.com/public_html
wp core update --minor
wp plugin update --all
wp theme update --all
wp core verify-checksumsRun major version updates on a copy first; WordPress staging covers the clone, test and sync cycle. Without shell access, the WordPress Manager in the panel logs you in to each dashboard without a password, which keeps the same pass quick by hand.
Tip: move sites to newer PHP versions one at a time on your own schedule. The alternative is many of them breaking on the day an old version is withdrawn.
A realistic first year
Start with existing clients. Offer each one the care plan with a start date, move the willing ones onto your reseller account, and attach the plan to every new build from then on. Twenty sites on the middle tier is $14,160 a year of predictable income against a few hundred dollars of hosting. The agency page shows how the reseller plans map onto that setup.