Most advice on this comes down to "charge three times what you pay and keep the difference". That is a pricing tactic, not a model, and it falls apart the first time a client compares your invoice to a public price list.
Here are the four models agencies actually use, the arithmetic behind each one, and the point at which a markup stops being something you would be comfortable explaining.
The Four Models
| Model | Client sees | Margin | Support burden |
|---|---|---|---|
| Pass-through | Your cost, itemised | None | Low, but unpaid |
| Markup | A hosting line item | Modest | Yours |
| Bundled care plan | One monthly fee | Best | Yours, and expected |
| Tiered products | Named plans to choose from | Best at scale | Yours, and scoped |
1. Pass-Through
You charge exactly what it costs you and add nothing.
The appeal is that it feels honest and there is no conversation to have. The problem is that you have taken on the work of running hosting for nothing, and you have taught the client that hosting is a commodity with a public price. When they eventually see that price, your value proposition is a spreadsheet row.
Pass-through makes sense in exactly one situation: you genuinely do nothing but forward the invoice, and you want it that way.
2. Markup
You buy at one price and bill at another, itemised as hosting.
This is the most common model and the most exposed. It works while the client does not compare, and it becomes awkward the moment they do. The defence is that the number covers more than the server, but if the line on the invoice says "hosting" then that defence is not written down anywhere the client can see it.
If you use this model, name the line item for what it actually covers. "Hosting and maintenance" is both more accurate and more defensible than "hosting".
3. Bundled Into A Care Plan
Hosting disappears into a single monthly fee that also covers updates, backups, monitoring, security and a set amount of support time.
This is the model most agencies end up at, and for good reasons. The client buys an outcome rather than a component. There is no line item to compare against a public price. And it prices the thing you actually do, which is not renting a server but keeping a site working.
The risk is scope. "A set amount of support time" needs a number in it, or you will discover that your fixed fee covers unlimited work.
4. Tiered Hosting Products
You publish two or three named plans with defined limits, and clients pick one.
This is the bundled model with the guesswork removed, and it is what agencies at scale converge on. It gives you a price list to point at, makes upgrades a normal conversation rather than a negotiation, and is far easier to build on top of hosting priced per site, and lets you match cost to consumption so a busy store is not subsidised by a brochure site.
It only works once you have enough clients for the tiers to be meaningful. Below about twenty sites, three tiers is a spreadsheet pretending to be a product.
Managed Hosting solutions for WordPress backed by Speed, Security and Scalability
Talk To Sales →The Margin Maths
Worked on our own published prices, so you can check them. Take an agency with 40 client sites on a plan costing $25 a month.
| Pass-through | Markup at 2x | Care plan at $95 | |
|---|---|---|---|
| Cost to you, per site | $25 | $25 | $25 |
| Billed to client | $25 | $50 | $95 |
| Gross margin per site | $0 | $25 | $70 |
| Across 40 sites, monthly | $0 | $1,000 | $2,800 |
| Across 40 sites, annually | $0 | $12,000 | $33,600 |
Two things that table does not show, and both matter more than the numbers.
The care plan figure is not profit. It includes your time. If each site takes an hour a month of updates, checks and small requests, forty sites is a working week every month. Price the plan at a rate you would accept for that week, then add the hosting cost. Working the other way round is how agencies end up doing support at minimum wage.
The retention is worth more than the margin. A client on a care plan is in a monthly relationship with you. A client who pays for a website once and hosts it elsewhere is a stranger in eighteen months. That is the real argument for models three and four, and it is not visible in a margin calculation.
What To Include And What To Charge For
The line has to be somewhere. A workable split:
Include: hosting, SSL, daily backups, core and plugin updates, uptime monitoring, security scanning, and small changes measured in minutes. These are predictable, and arguing about them costs more than doing them.
Charge separately: new pages and templates, design work, content writing, plugin licences you buy on their behalf, and anything measured in hours. Bill these at your normal rate rather than absorbing them, or your care plan quietly becomes a retainer with a discount attached.
Decide in advance: what happens when a site is hacked, and what happens when a client's traffic outgrows the plan. Both will happen, and both are much easier conversations if the answer was written down before it did.
The WordPress hardening documentation is a reasonable basis for what "security included" should actually mean, and the backup documentation for what a backup promise should cover.
Raising Prices Without Losing Clients
Agencies leave hosting prices untouched for years and then face an increase they cannot justify in one step. Three things that help:
- Annual billing. One price conversation a year instead of a monthly reminder that they are paying you.
- Raise on renewal, with notice. Thirty days, in writing, with what has changed. Nobody objects to a reasonable increase they saw coming.
- Increase what is included at the same time. An increase paired with a genuine addition is a different conversation from an increase alone.
Tools like Stripe Billing or WHMCS handle the recurring side, and both will do proration and dunning so failed cards do not become silent churn.
Where Markup Stops Being Defensible
A straightforward test: could you show the client the invoice you pay, and still explain your price without embarrassment?
If the answer is yes, because you carry the monitoring, the updates, the backups and the phone call at eight on a Sunday, then charge it confidently. That is a service and it has a value.
If the answer is no, because you forward tickets unchanged and touch nothing between renewals, then the markup is a fee for standing in the way. Clients work that out eventually, and what they remember is not the money.
The related question, whether to tell them who actually hosts the site, is covered in our guide to white-label hosting, along with the several ways they can find out regardless. If you are still deciding which model your agency is really running, reseller versus agency hosting covers that choice.
The Awkward Bit: Clients Already On Old Prices
Every agency that has been going a few years has a tail of clients paying 2019 prices for 2026 infrastructure. Changing that is the conversation people avoid, and avoiding it is what makes it worse.
Three approaches that work, in ascending order of nerve:
Grandfather and move on. Leave existing clients where they are and price new ones properly. Simple, and it means your worst-paying clients are also your longest-standing, which is a strange position to defend to your team.
Bring them across at renewal, in stages. A phased increase over two renewals, with notice. Slower, and it avoids the moment where a loyal client feels punished for loyalty.
Re-contract everyone onto the new plans. One announcement, one date, one set of tiers, with a genuine improvement attached. This is the only version that actually fixes the problem, and it will cost you a handful of clients. Decide in advance whether those are clients you wanted.
The thing that makes any of them survivable is having something new to point at. An increase with nothing attached is a price rise. The same increase alongside daily backups, uptime monitoring and a faster support promise is a different product.
Three Scenarios, Worked
The 12-site freelancer
Twelve brochure sites, no ecommerce, one person. Tiered plans are overkill here. A single care plan, billed annually, covering hosting plus updates plus an hour of changes a month. The margin matters less than the fact that twelve annual invoices is a morning's admin rather than a monthly chore.
The 60-site agency with a few stores
This is where tiers start earning their keep, because the WooCommerce sites genuinely cost more to run and support than the brochure sites. Two tiers is enough: standard and commerce. Resist the third until a client asks for something neither covers.
The 200-site agency
At this size the billing model matters less than the billing system. Manual invoicing across two hundred clients is a part-time job and a churn risk, because a failed card that nobody chases is a site you are hosting for free. Automated recurring billing with dunning is not a nicety here, it is the difference between the model working and not.
Terms Worth Writing Down
Three clauses that prevent most of the arguments:
- What happens if they stop paying. How many days before the site is suspended, and how much notice they get. Suspending a client's website is a serious act and it should never be improvised.
- What happens if they leave. That they get a full export, promptly, at no charge. Say this out loud in the contract. It costs you nothing and it removes the single biggest objection to signing.
- What "included support" covers. A number of hours or a description of scope. Without one, "included" means unlimited and you will find that out the expensive way.
If you bill across borders, VAT and sales tax treatment depends on where your client is rather than where you are, and hosting is usually treated as a digital service. That is a question for your accountant rather than a blog post, but it is worth asking before the first invoice rather than after the first hundred.
What To Measure Once It Is Running
Four numbers tell you whether the model is working, and none of them is revenue.
- Support minutes per site per month. If this is climbing, your included scope is too loose or your platform is costing you time. Either way you find out before it hurts.
- Failed payments not recovered. Sites you are hosting for free because nobody chased a card. At any scale this is pure loss and it is invisible unless you look.
- Churn, and where it happens. Clients leaving at renewal is a pricing signal. Clients leaving mid-term is a service signal. They need different fixes.
- Margin per site, not in total. Averages hide the two sites eating a day a month each.
The last one catches the most common failure of the bundled model: a single client whose demands quietly consume the profit from twenty others, while the headline figure looks fine.
The Argument That Actually Matters
Every model above is a way of pricing the same underlying thing, and it is easy to spend the whole conversation on margin percentages. The number that matters more is how many of your clients are still with you in three years.
An agency that builds sites and hands them over has to win every client twice: once to build, and again to be remembered. An agency that hosts and maintains what it builds has a monthly relationship, a reason to be in the client's inbox, and first refusal on the next project. That is worth considerably more than the difference between a 2x and a 3x markup, and it is the actual reason to take hosting seriously rather than treat it as an inconvenience you pass through at cost.