How to read a hosting price honestly
A headline rate is one cell of a table you have to build yourself: entry rate, term, renewal rate, multiple, five-year total, and everything the price leaves out.
How to read a hosting price honestly
We are not the cheapest, and this page is not going to pretend otherwise. What follows is a method, and it is meant to be used on us as much as on anyone else: if a price page cannot survive the six columns below, the problem is not that the number is high, it is that the number is a fraction of the answer.
The six columns to build
Make a spreadsheet with one row per vendor and these columns. Every one of them is obtainable from a public pricing page without logging in, and none of them is the headline.
| Column | What you are recording | Where it hides |
|---|---|---|
| Entry rate | what you pay in the first term | the headline — the footnote states the term |
| Term | how many months that rate is actually bought for | 12, 24, 36 or 48 months of prepay, usually in small print |
| Renewal rate | what you pay in the term after | the second number, if the vendor prints one |
| Multiple | renewal rate divided by entry rate | arithmetic; 1.00 means flat |
| Five-year total | entry x term months + renewal x (60 - term months) | arithmetic; almost nobody publishes it |
| What is excluded | domain, mailboxes, seats, overage, backup retention | the plan comparison, not the price card |
The five-year total is the only column that is a price. Everything above it is a rate, and a rate quoted without its term is not comparable to another rate.
Why the multiple matters less than the term
A step of two or three times the entry rate is a different purchase depending on how long the cheap rate lasts. On a twelve-month term you re-price after a year, and a bad renewal is a decision you get to make again. On a forty-eight-month term you have prepaid four years to get the headline, and the renewal rate governs a single year at the far end. Multiply the monthly rate by the number of months it is locked for, then by the months that remain: the answer is often higher than the flat-rate competitor whose headline looked worse.
What the domain does to the comparison
A domain is a separate product on a separate clock, and it behaves differently from hosting in two ways.
First, its renewal tracks the registry's wholesale cost, not a promotional calendar. Verisign sets the .com wholesale price and escalates it on its own multi-year cycle, so a registrar's renewal moves when the registry's cost moves — not when a discount expires. Our own .com price is $14.99 in year one and $14.99 in year two, and it will move if the registry's cost does.
Second, a domain "free for year one" is a first-year discount on the domain, not a permanent price. Ours rides along with an annual hosting plan at the qualifying tier, and the domain's own renewal applies from year two. Two disclosures belong to the other free year: the free App Hosting year requires a domain registered with Zeso, and it converts to the Launch rate at month thirteen. Nothing here is free forever except the single-page Static Hosting tier — everything else has a renewal date attached.
What is excluded, and how to find it
Read the plan comparison rather than the price card. The things that most often sit outside the headline: the domain itself, mailboxes (Email Hosting is its own product), visit or request ceilings, backup retention windows, staging environments, and per-seat access. For our own catalogue, the cheapest annual plan that carries the free domain year is Launch, at $7.49/mo billed yearly.
How to check our numbers instead of believing them
Two guards run in the build, and both are failures rather than promises:
- Hosting.
assertHostingRenewalIsFlat()throws if any plan's renewal price
exceeds its own signup price. It compares one plan's two prices, not two plans' prices, because an introductory tier below a higher tier is a product ladder rather than a bait.
- Domains.
assertNoBaitAndSwitch()throws if a domain's retail gap moves in
a direction the registry's cost gap does not justify. It compares dollar gaps rather than percentage rates on purpose: rounding to a price point adds proportionally more to a smaller base, so two TLDs can share one policy rate and still show different realised percentages.
Both hold today by construction, because every price in the catalogue is derived rather than typed. They exist for the day somebody adds a hand-written promotional rate, which is the only way either property could break — and it would break silently, because the signup price is the one a screenshot captures.
The honest summary
Our hosting entry rate is the renewal rate, and there is a test that fails the build when that stops being true. Our domains are not the cheapest either — at-cost registrars sell below us, and the domains page says so rather than burying it. What we are claiming is narrower than "cheap": the number on the card is the number on the invoice next year, and you can hold us to it.