How we check prices
Last full check
Where a price comes from
Every price is read from the vendor's own pricing page. We do not use review sites, another site's comparison table, or our own memory of what a price used to be.
Most prices come from an automated fetch of the vendor's pricing page. Where a vendor blocks that, the figures are read in a browser instead. Either way the figure comes from the vendor's own page and carries the date it was read.
Each plan carries its own source address and the date it was retrieved. Both are printed on that plan's row on every comparison, and repeated in the page's Sources list. A figure with no source address and retrieval date does not go into the dataset.
Where a vendor publishes no price for a tier and asks you to contact sales, the plan is listed with no price and no total. We do not estimate one.
How fresh the data is
The dataset carries one date for the whole set: the last full check, currently . It moves forward only when every vendor has been checked in the same run. A partial run leaves it where it was.
Each plan row keeps its own retrieval date, which can be older than the last full check, because a plan is re-dated only when it is re-read. Read the date on the row you care about, not only the one at the top of the page.
When a vendor changes a price, the stored value and its date are updated, and every page that uses that value is updated in the same cycle. If a source has changed since a page was published, that page is updated or taken out of search before anything new is published.
The 30-day limit. We do not build or rebuild a comparison page when the last full check is more than 30 days old. The build software enforces this itself: it stops, writes nothing, and says which date is too old. Out-of-date prices shown with confidence are the worst mistake a site like this can make, so we would rather publish nothing.
How a total is worked out
Plans are totalled at 5, 25, and 50 seats. The first-year total is the annual per-seat rate × 12 × seats, plus any one-time onboarding fee. The arithmetic is printed on the row so you can check it.
A one-time fee is added once per organisation, in the first year only, and only where the dataset records one. Add-on prices are per account and are never in a total. Prices are in US dollars on annual billing; monthly-billing rates are not shown. Tax is not added: where we have recorded how a vendor treats tax, the comparison says so.
The totals do not apply a minimum number of seats. If a plan in the dataset records one, the build stops rather than print a total that would be wrong.
Which plan counts as the cheapest
Each side's headline figure, the cheapest tags and the not-available rows all come from one rule, so they cannot disagree. A plan counts at a given team size unless:
- it has no public per-seat price, so no total is shown;
- its recorded seat cap is smaller than the team size; or
- it is a $0 plan with no seat limit on record. We cannot confirm it fits, and we do not assume it is unlimited.
A paid plan with no seat cap on record counts as fitting. Excluded plans stay on the page, sorted last, with an em dash in place of a total and the reason in the row.
Cheapest means the lowest first-year price among the plans we can confirm fit. It does not mean best. Tiers are compared by position in each vendor's lineup, entry to entry and top to top, not by what they include.
When a figure is missing
A gap is shown as a gap. A missing retrieval date or source address prints as the word UNKNOWN, and a plan with no price gets no total. We do not fill a gap with a plausible guess, because an empty field can be fixed later and a wrong one cannot be taken back.
The UNKNOWN limit. Price, source address and retrieval date are what every plan on a page promises the reader. If more than 20% of those fields, across all the plans of both vendors on a comparison, are UNKNOWN, the build stops and lists the missing fields.
Seat limits and feature detail are not counted by that limit. Where they are empty, the page says so in its “Where our data is thin” section and does not imply a limit or a feature that is not recorded.