How to read a renewal table
A renewal table compares disclosure practices, not prices. An absent second number is a finding, not a blank to fill — and it is the strongest signal on the page.
How to read a renewal table
A renewal table looks like a comparison of prices. It is really a comparison of disclosure practices. The most informative cell is often the empty one, and the worst thing you can do with an empty cell is fill it in: an absent second number is a finding, not a blank to fill. That rule is binding on us too, which is why this article teaches you to distrust our table on the same terms as everyone else's.
The five fields, and what each is worth
| Field | The question it answers | How it misleads |
|---|---|---|
| Intro rate | what you pay now | quoted without the term it is locked to |
| Term | how long the intro lasts | forty-eight months presented as a monthly rate |
| Renewal rate | what you pay afterwards | simply absent |
| Multiple | renewal divided by intro | magnitude without context; a big step disclosed is not the worst outcome |
| Disclosure | where the second number is printed | on the card, in the docs, or nowhere |
The multiple is the least informative of the five
A step that is printed beside the intro rate, on the card, before you pay, is a different product from a smaller step you have to infer from a struck list price. Magnitude and disclosure are separate axes. So is a third one: whether the discount is re-takeable — whether it repeats at renewal, or whether year two necessarily steps up. Two vendors in our own corpus sit at nearly the same multiple and differ on precisely that question, which is why the corpus records it as its own field rather than folding it into the ratio.
The term behind the rate
A rate quoted per month is frequently a total divided by the number of months it covers. Read the footnote, then do this: entry rate x term months + renewal rate x (60 - term months). The result is what the purchase costs over five years, and it is the only figure in the table that two vendors can be compared on honestly. A cheap monthly rate locked behind a long prepay can lose that comparison to a higher flat rate, because the flat rate is the one you actually pay in years two through five.
The absent second number
Our competitor corpus — docs/research/competitors/PRICING.md, as of 2026-09-23 — scores every profiled vendor on exactly this question, in three buckets:
| Bucket | Count | What it means |
|---|---|---|
| Publishes a real intro-to-regular step | 8 | a second number exists and it is a step away from the first |
| Publishes no split at all | 15 | no renewal step was published — but see the caveat below |
| Publishes no number at all | 1 | every figure sits behind a sales conversation |
The middle bucket is where a reader goes wrong. Of those fifteen, only six are positively established at a multiple of one — a flat rate where the first price is the renewal price. Seven published a price and no second number was captured, which is an absence of evidence, not a demonstrated flat rate; two more carry a term discount rather than a renewal jump. Reading "fifteen" as "fifteen flat-rate vendors" over-reads the bucket by nine. That single distinction is the difference between a table that informs and a table that flatters.
There are no reliable category-wide figures for how often renewals step up. Anyone quoting one is quoting a sample with a date attached. We have a sample of twenty-four and we print its date, because a comparison that is accurate and undated becomes misleading on its own.
Where the second number lives
Three places, in descending order of usefulness to you: on the card, where you read it before buying; in the documentation, which you read if you went looking; and nowhere, which means you are deciding without it. A vendor that prints the second number is not necessarily cheaper — it is necessarily easier to evaluate, and that is worth more than the difference between two multiples.
What we publish, and how to check it
- Hosting. One price per plan; the entry rate is the renewal rate.
assertHostingRenewalIsFlat() fails the build when a plan's renewal exceeds its signup price.
- Domains. Renewal is derived from the registry's wholesale cost and never
hand-typed. assertNoBaitAndSwitch() fails if the retail gap moves in a direction the cost gap does not justify.
- Our own retention modelling is labelled as what it is. The involuntary-churn
and recovery shares in the renewals module are named placeholders, not measurements, because the widely quoted industry figures for failed-card churn come from vendors selling recovery software. An assumption with a label is more useful to you than a statistic with a source we cannot show.
A five-minute procedure
- Find the renewal rate. If it is not printed, write "not published" — do not
infer it from a struck price.
- Find the term behind the headline rate, in months.
- Compute the multiple, then the five-year total. Rank on the second.
- Note where the second number was printed, or that it was not.
- Repeat the whole thing for the domain, on its own row. Its clock is the
registry's, not the host's.