A maintenance quote usually arrives as one number. Three hundred dollars a month, say, for “hosting, updates, backups and support.”
That number is unfalsifiable. It could be generous or it could be four times what the work costs, and nothing on the page lets you tell which. Every Canadian agency publishes ranges like this and almost none of them publish what sits underneath.
So here’s the underneath. Two halves, separated, with the arithmetic that tells you which one you’re buying.
The two halves
Every maintenance plan is infrastructure plus labour.
Infrastructure is what it costs to keep the thing switched on. You pay it whether or not a single person touches the site. It’s close to a commodity, the prices are public, and there is very little room for anyone to be cleverer than anyone else.
Labour is somebody’s time. It varies by a factor of ten for work described in almost identical words, and it’s where the entire question of value actually lives.
Bundling them is not dishonest — it’s genuinely more convenient to pay one invoice. But bundling is also how a $300 monthly plan comes to look like a market rate rather than a decision, because the part that’s fixed and the part that’s negotiable stop being visible as separate things.
What the infrastructure actually costs
| Item | Typical range (CAD) |
|---|---|
.ca domain |
$10–25 per year |
| Budget shared hosting | $4–15 per month promotional, $10–26 on renewal |
| Entry managed WordPress hosting | $49 per month; $39 is a first-year rate |
| Fully managed hosting | $125–525 per month |
| Basic DV SSL certificate | $0 with Let’s Encrypt, to about $200 per year |
| Backups and uptime monitoring | Usually bundled with hosting; otherwise modest |
Two things that table hides. Budget shared hosting is advertised at promotional first-term rates, which is how a Montreal host reaches C$3.89 a month; the renewal price is higher and it’s the one you pay for years, so read the renewal line before the headline. The same trap is in the row above it. The two managed rows are not Canadian pricing: they come from WP Engine and Kinsta, both American, both quoting USD. Kinsta’s single-site tiers run $35, $50, $90, $170, $290 and $375 USD, and those are standing prices. The entry row above is Kinsta’s $35; the fully managed row starts at its $90 tier, which is the $125 CAD floor, and ends at its $375, which is the $525. WP Engine’s $28 USD entry is not — it’s a first-year rate on annual billing for new customers only, and WP Engine doesn’t render its renewal price in a form we could read, so we can’t tell you what year two costs. We’ve left the $39 CAD in the table because it’s what the market advertises, and marked it, which is the whole point of the paragraph you just read. Conversions use the Bank of Canada daily rate for 21 September 2026, 1.4021 — the most recent published rate, since the 22nd hadn’t posted when we collected these. No Canadian host is behind either row.
Entry-tier hosting puts a small site at roughly $100–800 a year, all in. Fully managed hosting starts around $1,600 a year and runs past $6,000 at the top of the standard tiers.
E-commerce is a different shape because the platform itself is a subscription. Shopify’s published Canadian pricing runs $37 a month on Basic, $99 on Grow and $389 on Advanced when billed yearly, plus 2.4–2.8% and 30 cents on online card payments, and a further 0.6–2% if you use a third-party gateway instead of Shopify Payments. Interac debit is 0% plus 15 cents. The transaction fees are the part people forget: at any real volume they dwarf the subscription, and the gateway surcharge is the one nobody reads before signing.
The important question about hosting isn’t which tier is better. It’s what an hour of downtime costs the business. A restaurant’s site being slow on a Tuesday is an inconvenience. A store’s checkout being down on the first Saturday of December is a number you can calculate. Managed hosting is worth it exactly when that number is large, and not otherwise.
What the labour costs
Published Montreal maintenance plans cluster into three tiers. A representative ladder, from a single agency’s public price list:
| Tier | Price (CAD/month) | Labour included | Also included |
|---|---|---|---|
| Entry | $99 | 0.5 hours | Hosting (2 GB), backups, plugin updates, basic on-site SEO |
| Middle | $295 | 2 hours | Hosting (10 GB), on- and off-site SEO, one design, quarterly strategy call |
| Top | $995 | 10 hours | Unlimited hosting, intensive SEO, up to five designs, monthly strategy call |
Another Montreal agency runs $125 and $275 tiers on a similar shape, with add-ons of $75 for a page builder and $125 for WooCommerce. Its published tiers state no included hours at all. What separates them is backup frequency, Wordfence Free against Wordfence Premium, two-factor authentication, uptime monitoring and priority support. That is a real plan, sold by a real agency, and the arithmetic in the next section cannot be run on it.
We went looking for a published Canadian hourly rate for ad-hoc work outside a plan and couldn’t trace one to a primary source. What’s in circulation is agency blog content citing other agency blog content, and it doesn’t agree with itself: published spreads run $60–120, $80–150, $80–250 and $120–250 an hour. Any single number inside that is one firm’s list price, not a market rate, so we’ve left it out rather than average four guesses into a fifth.
Zoom out and one Quebec agency, Bolle, publishes all-in annual figures — infrastructure and labour together — of about $800–1,500 for a brochure site and $3,000–6,000 for e-commerce. One agency is not a market. The same guide also breaks technical maintenance out on its own at $300–5,000 a year, wider on both ends than the tier table above, which is worth holding against how tidy that table looks.
The arithmetic that tells you what you’re buying
Divide the monthly fee by the hours included.
| Tier | Price | Hours | Implied hourly rate |
|---|---|---|---|
| Entry | $99 | 0.5 | $198 |
| Middle | $295 | 2 | $147.50 |
| Top | $995 | 10 | $99.50 |
The implied rate falls as the plan gets bigger. That looks like a volume discount, and in one sense it is. But it tells you something more useful than that: the tiers are selling two different products under one name.
The entry tier is access and insurance. You are not buying half an hour of work — half an hour a month accomplishes very little. You’re buying the right to have someone answer when something breaks, and the assurance that the updates are being applied. At $198 an hour that’s expensive labour and reasonably priced insurance, and insurance is the correct way to think about it.
The top tier is discounted bulk labour. Ten hours a month at under $100 an hour is a rate below what most Canadian agencies charge for project work, and it still includes hosting and SEO that have to come out of the same $995. Whoever sells that tier is either running it thin or subsidising it with something else.
Neither is wrong. But knowing which one you’re buying tells you what to expect. Buy the entry tier expecting output and you’ll be disappointed. Buy the top tier expecting a bargain and you may find the hours get rationed when the agency is busy.
The practical version: when a plan doesn’t state its included hours, that’s the question to ask. The $125 and $275 tiers above don’t state theirs, and they aren’t unusual in that. A plan that won’t answer it is selling you insurance and calling it maintenance.
The 15–20% rule, which we can’t trace
You’ll see it repeated widely: annual maintenance costs 15–20% of the original build. Some sources say 10–15%.
We went looking for where it comes from. No study, survey or dataset that we could find establishes 15–20% of website build cost as a finding. Several pages attribute the figure to Gartner and Forrester. We could not locate that attribution in any Gartner or Forrester publication, which makes the rule a working example of the thing it’s usually quoted to prevent: a number that borrows authority from a name that never published it.
There is a real convention close by, and it measures something else. Enterprise software vendors set annual support as a percentage of licence fees, not of build cost. SAP’s own support pages put Enterprise Support at 22% on that basis. Oracle is quoted at the same 22% almost everywhere, but every Oracle policy page and price list we tried refused automated access, so we could not confirm it at the source and won’t repeat it as though we had. The lower figures that circulate — 20, 19, 18% at volume — trace only to licensing consultancies describing negotiated discounts, not to anything either vendor published. The convention is real and decades old, and its denominator is licence fees. The website version looks like that number relabelled with the denominator swapped.
So use the 15–20% as a sanity check on an order of magnitude and nothing more. If a quote implies 40% of the build cost per year, ask what’s in it. If it implies 3%, ask what isn’t.
How to compare two quotes
Most maintenance quotes can’t be compared as written, because they describe different things in the same words. Four questions make them comparable:
- How many hours are included, and what happens to unused ones? Rollover, or use-it-or-lose-it. This single number converts a price into a rate.
- What’s the hosting, and whose account is it in? If hosting is bundled, find out what tier. A plan that includes “hosting” on a $5 shared plan and one that includes managed hosting at $200 are not the same product, and the difference is most of the price gap.
- Is security patching inside the plan or billed separately? When patching shares a budget with feature work, patching loses — the feature has somebody asking for it and the patch has nobody.
- What’s the response time, by severity, in writing? An outage and a typo shouldn’t have the same window. Ask specifically what happens on a Saturday.
Then do the division. Two quotes at $300 a month, one with one hour and one with three, are a $300/hour plan and a $100/hour plan. That’s the actual comparison, and it’s invisible until you do the arithmetic.
Where the ranges come from
Everything above is published list pricing, read off the vendors’ own pages on 22 September 2026. Eight sources, not a dozen, and they are not evenly load-bearing.
The agency figures rest on exactly three published price lists: LaFirme, MyLittleBigWeb and Bolle, all Montreal. Three price lists is not a survey of the Quebec market; it is three price lists. The hosting rows rest on three hosts, and two of them are American and quote USD, converted at the Bank of Canada daily rate for the same date. Platform pricing is Shopify’s Canadian page. Figures are observed minimum and maximum, not medians, because a median across three agencies would be theatre.
Three honest limitations. List prices are what firms advertise, not what clients pay, and the real distribution of paid amounts isn’t public anywhere in this market. The sample is small and concentrated in Montreal, so read the ranges as the shape of the market rather than its edges. And one of the ranges above is a conversion, not a Canadian quote, which we’ve flagged where it appears rather than buried here.
We’re stating this because almost no published pricing guide does, including several that contradict each other by a factor of five while presenting their numbers as market data. A range without a method behind it is an opinion with a dollar sign on it.
These are not our prices. We don’t publish a rate card, and the point of this post isn’t to position ourselves inside these ranges. It’s that the arithmetic above works on any quote, including ours — and you should run it on ours.
Canaan builds software and maintains it afterwards. If you have a maintenance quote in front of you and you’re not sure what’s in it, send it over. We’ll tell you what the hours imply, and whether it’s priced sensibly — including when the honest answer is that you don’t need a plan at all.
Sources
- Shopify, Pricing (Canada), plan and transaction-fee figures read 22 September 2026
- Bolle, Combien coûte un site web pour une PME au Québec, read 22 September 2026
- LaFirme, Forfait de maintenance de site web, read 22 September 2026
- MyLittleBigWeb, Maintenance et support de sites web, read 22 September 2026
- Kinsta, WordPress hosting plans, USD list prices, read 22 September 2026
- WP Engine, Plans, USD. The entry figure is first-year promotional pricing for new customers on annual billing; the renewal price is script-rendered and could not be read. Read 22 September 2026
- WHC, Hébergement de sites web, promotional pricing is tied to a three-year term; regular renewal pricing recorded alongside it. Read 22 September 2026
- Bank of Canada, Daily exchange rates, USD/CAD 1.4021 for 21 September 2026
- SAP, SAP Enterprise Support, 22% list rate, read 22 September 2026. SAP’s page still words this as holding “until 2025”
- Oracle, Software Technical Support Policies. Every Oracle URL tried returned HTTP 403 to automated access on 22 September 2026, so no link is given and no Oracle figure is stated as verified
Pricing figures are observed minimum and maximum published list prices, not medians, collected on 22 September 2026 and verified against each vendor’s own page. The agency ranges rest on three Montreal price lists. The managed hosting rows rest on two American hosts quoting USD, converted at the Bank of Canada rate for 21 September 2026. Two figures we wanted are missing rather than estimated: WP Engine’s renewal price, which the page renders in script we could not read, and anything from Oracle, which refused automated access entirely. List prices are what firms advertise, not what clients pay.