# The Stale List Report — how often is a price in a "best of" list actually out of date?

FrontDeskReview data study. Every row re-checked 2026-09-06; re-run quarterly. Source: https://frontdeskreview.com/stale-lists/

**Finding:** most apparent price errors are not errors. Across 12 software categories we read every price that 45 top-ranking third-party buying guides state for a vendor we carry — 216 figures. **82** disagreed with our own recorded figure on a first read; after independent re-reads only **12** (5.6% of every price quoted) were genuinely out of date. The other 70 were the ordinary traps of reading a pricing page: a different plan, a monthly headline set against an annual-billed rate, a promotional figure, a line the page no longer carries. In the same quarter **we corrected 65 figures of our own**, found by auditing every plan whose recorded source was not the vendor's own page. Telling a stale price from a correctly-read one takes opening the vendor's page on the same billing basis.

**The narrowing:** 216 prices quoted → 82 disagreed on a first read → 25 looked out of date to an independent checker → 12 still out of date after the independent re-reads that followed, with the quotation found in the page a reader sees (13 knocked out, 3 of them because the stored quotation was not the text on the page — control rows 12, 23 and 24: every control row filed under “The quoted sentence is not the sentence on the page”, plus any row whose own note calls the stored quotation a reconstruction; 82 independent reads in total).

Method: For twelve software categories we searched for the highest-ranking third-party 'best <category>' articles, read every price each one states for a vendor in our catalog, and compared it with the vendor's own pricing page. Every disagreement was then re-read live by an independent checker, and every checker that reported a stale price was itself double-checked by two more. A row counts as stale only when a majority of independent checks agree that the article still presents that figure as the vendor's starting price and the vendor's own page states a different figure on the same billing basis today. Before publication every surviving row was read once more against the live page, and its quotation was matched against one canonical reading of that page - the same reading for every row, stated in full below. A row is published only where the recorded sentence is found in that reading, and the count the row carries is the count that reading produces. The sentence is a run of the page's text rather than of its bytes: on several of these pages markup falls between the words of the sentence, so the quotation exists as one string only once the tags inside it are gone. A quotation that reading could not find was never rewritten to fit - the row was moved to the control below, whatever its arithmetic said.

The one reading of a page this study counts on — every “found N times” below is the count this recipe produces, and no other: Parse the served HTML into a DOM and take the document's text content, skipping the contents of script, style, template and noscript elements — a reader sees none of them. Then decode HTML entities, map every no-break space to an ordinary space, collapse each run of whitespace to a single space, and trim. Nothing is put in where a tag was, so a sentence broken across tags reads as one string — which is why several of these quotations exist as one string only in this reading and not in the page's raw bytes. A quotation is then counted once per non-overlapping occurrence in that text, and that count is the number the row prints.

Limits: the denominator is every price quoted (216), not the 82 disagreements. Only vendors in our catalogue are checkable, so these are the prices each article states for those vendors, never its whole table. A figure counts as out of date only where the vendor's own page states a different figure on the same billing basis. Each row is one figure on one page on one day — not a judgement of an article or a publisher — and an article can be corrected at any time. Of 48 articles found, 3 could not be read and are excluded from every figure. Every published quotation is a run of the page's own text rather than a reconstruction, found in the one reading stated above, and evidence is published whole with its length stated; for 6 rows the vendor's own pricing page would not serve us the figure (1 refused every route), and those rows name the route a reader can use instead.

## Confirmed out of date (12 rows, biggest gap first)

| # | Publisher | Date the page states | Vendor | Category | Article's figure | Vendor's figure today | Vendor plan | Our figure | Our plan | We read it | Gap | Reads agreeing | Quote found | Article |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | learn.g2.com | January 7, 2026 | Respond.io | Whatsapp Business | $29 | $79 | Starter (cheapest paid plan; next tiers Growth $159/mo and Advanced $279/mo annual, then quote-only Enterprise) | $79 | Starter | 2026-09-03 | 172.4% higher | 3 of 3 | 1x in the reader-visible text | https://learn.g2.com/best-whatsapp-marketing-software |
| 2 | softwareadvice.com | Updated September 3, 2026 | Copper CRM | CRM Software | $12 | $23 | Basic | $23 | Basic | 2026-09-02 | 91.7% higher | 3 of 3 | 1x in the reader-visible text | https://www.softwareadvice.com/crm/ |
| 3 | prismic.io | Published January 2, 2026 | Unbounce | Landing Page Builders | $99 | $29 | Starter (lowest paid tier). The $99/month figure under test is today the second tier, "Build". Unbounce has no plan named "Launch" any more -- the catalog's plan name is stale even though its $29 figure is not. | $29 | Starter | 2026-09-02 | 70.7% lower | 3 of 3 | 1x in the reader-visible text | https://prismic.io/blog/the-12-best-landing-page-builders-detailed-comparison |
| 4 | guideflow.com | August 31, 2026 | Zoko | Whatsapp Business | $34.99 | $49.99 | STARTER (rendered as "STARTER" on the pricing card; named "Starter" in the page's own JSON-LD). It is the cheapest of Zoko's four plans and therefore the entry plan. | $49.99 | Starter | 2026-09-03 | 42.9% higher | 3 of 3 | 1x in the reader-visible text | https://www.guideflow.com/blog/whatsapp-marketing-software |
| 5 | techradar.com | 12 January 2026 | Pipedrive | CRM Software | $10 | $14 | Lite | $14 | Lite | 2026-09-02 | 40% higher | 4 of 4 | 1x in the reader-visible text | https://www.techradar.com/best/the-best-crm-software |
| 6 | guideflow.com | August 31, 2026 | WATI | Whatsapp Business | $49 | $59 | Growth (entry paid tier; tiers today are Growth / Pro / Business, with Growth the cheapest) | $59 | Growth | 2026-09-03 | 20.4% higher | 3 of 3 | 1x in the reader-visible text | https://www.guideflow.com/blog/whatsapp-marketing-software |
| 7 | learn.g2.com | January 7, 2026 | WATI | Whatsapp Business | $49 | $59 | Growth - Wati's entry paid plan (the tiers are Growth / Pro / Business; there is no cheaper tier) | $59 | Growth | 2026-09-03 | 20.4% higher | 3 of 4 | 1x in the reader-visible text | https://learn.g2.com/best-whatsapp-marketing-software |
| 8 | mailtrap.io | On November 12, 2025 | Google Workspace | Email Hosting | $6 | $7 | Business Starter (card labelled "Starter"; the page's own footnote calls it "Business Starter") | $7 | Business Starter | 2026-09-02 | 16.7% higher | 3 of 5 | 1x in the reader-visible text | https://mailtrap.io/blog/email-hosting-providers/ |
| 9 | serveravatar.com | Published: 16 August 2025 Last Updated: 26 February 2026 | Vultr | Vps Hosting | $6 | $5 | Cloud Compute - Regular Performance, 1 vCPU / 1 GB (plan id vc2-1c-1gb): 1 vCPU, 1 GB memory, 25 GB SSD, 1.00 TB bandwidth | $5 | Cloud Compute Regular — 1 GB | 2026-09-03 | 16.7% lower | 4 of 5 | 1x in the reader-visible text | https://serveravatar.com/budget-friendly-cloud-vps/ |
| 10 | mailtrap.io | On November 12, 2025 | Microsoft 365 for Business | Email Hosting | $6 | $7 | Microsoft 365 Business Basic | $7 | Business Basic | 2026-09-02 | 16.7% higher | 3 of 3 | 1x in the reader-visible text | https://mailtrap.io/blog/email-hosting-providers/ |
| 11 | techrepublic.com | Aug 17, 2026 | Microsoft 365 for Business | Email Hosting | $6 | $7 | Microsoft 365 Business Basic | $7 | Business Basic | 2026-09-02 | 16.7% higher | 3 of 3 | 1x in the reader-visible text | https://www.techrepublic.com/article/best-business-email-providers/ |
| 12 | domaindetails.com | no date shown to a reader | Porkbun | Domain Registrars | $10.99 | $11.08 | .com domain - Porkbun standard published rate (registration, renewal and transfer are one and the same price; Porkbun has no tiers or plans for this) | $11.08 | .com (per year) | 2026-09-02 | 0.8% higher | 3 of 3 | 1x in the reader-visible text | https://domaindetails.com/registrars/cheapest |

## The evidence behind each row

Every quotation below was re-read against the live article on 2026-09-06 and matched against the one canonical reading of that page stated in the method above; the count beside each row is the count that reading produces, and several of these sentences are a run of the page's text rather than of its bytes. 3 rows were moved to the control on the quotation, because the stored quotation was not the text on the page: control rows 12, 23 and 24: every control row filed under “The quoted sentence is not the sentence on the page”, plus any row whose own note calls the stored quotation a reconstruction. Evidence is published whole — longest 3595 characters, 28117 characters in total — with each block's own length beside it. Nothing here is cut.

1. **Respond.io** (Whatsapp Business) — $29 quoted vs $79 today on Starter (cheapest paid plan; next tiers Growth $159/mo and Advanced $279/mo annual, then quote-only Enterprise).
   - The article says, verbatim (217 characters, in full): `respond.io: Best shared inbox for WhatsApp and multi-channel support Centralizes customer conversations from WhatsApp and other channels with workflow automation, routing, and team collaboration. (Pricing from $29/mo)`
   - Found once in the page a reader sees. Article reached by: Route 1 - direct GET with a browser User-Agent (curl -sSL, Chrome 126 UA). Succeeded on first try; no further routes needed.
   - Read on the vendor's own pricing page. The vendor's pricing page served this figure to us directly. Checked at: https://respond.io/pricing (pricing page we record: https://respond.io/pricing/). Routes tried: Route 1 - direct GET with a browser User-Agent (curl -sSL, Chrome 126 UA), HTTP 200, 923649 bytes. The page is Nuxt/Builder.io but ships the price cards server-rendered, plus schema.org offers and meta descriptions. An r.jina.ai cross-check returned HTTP 403 and was not required.
   - The vendor's page says (2508 characters, in full):

```text
[A] Rendered pricing card, default view. The billing toggle defaults to Yearly: the served DOM carries role="switch" aria-checked="true" on the Yearly control, and the card config carries "options":[{"value":"monthly","title":"Monthly"},{"value":"yearly","title":"Yearly (Save up to 20%)"}],"selectedIndexByDefault":1. Card text as rendered:
starter $ 79 /month $1,188 $948/yr (billed yearly) Big wins for small teams: Manage conversations across all channels collaboratively and achieve your business goals.

[B] Page meta description, og:description and twitter:description, all three identical:
Respond.io offers 4 plans: Starter ($79/mo), Growth ($159/mo), Advanced ($279/mo) & Enterprise. Pay only for the contacts you talk to. Enjoy a free 7-day trial.

[C] schema.org Product offers embedded in the page as application/ld+json, all six offers verbatim and untruncated:
{"@type":"Offer","name":"Starter (Monthly)","price":"99.00","priceCurrency":"USD","url":"https://respond.io/pricing","priceSpecification":{"@type":"UnitPriceSpecification","price":"99.00","priceCurrency":"USD","billingDuration":"P1M"}},{"@type":"Offer","name":"Growth (Monthly)","price":"199.00","priceCurrency":"USD","url":"https://respond.io/pricing","priceSpecification":{"@type":"UnitPriceSpecification","price":"199.00","priceCurrency":"USD","billingDuration":"P1M"}},{"@type":"Offer","name":"Advanced (Monthly)","price":"349.00","priceCurrency":"USD","url":"https://respond.io/pricing","priceSpecification":{"@type":"UnitPriceSpecification","price":"349.00","priceCurrency":"USD","billingDuration":"P1M"}},{"@type":"Offer","name":"Starter (Yearly)","price":"79.00","priceCurrency":"USD","url":"https://respond.io/pricing","priceSpecification":{"@type":"UnitPriceSpecification","price":"948.00","priceCurrency":"USD","billingDuration":"P1Y"}},{"@type":"Offer","name":"Growth (Yearly)","price":"159.00","priceCurrency":"USD","url":"https://respond.io/pricing","priceSpecification":{"@type":"UnitPriceSpecification","price":"1908.00","priceCurrency":"USD","billingDuration":"P1Y"}},{"@type":"Offer","name":"Advanced (Yearly)","price":"279.00","priceCurrency":"USD","url":"https://respond.io/pricing","priceSpecification":{"@type":"UnitPriceSpecification","price":"3348.00","priceCurrency":"USD","billingDuration":"P1Y"}}

[D] Lowest paid tier on the page is Starter. There is no $29 tier and no plan below $79/mo on any billing basis. Enterprise is quote-only. No free plan is offered, only a 7-day free trial of the Growth plan.
```

   - Compared on: USD per month in the page's default view, billed yearly at $948/yr. Billed monthly the same Starter plan is $99/month. Seat- and contact-metered on top: additional users from $12/month and Monthly Active Contact tiers priced separately; WhatsApp fees charged by Meta are not included.

2. **Copper CRM** (CRM Software) — $12 quoted vs $23 today on Basic.
   - The article says, verbatim (301 characters, in full): `Copper4.4 (622 reviews)Learn MoreCompareLearn MoreCompareAverage score:80/100Average Score:80/100Pros: seamless gmail and google workspace integration intuitive and user-friendly interfaceCons: poor customer support responsiveness insufficient customization optionsPricing:Starting at $12.00 per month`
   - Found once in the page a reader sees. Article reached by: Headful Chrome 152 (real browser, fresh profile) driven over the DevTools Protocol; the served document body captured with Network.getResponseBody, plus the post-hydration DOM via Runtime.evaluate. Prior routes, in order, all failed: (1) curl with a browser User-Agent -> HTTP 403 (5,617-byte body, unrelated content); (2) curl with a full browser header set (Accept, Accept-Language, Sec-Ch-Ua, Sec-Fetch-*, Upgrade-Insecure-Requests, --compressed) -> HTTP 403 on 2026-09-06, Cloudflare "Just a moment..." interstitial; (3) r.jina.ai text reader -> HTTP 403, Cloudflare interstitial passed through; (4) headless Chrome --headless=new --dump-dom -> Cloudflare interstitial (title "Один момент…"), 29,046 bytes, zero occurrences of "Copper". Only the headful-Chrome route returned the real page. A same-origin programmatic fetch() from inside the already-loaded page also returned 403, so the browser navigation is the only route that yields the bytes. Re-tried on 2026-09-07: route (2), curl with that same full browser header set, returned HTTP 200 and the real article. So the 403 above is what that route returned on 2026-09-06, the day this row was read — not a standing property of the route. The row's reading stands on the headful-Chrome capture recorded here; the edge's answer to a plain request is not stable from one day to the next, which is why the route is recorded with its date rather than as a fact about the site.
   - Read on the vendor's own pricing page. The vendor's pricing page served this figure to us directly. Checked at: https://www.copper.com/pricing (pricing page we record: https://www.copper.com/pricing). Routes tried: Direct curl with a browser User-Agent -> HTTP 200, 704,697 bytes (no challenge, no JS needed; the prices are present in the served HTML). Independently re-fetched through the same headful Chrome/CDP setup: HTTP 200, served body byte-identical at 704,697 bytes (content-type text/html; charset=utf-8, last-modified Fri, 04 Sep 2026 01:20:38 GMT), and the rendered DOM confirms the visible figures.
   - The vendor's page says (2880 characters, in full):

```text
https://www.copper.com/pricing - plan cards, rendered text, untruncated. The page opens on the Annual tab (w--tab-active); the toggle reads: Monthly | Annual | Up to 26% off 🎉

ANNUAL TAB (default, active):
Basic
$
23
$
29
per seat, per month
paid annually
Optimize your processes with flexible pipelines and team collaboration features.
Try free
What's included:
2,500 contact limit
Task automation
Pipelines
Project Management
Contact enrichment
Professional
$
59
$
69
per seat, per month
paid annually
Scale your business with revenue tracking tools, workflows and bulk email.
Try free
Everything in Basic, plus:
15,000 contact limit
Workflow automation
Bulk email
Reporting
Integrations
63% started off with Professional
Business
$
99
$
134
per seat, per month
paid annually
Elevate your business with customer nurture, custom analytics and unlimited usage.
Try free
Everything in Professional, plus:
Unlimited contacts
Email series
Custom reports
Multi-currency
Premium support

MONTHLY TAB:
Basic
$
29
per seat, per month
Optimize your processes with flexible pipelines and team collaboration features.
Try Free
What's included:
2,500 contact limit
Task automation
Pipelines
Project Management
Contact enrichment
Professional
$
69
per seat, per month
Scale your business with revenue tracking tools, workflows and bulk email.
Try Free
Everything in Basic, plus:
15,000 contact limit
Workflow automation
Bulk email
Reporting
Integrations
63% started off with Professional
Business
$
134
per seat, per month
Elevate your business with customer nurture, custom analytics and unlimited usage.
Try Free
Everything in Professional, plus:
Unlimited contacts
Email series
Custom reports
Multi-currency
Premium support

Footnote below the cards: "Prices are in USD and don't include taxes and fees where applicable."

Underlying markup for the entry tier (raw served bytes, verbatim):
<div class="pricing_plan_title-text">Basic</div><div class="pricing_plan_price-wrap"><div class="pricing_plan_price-sub-wrap"><div class="pricing_plan_title-text text-color-accent">$</div><div class="pricing_plan_title-text text-color-accent">23</div></div><div class="pricing_plan_price-sub-wrap"><div class="pricing_plan_title-text text-style-muted text-style-strikethrough">$</div><div class="pricing_plan_title-text text-style-muted text-style-strikethrough">29</div></div></div></div><div class="pricing_plan_sub-text-wrap"><div class="text-size-tiny text-style-muted">per seat, per month</div><div class="text-size-tiny text-style-muted">paid annually</div></div>

Absent from the page (byte-level counts over the 704,697-byte served document): "Starter" = 0, "$12" = 0, "limited time" = 0, "coupon" = 0, "discount" = 0. The only "% off" string on the page is the annual-tab callout "Up to 26% off 🎉", which is the standing annual-vs-monthly saving (134 -> 99 = 26%), not a dated promotion.
```

   - Compared on: USD, per seat, per month, paid annually (Copper's default-displayed Annual tab; $29 per seat, per month on month-to-month billing, shown struck through on the annual card). Excludes taxes and fees. Copper's entry tier is named "Basic"; there is no plan called "Starter".

3. **Unbounce** (Landing Page Builders) — $99 quoted vs $29 today on Starter (lowest paid tier). The $99/month figure under test is today the second tier, "Build". Unbounce has no plan named "Launch" any more -- the catalog's plan name is stale even though its $29 figure is not..
   - The article says, verbatim (68 characters, in full): `Pricing starts at $99/month, which is higher than some alternatives.`
   - Found once in the page a reader sees. Article reached by: Route 1 (direct request, browser user agent): curl -L -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36' https://prismic.io/blog/the-12-best-landing-page-builders-detailed-comparison -- succeeded on the first attempt, no fallback needed. Raw bytes saved to article_11.html; server-rendered HTML, full article text present in the initial response.
   - Read on the vendor's own pricing page. The vendor's pricing page served this figure to us directly. Checked at: https://unbounce.com/pricing/ (pricing page we record: https://unbounce.com/pricing/). Routes tried: Route 1 (direct request, browser user agent): curl -L with the same Chrome UA against https://unbounce.com/pricing/ -- HTTP 200, 562267 bytes, no fallback needed. Prices are present in the server-rendered HTML (both toggle states sit in the DOM) and additionally in the page's own schema.org SoftwareApplication JSON-LD.
   - The vendor's page says (2419 characters, in full):

```text
VISIBLE PRICING CARDS (unbounce.com/pricing/, monthly/yearly toggle; both values sit in the DOM). Toggle labels: "Monthly" / "Yearly" / "Save 25% with yearly billing".
Starter -- "Set up and launch your first landing pages" -- "$22 USD / month" | "$29 USD / month" | "Billed annually" "(Save 25%)" -- What's included: Drag-and-drop builder; 5 pages; Traffic volume: up to 500; Users: 1; Root domains: 1; MCP server NEW; Lead gen forms; Free hosting; Phone, email, and live chat customer support.
Build -- "Create unlimited landing pages quickly and easily" -- "$74 USD / month" | "$99 USD / month" | "Billed annually" "(Save 25%)" -- All Starter plan features plus: Custom scripts and pixels; Unlimited pages; Traffic volume: up to 20k; Users: 1; Root domains: 1; Popups and sticky bars; Multi-step forms; AI copywriting; Custom code and styling; 1000+ integrations.
Experiment (MOST POPULAR) -- "Perform A/B tests and optimize conversions" -- "$112 USD / month" | "$149 USD / month" | "Billed annually" "(Save 25%)".
Optimize -- "$187 USD / month" | "$249 USD / month" | "Billed annually" "(Save 25%)".
Concierge -- "Let's talk!" / "Get in touch for your custom pricing" / "Contact Sales".

SAME PAGE, schema.org SoftwareApplication "offers" (JSON-LD embedded in the same response), verbatim prices:
Starter Plan (Monthly): 29.00 USD -- "Set up and launch your first landing pages"
Starter Plan (Annual): 22.00 USD -- "... Billed annually."
Build Plan (Monthly): 99.00 USD -- "Create unlimited landing pages quickly and easily"
Build Plan (Annual): 74.00 USD
Experiment Plan (Monthly): 149.00 USD
Experiment Plan (Annual): 112.00 USD
Optimize Plan (Monthly): 249.00 USD
Optimize Plan (Annual): 187.00 USD
14-Day Free Trial: 0 USD
Every offer carries "availability":"https://schema.org/InStock" and "priceValidUntil":"2027-09-02".

NO ACTIVE PROMOTION: every "limited time" / promo string on the page (a 20%-off badge image and a "/promo-details/13-anniversary-offer/" T&Cs link) sits inside HTML comments explicitly labelled "Comment for promo offer". Occurrences of "limited time" outside HTML comments: 0. The 25% yearly saving is a standing billing-term discount shown on every paid card, not a time-limited rate.

NOTE: the CTA area also renders "We're sorry, Unbounce is unavailable in your location" -- a geo message attached to the signup button only. It does not gate or alter the prices, which render in full.
```

   - Compared on: Lowest paid tier (Starter), month-to-month billing, USD, list price, per month, excluding tax. The equivalent annual-billing rate is $22/month ("Save 25% with yearly billing"). Like-for-like on month-to-month billing, Unbounce's entry price is $29/month; $99/month is the month-to-month price of the Build tier, one step up.

4. **Zoko** (Whatsapp Business) — $34.99 quoted vs $49.99 today on STARTER (rendered as "STARTER" on the pricing card; named "Starter" in the page's own JSON-LD). It is the cheapest of Zoko's four plans and therefore the entry plan..
   - The article says, verbatim (32 characters, in full): `Pricing: Starts at $34.99/month.`
   - Found once in the page a reader sees. Article reached by: Route 1 of 4 -- direct HTTPS GET via curl with a desktop Chrome user agent (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36). Succeeded on the first attempt; no fallback to full header set, headless Chromium, or r.jina.ai was needed.
   - Read on the vendor's own pricing page. The vendor's pricing page served this figure to us directly. Checked at: https://www.zoko.io/pricing (pricing page we record: https://www.zoko.io/pricing). Routes tried: Direct HTTPS GET via curl with a desktop Chrome user agent -- HTTP 200, 69,459 bytes, no redirect. The vendor page did not refuse any request, so no fallback route was required.
   - The vendor's page says (2807 characters, in full):

```text
Route: direct HTTPS GET to https://www.zoko.io/pricing with a desktop Chrome user agent. HTTP 200, 69,459 bytes, no redirect, server-rendered (Webflow); no JS rewrites the price nodes (the four "zc2-price" class occurrences all sit in markup, none in any script).

A) The four rendered plan cards, in page order, as the page renders them:
MAX
$499.99/mo
ELITE
$139.99/mo
PLUS
$79.99/mo
STARTER
$49.99/mo

The STARTER card's markup, verbatim:
<p class="zc2-plan-name">STARTER</p><p class="zc2-price">$49<span class="zc2-price-cents">.99/mo</span></p>

Immediately beneath it, still inside the STARTER card:
CONVERSATIONS
Markup on all conversations
$0.015/conversation
CALLING
500 minutes - no markup
$0.005/min after that
AGENTS
Add as many agents as you like, for free
PLATFORM FEES
Facebook: Free
Instagram: $9.99/month
WhatsApp: rate card

B) The page's own schema.org JSON-LD, quoted in full and untruncated:
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "applicationCategory": "BusinessApplication",
  "description": "Predictable monthly WhatsApp pricing for Shopify brands, with plans that carry no markup on Meta's messaging rates. Compare Starter, Plus, Elite, and Max.",
  "name": "Zoko",
  "offers": {
    "@type": "AggregateOffer",
    "highPrice": "499.99",
    "lowPrice": "49.99",
    "offerCount": 4,
    "offers": [
      {
        "@type": "Offer",
        "name": "Starter",
        "price": "49.99",
        "priceCurrency": "USD"
      },
      {
        "@type": "Offer",
        "name": "Plus",
        "price": "79.99",
        "priceCurrency": "USD"
      },
      {
        "@type": "Offer",
        "name": "Elite",
        "price": "139.99",
        "priceCurrency": "USD"
      },
      {
        "@type": "Offer",
        "name": "Max",
        "price": "499.99",
        "priceCurrency": "USD"
      }
    ],
    "priceCurrency": "USD"
  },
  "operatingSystem": "Web Browser",
  "provider": {
    "@type": "Organization",
    "name": "Zoko",
    "url": "https://www.zoko.io"
  },
  "url": "https://www.zoko.io/pricing"
}

C) Absence check on the vendor page: the string "34.99" occurs 0 times in the 69,459 raw bytes, and 0 times in the normalised text. "49.99" is the page's lowPrice.

D) Terms surrounding the figure, quoted verbatim:
"7-day Free Trial"
"No Contracts  •  Cancel anytime"
"What discounts are available?"
"We offer a discounted price for brands that have annual committed messaging volumes of 250K conversations or more per month. Please contact us for more information."
There is no monthly/annual billing toggle on the page: the words "annual" and "monthly" appear only in the FAQ text quoted above and in "See your exact monthly cost in seconds." No introductory, first-month, or promotional rate is offered anywhere on the page.
```

   - Compared on: Standing monthly list price of the entry (Starter) plan, in USD, quoted by the vendor as "$49.99/mo". Per-conversation charges ($0.015/conversation on Starter) and platform fees (e.g. Instagram $9.99/month) are billed on top and are not part of this figure. No annual/monthly billing toggle exists on the page, so this is the only published price for the plan. Same basis as the article's "Starts at $34.99/month": entry-plan monthly subscription fee.

5. **Pipedrive** (CRM Software) — $10 quoted vs $14 today on Lite.
   - The article says, verbatim (177 characters, in full): `Besides, Pipedrive is one of the most affordable CRM tools, starting at just $10 per user per month, compared to a rival like Salesforce which starts at $25 for the same period.`
   - Found once in the page a reader sees. Article reached by: Route 1 of 4 succeeded: direct GET via curl 8.11.0 with a Chrome 128 browser user agent and --compressed. No further article routes were needed.
   - The vendor's page refused every route we tried. Every route to the vendor's live pricing page was refused, so the figure could not be read there at all. It was read at the route below, which is the one a reader can use. Check it at: https://web.archive.org/web/20260827062707/https://www.pipedrive.com/en/pricing (pricing page we record: https://www.pipedrive.com/en/pricing). Routes tried: All routes to the live page failed: (1) curl with browser UA -> HTTP 403 Cloudflare; (2) curl with full browser header set incl. sec-ch-ua/Sec-Fetch-* -> HTTP 403 Cloudflare; (3) headless Chromium --dump-dom -> served the Cloudflare 'Sorry, you have been blocked' interstitial; (4) r.jina.ai text reader -> HTTP 403 'Just a moment...' challenge; (5) WebFetch -> HTTP 403. Figure re-derived from the vendor's own page as archived by the Wayback Machine on 2026-08-27, both from the rendered Lite card and from the page's own embedded __NEXT_DATA__ pricingData block.
   - The vendor's page says (1716 characters, in full):

```text
Live https://www.pipedrive.com/en/pricing refused every route (Cloudflare 403). Evidence below is the vendor's own page, captured 2026-08-27 06:27:07 UTC, read at https://web.archive.org/web/20260827062707/https://www.pipedrive.com/en/pricing

[1] Lite plan card, as the vendor page renders it (crawler geolocated to Canada, so the visible currency is CA$):
Lite Now with AI Organize your sales in one simple, intuitive workspace CA$ 19 One payment of CA$ 228 per seat/year Per seat per month, billed annually Try it free Free 14-day trial. No credit card required.

[2] The USD figure comes from the same page's own embedded pricing data (script id="__NEXT_DATA__", props.pageProps.pricingData.tiers.lite), quoted in full and unedited:
{
  "year": {
    "code": "lite_annual_v2",
    "availableFrom": "2025-04-01 10:00:00",
    "availableUntil": null,
    "requiredFeatureSwitch": null,
    "usd": 14,
    "gbp": 14,
    "eur": 14,
    "aud": 19,
    "cad": 19
  },
  "month": {
    "code": "lite_monthly_v2",
    "availableFrom": "2025-04-01 10:00:00",
    "availableUntil": null,
    "requiredFeatureSwitch": null,
    "usd": 24,
    "gbp": 24,
    "eur": 24,
    "aud": 34,
    "cad": 34
  }
}

[3] Cross-check that this JSON drives the rendered card: cad=19 for lite/year matches the visible "CA$ 19 ... Per seat per month, billed annually".
[4] Complete set of distinct USD values across all four tiers in that data: 14, 24, 39, 49, 59, 79, 99. There is no 10 in any currency; a regex for "usd": 10 returns zero matches. Pipedrive's four plans are Lite, Growth, Premium, Ultimate.
[5] All eight availableUntil fields on the page are null, and pricingData contains no discount, promo, sale, offer or coupon key.
```

   - Compared on: USD per seat per month on the Lite plan billed annually (code lite_annual_v2; CA$ 19 / one payment of CA$ 228 per seat/year as rendered to the Canada-geolocated crawler). Month-to-month Lite is USD 24 per seat per month (lite_monthly_v2). Figure as of the 2026-08-27 capture, the most recent available; the live page is Cloudflare-blocked.

6. **WATI** (Whatsapp Business) — $49 quoted vs $59 today on Growth (entry paid tier; tiers today are Growth / Pro / Business, with Growth the cheapest).
   - The article says, verbatim (49 characters, in full): `Pricing: Starts at $49/month for the Growth plan.`
   - Found once in the page a reader sees. Article reached by: Direct GET with a browser user agent (curl 8.11.0, Chrome 128 UA, --compressed, -L). First route tried, succeeded; no fallback needed.
   - The pricing page carries no price in its bytes. The vendor's pricing page answered, but the figure is not in what it sends: the price nodes ship empty and are filled afterwards, or pricing is suppressed for our vantage point. The figure was read at the route below, which is the one a reader can use. Check it at: https://live-mt-server.wati.io/wati/api/v1/pricing/getPlansByGeo?countryCode=US (pricing page we record: https://www.wati.io/pricing/). Routes tried: Three routes run. (1) Direct GET with browser UA on https://www.wati.io/pricing/ -> HTTP 200, 700,186 bytes, but the price is NOT in those bytes: the plan price node ships empty and is filled client-side. (2) Headless Chromium render (chrome.exe --headless=new --virtual-time-budget=25000 --dump-dom) -> 752,352 bytes of rendered DOM, price present. (3) The public pricing API the page own jQuery calls, https://live-mt-server.wati.io/wati/api/v1/pricing/getPlansByGeo -> HTTP 200 JSON. The page hardcodes countryCode=DE, so it renders EUR regardless of visitor; the same endpoint with countryCode=US returns the USD plans that match the article currency.
   - The vendor's page says (2715 characters, in full):

```text
RENDERED PAGE (headless Chromium, https://www.wati.io/pricing/, 2026-09-06) - Growth plan price nodes, verbatim DOM:
<h2 class="h4 growth_plan_annual_api_pricing"><strong class="">€59</strong></h2> <span class="plan_pricing_tenure">month <i>billed annually</i></span>
<h2 class="h4 growth_plan_monthly_api_pricing">€69</h2> <span class="plan_pricing_tenure">month <i>billed monthly</i></span>
Rendered as text: "Growth ... €59 month billed annually" and "Growth ... €69 month billed monthly". (Currency is EUR because the page AJAX call hardcodes countryCode=DE for every visitor, not because of geo detection.)

STATIC PAGE BYTES - the same node before JS, showing why the raw HTML carries no number:
<h2 class="h4 growth_plan_annual_api_pricing"><strong class=""></strong></h2>
          <span class="plan_pricing_tenure">month <i>billed annually</i></span>

PRICING API (https://live-mt-server.wati.io/wati/api/v1/pricing/getPlansByGeo?countryCode=US, HTTP 200, 89,971 bytes) - every Growth record returned, untruncated, price is in minor units:
{"name":"Growth Plan USD Yearly WEST","externalPlanId":"Growth-Plan-USD-Yearly-WEST","price":70800,"currencyCode":"USD","period":1,"periodUnit":4}
{"name":"Growth Plan USD Monthly WEST","externalPlanId":"Growth-Plan-USD-Monthly-WEST","price":6900,"currencyCode":"USD","period":1,"periodUnit":3}
{"name":"Growth Plan USD Every 3 months WEST","externalPlanId":"Growth-Plan-USD-Every-3-months-WEST","price":20700,"currencyCode":"USD","period":3,"periodUnit":3}
Arithmetic, using the page own formula (item.price/100/12 for yearly): 70800/100/12 = $59.00 per month billed annually; 6900/100 = $69.00 per month billed monthly; 20700/100/3 = $69.00 per month billed quarterly.

PRICING API (countryCode=DE, the exact URL the page itself requests, HTTP 200, 88,385 bytes) - Growth records, untruncated:
{"name":"Growth Plan EUR Yearly WEST","externalPlanId":"Growth-Plan-EUR-Yearly-WEST","price":70800,"currencyCode":"EUR","period":1,"periodUnit":4}
{"name":"Growth Plan EUR Monthly WEST","externalPlanId":"Growth-Plan-EUR-Monthly-WEST","price":6900,"currencyCode":"EUR","period":1,"periodUnit":3}
{"name":"Growth Plan EUR Every 3 months WEST","externalPlanId":"Growth-Plan-EUR-Every-3-months-WEST","price":20700,"currencyCode":"EUR","period":3,"periodUnit":3}

ABSENCE CHECK: no price of 49 occurs anywhere in the rendered pricing page (77,612 characters of normalised rendered text; zero matches for a euro-49, dollar-49, or standalone 49). The only discount language on the page is the ordinary annual-term saving ("Save up to 10%", "Save up to 25%", "Up to ~25% off") and a "7 days free trial"; there is no introductory or time-limited rate attached to the Growth plan.
```

   - Compared on: USD, Growth plan, per month billed annually ($708.00/year, i.e. $59.00/mo) - the figure the pricing page shows by default, since the annual toggle is the default view. Month-to-month for the same plan is $69.00/mo, and quarterly is $207.00 per 3 months ($69.00/mo). List price, excluding the per-message WhatsApp conversation charges Wati bills separately on top of the plan for every tier.

7. **WATI** (Whatsapp Business) — $49 quoted vs $59 today on Growth - Wati's entry paid plan (the tiers are Growth / Pro / Business; there is no cheaper tier).
   - The article says, verbatim (215 characters, in full): `Wati: Best WhatsApp marketing tool for SMB automation Offers easy WhatsApp Business API access, automated replies, broadcasts, and team support tools designed for small and midsize businesses. (Pricing from ~$49/mo)`
   - Found once in the page a reader sees. Article reached by: Route 1 succeeded: direct curl request with a browser user agent (Chrome 128 UA), --compressed, redirects followed. No fallback needed - no full header set, headless render or text reader was used for the article.
   - The pricing page carries no price in its bytes. The vendor's pricing page answered, but the figure is not in what it sends: the price nodes ship empty and are filled afterwards, or pricing is suppressed for our vantage point. The figure was read at the route below, which is the one a reader can use. Check it at: https://live-mt-server.wati.io/wati/api/v1/pricing/getPlansByGeo?countryCode=US (pricing page we record: https://www.wati.io/pricing/). Routes tried: https://www.wati.io/pricing/ returned HTTP 200 to a plain curl with a browser UA (700,187 bytes decoded), but it ships its price nodes empty and fills them from a pricing API at runtime. Confirmed two further ways: a headless Chromium render (--headless=new --dump-dom, HTTP 200, 752,351 byte DOM) which paints the figures, and a direct HTTP 200 call to that same public pricing API for the US catalogue.
   - The vendor's page says (3595 characters, in full):

```text
ROUTE A - headless Chromium render of https://www.wati.io/pricing/ (--headless=new --dump-dom --virtual-time-budget=25000, browser UA; HTTP 200; rendered DOM 752,351 bytes). The three plan cards are Growth / Pro / Business; Growth is the entry paid plan. The Growth price nodes, quoted untruncated exactly as they stand in the rendered DOM:
  <h2 class="h4"><strong>Growth</strong></h2>
  <h2 class="h4 growth_plan_annual_api_pricing"><strong class="">€59</strong></h2>
  <span class="plan_pricing_tenure">month <i>billed annually</i></span>
  <h2 class="h4 growth_plan_monthly_api_pricing">€69</h2>
  <span class="plan_pricing_tenure">month <i>billed monthly</i></span>
As visible text: "Growth ... €59 month billed annually" and "Growth ... €69 month billed monthly". The currency is EUR because the fetching IP is in Europe: the page injects const __WATI_GEO_CONTINENT="EU"; and its pricing AJAX call is url: 'https://live-mt-server.wati.io/wati/api/v1/pricing/getPlansByGeo?countryCode=DE'.

ROUTE B - the same public pricing API the page itself calls, asked for the US catalogue: GET https://live-mt-server.wati.io/wati/api/v1/pricing/getPlansByGeo?countryCode=US (HTTP 200, 89,448 bytes). All three GROWTH rows it returns, untruncated except for each row's long "features" array, which carries no plan price (full JSON saved at C:\Users\20012\AppData\Local\Temp\claude\c--Users-20012-Documents-GitHub-bashka-billing\0e7f03b8-e30a-4a24-9995-acf2bb900b21\scratchpad\study-verbatim\wati_api_us.json):
  {"id":"fb648a00-37c7-455c-9ffe-abdf692a2791","name":"Growth Plan USD Yearly WEST","isActive":true,"externalPlanId":"Growth-Plan-USD-Yearly-WEST","planFamilyId":"52bcba07-67e4-4073-8719-fd1e9516d7af","price":70800,"period":1,"periodUnit":4,"displayName":"Growth Plan","features":[...]}
  {"id":"51c8f7b8-e56e-41f7-8c60-e17490e1270e","name":"Growth Plan USD Monthly WEST","isActive":true,"externalPlanId":"Growth-Plan-USD-Monthly-WEST","planFamilyId":"52bcba07-67e4-4073-8719-fd1e9516d7af","price":6900,"period":1,"periodUnit":3,"displayName":"Growth Plan","features":[...]}
  {"id":"59d66889-8399-4176-ac95-9f483a64595f","name":"Growth Plan USD Every 3 months WEST","isActive":true,"externalPlanId":"Growth-Plan-USD-Every-3-months-WEST","planFamilyId":"52bcba07-67e4-4073-8719-fd1e9516d7af","price":20700,"period":3,"periodUnit":3,"displayName":"Growth Plan","features":[...]}
price is in minor units; periodUnit 3 = month, 4 = year. The page's own arithmetic, quoted from its inline script, is $(".growth_plan_annual_api_pricing strong").html(currencies[item.currencyCode]+""+item.price/100/12); and $(".growth_plan_monthly_api_pricing").html(currencies[item.currencyCode]+""+item.price/100); - so 70800/100/12 = 59 and 6900/100 = 69. The US catalogue therefore prints the same numerals the render shows in EUR: $59/month billed annually, $69/month billed monthly, $207 per quarter (= $69/month).

ROUTE C - static HTML of https://www.wati.io/pricing/ (curl, browser UA, HTTP 200, 700,187 bytes decoded). It ships the price nodes EMPTY - <h2 class="h4 growth_plan_annual_api_pricing"><strong class=""></strong></h2> - alongside the comment <!-- Datas for this div coming from pricing API-->, which is why the API above is the citable route for a reader.

No cheaper tier exists: the catalogue returns only GROWTH, PRO and BUSINESS, and the rendered plan headings are Growth / Pro / Business. Every other currency figure on the page is an add-on or a per-extra-user rate (Additional Users @ €39/user/month on Pro, €89 on Business, $4.99/month Shopify add-on, $50/one-time custom subdomain).
```

   - Compared on: USD per month, entry plan, billed annually: $59/month ($708/year, Growth-Plan-USD-Yearly-WEST). Billed monthly the same plan is $69/month (Growth-Plan-USD-Monthly-WEST, 6900 minor units); quarterly is $207 per quarter, also $69/month. The pricing page opens on the Annual tab, so $59 is the figure a visitor sees first. Excludes WhatsApp per-message charges, which Wati bills on top ('Additional charges apply for messages').

8. **Google Workspace** (Email Hosting) — $6 quoted vs $7 today on Business Starter (card labelled "Starter"; the page's own footnote calls it "Business Starter").
   - The article says, verbatim (321 characters, in full): `Google Workspace offers a 14-day trial for new users, allowing up to 10 team members. The paid plan starts at $6 per person and includes 30 GB of cloud storage per person and up to 30 alias addresses. The Enterprise plan, which provides 5 TB of storage per user with the option to request more, is available upon request.`
   - Found once in the page a reader sees. Article reached by: Route 1 of 4: direct curl request with a browser user agent (Chrome 127). No fallback needed - the full document returned on the first attempt.
   - The pricing page carries no price in its bytes. The vendor's pricing page answered, but the figure is not in what it sends: the price nodes ship empty and are filled afterwards, or pricing is suppressed for our vantage point. The figure was read at the route below, which is the one a reader can use. Check it at: https://web.archive.org/web/20260903022406/https://workspace.google.com/pricing (pricing page we record: https://workspace.google.com/pricing). Routes tried: The live vendor page was reached on every route but carries no price in its bytes on any of them. (1) curl with a browser user agent to https://workspace.google.com/pricing -> HTTP 200, 1,012,729 bytes, zero '$' price tokens and zero USD amounts; the plan names appear only in footnote prose. (2) curl with a full browser header set including Accept-Language: en-US, against https://workspace.google.com/intl/en_us/pricing.html , https://workspace.google.com/pricing.html?hl=en and https://workspace.google.com/intl/en_us/pricing.html?feature=meet -> all HTTP 200, all redirect back to the same JS application, all zero price tokens. (3) headless Chromium render -> HTTP 200 and the page renders, but the Starter/Standard/Plus price cards render with no numbers at all: the page prints literally "All plans billed monthly, all prices $" with the amount missing, and its region selector resolves to Russia, where Google does not sell Workspace, so pricing is suppressed for this vantage point. (4) r.jina.ai text reader -> HTTP 403, now gated. (5) WebFetch from a separate egress -> returned the page but likewise reported no numeric prices, confirming the figures are injected client-side and are absent from the document itself. Because the figure is not retrievable from here, it was re-derived from the Internet Archive's US-vantage renders of the same URL, which do contain the rendered price cards. Two independent captures were read and they agree on the standing figure.
   - The vendor's page says (1611 characters, in full):

```text
Google Workspace pricing page, Business Starter card, archived US render of 2026-09-03 02:24:06 UTC (text extracted as the page renders it; entities decoded, U+00A0 mapped to space):

Starter
30% off for 3 months
help
30% off for 3 months
help
Discount details
Sep 16, 2026 – Dec 16, 2026
$4.90 USD
$7.00
(30% off)
per user / month for all users
Starting Dec 16, 2026
$7.00 USD
per user / month for all users
$4.90
$7
**
/ user per month
Start a trial
Starter includes:
30 GB
pooled storage per person*

Toggle state above the cards: "Annual (Save 16% with 1 year commitment)".

Footnote on the same page: "Business Starter, Business Standard, and Business Plus plans can be purchased for a maximum of 300 users. There is no minimum or maximum user limit for Enterprise plans. Google Workspace customers may have access to additional features for a limited promotional period."

Sibling cards in the same render: Standard shows "$7.00 USD / $14.00 / (50% off)" then "Starting Dec 16, 2026 / $14.00 USD / per user / month for all users"; Plus standing $22.00.

Cross-check against an independent earlier capture, 2026-09-01 05:07:03 UTC (https://web.archive.org/web/20260901050703/https://workspace.google.com/pricing):

Starter
50% off for 3 months
Discount details
Sep 14, 2026 – Dec 14, 2026
$3.50 USD
$7.00
(50% off)
per user / month for all users
Starting Dec 14, 2026
$7.00 USD
per user / month for all users

The discounted figure moved between captures ($3.50 at 50% off, then $4.90 at 30% off) while $7.00 held in both. That is what marks $7.00 as the standing rate and the lower numbers as promotional.
```

   - Compared on: USD, per user / month, Annual plan with a 1 year commitment (page toggle: "Annual (Save 16% with 1 year commitment)"). This is the cheapest standing entry rate; Flexible month-to-month billing is higher. A 30%-off-for-3-months promotion ($4.90, Sep 16 to Dec 16, 2026) was running at time of check and is excluded from the standing figure.

9. **Vultr** (Vps Hosting) — $6 quoted vs $5 today on Cloud Compute - Regular Performance, 1 vCPU / 1 GB (plan id vc2-1c-1gb): 1 vCPU, 1 GB memory, 25 GB SSD, 1.00 TB bandwidth.
   - The article says, verbatim (711 characters, in full): `3. Vultr Vultr is known for having a simple pricing system and servers all around the world. It has more than 30 data centers throughout the world, so it’s great for projects that demand low-latency performance for a global audience. Benefits: Hourly or monthly billing options High-frequency compute instances for faster performance One-click app deployment (WordPress, Docker, etc.) Automatic backups and snapshots Why It’s Popular:Developers like Vultr because they can pay for it in a lot of different ways and choose from a lot of server locations. It works well for businesses because it is reliable and easy to grow. Pricing (2025): Starts at $6/month for 1 vCPU, 1 GB RAM, 25 GB SSD, and 1 TB bandwidth.`
   - Found once in the page a reader sees. Article reached by: Route 1 - direct curl with a browser user agent (Chrome 126 UA), no redirect; HTTP 200
   - Read on the vendor's own pricing page. The vendor's pricing page served this figure to us directly. Checked at: https://api.vultr.com/v2/plans?type=vc2&per_page=100 (pricing page we record: https://www.vultr.com/pricing/). Routes tried: Route 1 (browser UA only) refused with HTTP 403; Route 2 - curl with full browser header set (Accept, Accept-Language, Sec-Ch-Ua, Sec-Fetch-*, Upgrade-Insecure-Requests) and --compressed - returned HTTP 200, 125567 bytes on the wire / 1400201 decoded. WebFetch and r.jina.ai both refused (403 / bot interstitial). Corroborated via Vultr's unauthenticated public plans API, HTTP 200.
   - The vendor's page says (2755 characters, in full):

```text
https://www.vultr.com/pricing/ -> Cloud Compute -> subsection "Regular Performance" ("Powered by previous generation Intel CPUs and regular SSD."). Table header rendered as: vCPUs | Memory | Bandwidth | Storage | Monthly Price | Hourly Price. Rows rendered in that table, in order: "1 vCPU | 0.5 GB Memory | 0.50 TB Bandwidth | 10 GB Storage | $2.50 /mo | $0.004 /hr IPv6 Only"; "1 vCPU | 0.5 GB Memory | 0.50 TB Bandwidth | 10 GB Storage | $3.50 /mo | $0.005 /hr"; "1 vCPU | 1 GB Memory | 1.00 TB Bandwidth | 25 GB Storage | $5.00 /mo | $0.007 /hr"; "1 vCPU | 2 GB Memory | 2.00 TB Bandwidth | 55 GB Storage | $10.00 /mo | $0.015 /hr". The row matching the article's stated spec (1 vCPU, 1 GB RAM, 25 GB SSD, 1 TB bandwidth) is the third: $5.00 /mo. $6.00 /mo does appear on the same page, but only for OTHER Cloud Compute tiers whose specs do not match the article's: High Performance (AMD Pricing and Intel Pricing tables) "1 vCPU | 1 GB Memory | 2.00 TB Bandwidth | 25 GB Storage | $6.00 /mo | $0.009 /hr" (2 TB bandwidth, not 1 TB), and High Frequency "1 vCPU | 1 GB Memory | 1.00 TB Bandwidth | 32 GB Storage | $6.00 /mo | $0.009 /hr" (32 GB storage, not 25 GB). Corroborated independently by Vultr's unauthenticated public plans API, https://api.vultr.com/v2/plans?type=vc2&per_page=100 (HTTP 200), which returns for the Regular Performance family: {"id":"vc2-1c-1gb","vcpu_count":1,"ram":1024,"disk":25,"disk_type":"SSD","disk_count":1,"bandwidth":1024,"monthly_cost":5,"hourly_cost":0.007,"monthly_cost_preemptible":5,"hourly_cost_preemptible":0.007,"invoice_type":"monthly","type":"vc2","cpu_vendor":"Intel","storage_type":"local_storage","vcpu_type":"thread","deploy_ondemand":true,"deploy_preemptible":false,"locations":["ewr","ord","dfw","sea","lax","atl","ams","lhr","fra","sjc","syd","yto","cdg","nrt","waw","mad","icn","mia","sgp","sto","mex","sao","mel","bom","jnb","tlv","blr","del","scl","itm","man"],"location_cost":{"sao":{"monthly_cost":7.5,"hourly_cost":0.01,"monthly_cost_preemptible":7.5,"hourly_cost_preemptible":0.01}},"gpu_brand":"none"}. No promotional, introductory, trial, term-commitment or discount language attaches to this price anywhere on the pricing page; the only occurrence of the string "Promo" on the page is the footer navigation link "Promotions". The page does carry a standing FAQ caveat: "At Vultr, we attempt to keep cloud pricing as consistent as possible globally. However, due to variation in regional costs (such as networking, hardware, labor, taxes, and fees), certain global data center locations may have different per hour and per month pricing for Vultr cloud services." Consistent with that, the API shows $5.00/mo in 30 of the 31 listed regions, with Sao Paulo (sao) the sole uplift at $7.50/mo.
```

   - Compared on: Monthly on-demand list price in USD, per Vultr's public pricing table and public plans API (monthly_cost 5, hourly_cost 0.007, invoice_type "monthly", deploy_ondemand true). Standard rate, not promotional; identical preemptible price. Regional variation exists per Vultr's own FAQ - $5.00/mo in 30 of 31 listed regions, Sao Paulo $7.50/mo.

10. **Microsoft 365 for Business** (Email Hosting) — $6 quoted vs $7 today on Microsoft 365 Business Basic.
   - The article says, verbatim (134 characters, in full): `The starter plan costs $6 per user/month, offering 50 GB of email storage, 1 TB of OneDrive storage, and access to the suite of tools.`
   - Found once in the page a reader sees. Article reached by: Route 1 — direct curl, Chrome user agent (Mozilla/5.0 ... Chrome/125.0.0.0 Safari/537.36), --compressed, followed redirects. Succeeded on the first attempt; no fallback route needed.
   - Served only to a rendered browser. The vendor's pricing page refused plain requests and gave the figure up only to a full browser render. The link below is the address that render resolved to, which a reader with a browser can open. Check it at: https://www.microsoft.com/en-us/microsoft-365/business/compare-all-microsoft-365-business-products (pricing page we record: https://www.microsoft.com/en-us/microsoft-365/business/microsoft-365-plans-and-pricing). Routes tried: Route 3 — headless Chromium render (Chrome --headless=new --disable-gpu --no-sandbox --virtual-time-budget=30000 --dump-dom), 930,749-byte DOM. Route 1 (curl, browser UA) and Route 2 (curl, full browser header set incl. sec-ch-ua / Sec-Fetch-*) each returned an edge bot-block page: HTTP 200, 12,623 bytes, <title>Your request has been blocked</title>, 0 occurrences of 'Business Basic'. WebFetch timed out at 60s. Route 4 (r.jina.ai) returned HTTP 403 with a Cloudflare 'Just a moment...' interstitial.
   - The vendor's page says (2565 characters, in full):

```text
Rendered pricing card (headless Chromium DOM), untruncated as the page renders it:
Microsoft 365 Business Basic
Lightweight web and mobile apps to kickstart your business
$7.00
user/month, paid yearly
(Annual subscription–auto renews)1

Underlying markup for the same block, untruncated:
<h2 class="oc-product-title">  Microsoft 365 Business Basic  </h2> ... <div class="sku__pricing" data-ocr-pricing-render="pricing" aria-hidden="false"> <div class="sku__pricing-current"> <span class="oc-displayListPrice">$7.00</span> </div> </div> <div class="sku__detail-recurrence"> <span class="oc-displayUnit">user/month, paid yearly</span> </div> <div class="sku__detail-commitment"> <div data-oc-token-text=""> (Annual subscription–auto renews)<sup><a class="ms-rte-link" href="#footnote-1" aria-label="Footnote 1">1</a></sup> </div> </div>

Second, independent instance on the same page — the comparison-table column header, untruncated (note this instance uses an em dash where the card uses an en dash):
Microsoft 365 Business Basic
$7.00
user/month, paid yearly
(Annual subscription—auto renews)1

Every SKU card on the page, title -> printed list price -> unit:
Microsoft 365 Business Premium with Copilot -> $32.00 -> user/month, paid yearly
Microsoft 365 Business Standard with Copilot -> $23.50 -> user/month, paid yearly
Microsoft 365 Business Basic -> $7.00 -> user/month, paid yearly
Microsoft 365 Business Premium with Copilot (no Teams) -> $28.80 -> user/month, paid yearly
Microsoft 365 Business Standard with Copilot (no Teams) -> $20.30 -> user/month, paid yearly
A separate SKU 'Microsoft 365 Business Basic (no Teams)' renders $5.40 user/month, paid yearly; that is the unbundled EEA/Swiss variant, not the plan the article describes.

Promotional-markup check on the Business Basic block: the price carries class 'oc-displayListPrice' only. There is no 'sku__pricing-discount' div, no 'oc-displayMSRPPrice' strikethrough, and no 'limited time', '% off', 'introductory' or 'was $' string anywhere on the page. The one discount pair present ($21.00 struck to $18.00) sits inside an aria-hidden="true" alternate render belonging to a Copilot-bearing SKU, and the only 'promotional' string on the page reads 'An annual commitment is required, and promotional pricing applies to the first year only' inside a footnote scoped to Microsoft 365 plans with Copilot. Neither touches Business Basic.

Only one billing basis is printed anywhere on the page: all 13 'oc-displayUnit' spans read 'user/month, paid yearly'; the string 'paid monthly' occurs zero times.
```

   - Compared on: USD, en-us storefront; $7.00 per user/month, paid yearly, on an annual subscription that auto-renews. Rendered from class 'oc-displayListPrice' (list price) with unit 'user/month, paid yearly'; no MSRP strikethrough and no discount block on this SKU. The page prints no monthly-billing alternative — all 13 unit spans read 'user/month, paid yearly'. Same per-user-per-month annual-commitment basis as the article's $6.

11. **Microsoft 365 for Business** (Email Hosting) — $6 quoted vs $7 today on Microsoft 365 Business Basic.
   - The article says, verbatim (106 characters, in full): `Microsoft 365 Business Basic: $7.20 per user per month or $6 per user per month with a one-year commitment`
   - Found once in the page a reader sees. Article reached by: Route 1 succeeded: direct HTTPS GET via curl with a Chrome 127 browser user-agent and --compressed. HTTP 200, 66,075 bytes on the wire (gzip), 290,392 bytes decoded. No bot wall or captcha. Headless Chromium (gstack browse) was used additionally for one narrow purpose only: the byline date is injected client-side and is absent from the static bytes. The quotation itself was taken from the route-1 raw bytes.
   - Served only to a rendered browser. The vendor's pricing page refused plain requests and gave the figure up only to a full browser render. The link below is the address that render resolved to, which a reader with a browser can open. Check it at: https://www.microsoft.com/en-us/microsoft-365/business/microsoft-365-plans-and-pricing (pricing page we record: https://www.microsoft.com/en-us/licensing/news/2026-m365-packaging-pricing-updates). Routes tried: Recorded pricing URL refuses non-browser requests. Route 1 (curl + browser UA) returned HTTP 200 but an Akamai interstitial titled 'Your request has been blocked. This could be due to several reasons.' (12,623 bytes, zero occurrences of 'Business Basic'). Route 2 (full Chrome header set: Accept, Accept-Language, sec-ch-ua, Sec-Fetch-*, Upgrade-Insecure-Requests) returned the identical 12,623-byte block page. Route 4 (r.jina.ai text reader) returned HTTP 403 behind a Cloudflare 'Just a moment...' challenge. Route 3 (headless Chromium) SUCCEEDED: HTTP 200, client-side redirect from the recorded compare-all URL to https://www.microsoft.com/en-us/microsoft-365/business/microsoft-365-plans-and-pricing, title 'Microsoft 365 Pricing for Business: Plans & Features', 17,047 characters of rendered text, 'Business Basic' present 3 times.
   - The vendor's page says (152 characters, in full):

```text
Microsoft 365 Business Basic
Lightweight web and mobile apps to kickstart your business
$7.00
user/month, paid yearly
(Annual subscription–auto renews)1
```

   - Compared on: USD per user/month on an annual commitment. The card states '$7.00 / user/month, paid yearly / (Annual subscription–auto renews)'. Every plan card on the page is quoted on this same paid-yearly basis; no month-to-month figure is displayed. This is the same basis the article uses for its $6 ('with a one-year commitment' / 'billed annually'), so the comparison is like-for-like.

12. **Porkbun** (Domain Registrars) — $10.99 quoted vs $11.08 today on .com domain - Porkbun standard published rate (registration, renewal and transfer are one and the same price; Porkbun has no tiers or plans for this).
   - The article says, verbatim (65 characters, in full): `The $10.99 price is consistent for both registration and renewal.`
   - Found once in the page a reader sees. Article reached by: Route 1 of the ladder succeeded: direct GET via curl 8.11.0 with a Chrome 128 browser User-Agent (--compressed, redirects followed). No fuller header set, headless render or text reader was needed.
   - Read on the vendor's own pricing page. The vendor's pricing page served this figure to us directly. Checked at: https://porkbun.com/products/domains (pricing page we record: https://porkbun.com/products/domains). Routes tried: Route 1 succeeded: direct GET of https://porkbun.com/products/domains via curl with a Chrome 128 browser User-Agent, HTTP 200, 769728 bytes. Corroborated by a second independent route, Porkbun's public unauthenticated pricing API at https://api.porkbun.com/api/json/v3/pricing/get, HTTP 200, status SUCCESS.
   - The vendor's page says (2394 characters, in full):

```text
ROUTE A - https://porkbun.com/products/domains (direct GET, browser UA, HTTP 200, 769728 bytes).

A1. Hero price link, verbatim:
<a class="black priceDisplayHomeLink"
               data-tld="com"
               href="/tld/com">
               .COM from $11.08            </a>

A2. The .com row of the "all extensions" pricing table, verbatim and untruncated, exactly as the page carries it:
<div class="domainsPricingAllExtensionsItem" data-extension="com" data-price-registration="1108" data-price-renewal="1108" data-price-transfer="1108">
         <div class="row">
 	  <div class="col-xs-3"">
	    <a href="/tld/com">.com</a>
 	  </div>
 	  <div class="domainsPricingAllExtensionsItemPrice registration col-xs-3">
	    <span class="pointer badge badge-porkbun atCostBadge"><i class="fa-solid fa-star"></i></span> $<span class="sortValue">11.08</span>
 	  </div>
 	  <div class="domainsPricingAllExtensionsItemPrice renewal col-xs-3">
	    <span class="badge badge-porkbun pointer atCostBadge"><i class="fa-solid fa-star"></i></span> $<span class="sortValue">11.08</span>
 	  </div>
 	  <div class="domainsPricingAllExtensionsItemPrice transfer col-xs-3">
	    <span class="badge badge-porkbun pointer atCostBadge"><i class="fa-solid fa-star"></i></span> $<span class="sortValue">11.08</span>
 	  </div>
         </div>
	</div>

A2 rendered as the page renders it (columns: EXTENSION | REGISTRATION | RENEWAL | TRANSFER):
.com | * $11.08 | * $11.08 | * $11.08
(the * is Porkbun at-cost star badge, class "atCostBadge"; it is not a discount marker)

A3. Promotional control: this page renders first-year promotions as a struck-through list price plus a badge reading "1st Yr Sale!" -- e.g. .agency carries <small><s class="text-muted">$25.23</s></small> <span class="badge badge-porkbun">1st Yr Sale!</span> ... $3.60 against a $25.23 renewal. That badge occurs 338 times on this page. It does NOT occur in the .com row, and the .com row carries no struck-through price. Registration, renewal and transfer are the same number.

ROUTE B - https://api.porkbun.com/api/json/v3/pricing/get (Porkbun public, unauthenticated pricing API; GET, HTTP 200, 82223 bytes, status SUCCESS). The "com" entry verbatim:
{"registration": "11.08", "renewal": "11.08", "transfer": "11.08", "coupons": []}

Both routes agree: $11.08 for registration, renewal and transfer, with an empty "coupons" array for .com.
```

   - Compared on: US dollars per domain-year for .com, list price before any coupon. Registration $11.08, renewal $11.08, transfer $11.08 - the same basis the article uses in its Year 1 / Renewals columns, so the comparison is like for like.

## The control — 13 rows a first look called stale and further reads did not

These are the study's control, not its failures: they are the reason the headline is 12 and not 25. Each was flagged by an independent checker reading the article live, then knocked out by the reads that followed — most when a later reader opened the vendor's page on the same billing basis, and 3 when the quotation stored for the row turned out not to be the text on the page — control rows 12, 23 and 24: every control row filed under “The quoted sentence is not the sentence on the page”, plus any row whose own note calls the stored quotation a reconstruction. None was carelessness by a checker; each is one of the ordinary traps of reading a pricing page. No publisher is named — these rows record how a price can be misread, not anything about a page.
Each row carries the checker's own note as recorded. 3 of the 13 named the site they had read, so every publisher name in these notes is replaced with [publisher redacted], and 11 of the 13 are stored in the record at exactly 260 characters and so stop where the record stops rather than where a sentence ends — each note's own length is printed beside it, and the other 2 are published whole. Nothing else about them is altered, and nothing is trimmed to look complete.

### The quoted figure is no longer on the page (3)

The figure the first pass read is not there on a later read. An article can be corrected at any time, so a quote that has moved on is not evidence of anything.

- **MXroute** (control row 5) — figure read as $4.08, 4 independent reads, note stored at 260 characters and stops where the record stops, 269 characters published. KNOCKED OUT on the quotation, not on the economics. The string "$4.08/mo" does not appear on the [publisher redacted] article. I fetched the raw HTML (436,132 bytes) and grepped: "$4.08" occurs 0 times, and the entity form "&#36;4.08" 0 times. The bare token "4.08" occ
- **Bitdefender** (control row 13) — figure read as $2.92, 2 independent reads, note stored at 260 characters and stops where the record stops, 237 characters published. The article at [publisher redacted] (Last updated Sep 4, 2026) no longer contains the string "2.92" anywhere. Two independent fetches of the page with differently-worded extraction prompts confirm it. What the page states for Bitdefender
- **Bitdefender** (control row 14) — figure read as $2.92, 2 independent reads, note stored at 260 characters and stops where the record stops, 260 characters published. Article fetched today (HTTP 200, 2.49 MB; JSON-LD dateModified "2026-07-17T15:29:02+00:00", matching the stated "Last updated 17 July 2026"). The string "2.92" occurs 9 times in the raw HTML and every single occurrence is inside an SVG path coordinate or minif

### The quoted sentence is not the sentence on the page (2)

The figure may be on the page, but not in the words the first pass recorded — the sentence belongs to another vendor, or the number appears only inside a comparison table. A quotation we cannot find in the one reading this study counts on — the text a reader sees — is not evidence about a page, whatever the arithmetic beside it says, so the row is knocked out however large its gap looked.

- **Leadpages** (control row 12) — figure read as $49, 4 independent reads, note stored at 260 characters and stops where the record stops, 260 characters published. Knocked out on the quotation. Two readers fetched the article by separate routes and neither found the sentence the record stored anywhere on it. The page carries that wording under a different vendor's heading and at a different figure; the section on this ve
- **Instapage** (control row 23) — figure read as $199, 3 independent reads, note in full, 1457 characters published. ROW KNOCKED OUT ON THE RE-READ AGAINST THE CANONICAL READING OF THE PAGE - THE TEXT A READER SEES. The stored quotation was a reconstruction, not page text: the sentence "Pricing starts at $199/mo, which is higher than some alternatives." occurs zero times in the article, in raw bytes or in normalised text. What the article carries is that same sentence about a DIFFERENT vendor, at $99/month, under the heading immediately above this one; the stored row took that sentence, changed the number, and attributed it to this vendor. The vendor's own write-up on the page states no figure at all. The $199 is genuinely on the page, but only inside comparison tables, never in prose - recorded here as the table row in document order with cell boundaries rendered as single spaces, nothing reflowed into prose and no fragments joined. On the substance the row would have failed too: $199/month is the vendor's live, standing Optimize price today, so no figure has gone stale. The article's defect is narrower and different - it files the Optimize price under a column headed "Starting Price" when the entry plan is Create at $99/month ($79/month billed annually). That is a plan-labelling error by the publisher, not price drift, and it is not what this study measures. Recorded for our own catalogue: the pricing URL we held, instapage.com/en/pricing, is dead - it 302s to a marketing page carrying no prices - and the live pricing page is instapage.com/plans.

### The figure names a different plan, not the entry price (3)

The article's figure is right for the plan the article names; our own figure is the vendor's entry plan. Two correct numbers about two different plans.

- **TaxJar** (control row 1) — figure read as $99, 4 independent reads, note stored at 260 characters and stops where the record stops, 274 characters published. ROW KNOCKED OUT. The premise is a misattribution by the first pass. Fetched the [publisher redacted] article today (2026-09-05; JSON-LD datePublished 2025-12-26, dateModified 2026-03-23 -- matches the stated date line). Its TaxJar pricing table is a single run of text listi
- **Landingi** (control row 9) — figure read as $49, 2 independent reads, note stored at 260 characters and stops where the record stops, 260 characters published. The article's $49/month is explicitly attributed to a named upper tier, the "Automate plan", and the sentence itself frames it as the more expensive of "Landingi's two packages" — the one you pay up for to get A/B testing, automation and integrations. The Cons
- **Leadpages** (control row 10) — figure read as $37, 6 independent reads, note stored at 260 characters and stops where the record stops, 260 characters published. Knocked out on plan identity. Two readers found the quoted sentence live and correctly attributed, but the row measured it against Grow at $99/mo, the entry tier of the CRO line rather than the cheapest plan on the page. The vendor's own headline reads "Plans

### A monthly headline read against an annual-billed rate (3)

Both figures are on the vendor's page today. They differ because they are quoted on different billing bases — or on different regional rate cards under one plan name — which is the single easiest way to read a price wrongly.

- **ManageEngine Mobile Device Manager Plus** (control row 2) — figure read as $2.50, 2 independent reads, note stored at 260 characters and stops where the record stops, 260 characters published. Knocked out on basis. ManageEngine's pricing page publishes no per-device-per-month rate anywhere; it prices MDM Plus in device-count tiers as a bundle total (Standard Cloud 50 devices = $64/month or $645/year; Professional Cloud 50 devices = $119/month or $1,
- **Leadpages** (control row 7) — figure read as $37, 2 independent reads, note stored at 260 characters and stops where the record stops, 260 characters published. The row dies on the article's own wording. The premise records the quote as "$37/month" read as basis monthly, but every one of the three places the figure appears on the live page carries an explicit annual-billing qualifier, and the main sentence supplies th
- **WATI** (control row 24) — figure read as $49, 3 independent reads, note in full, 1530 characters published. ROW KNOCKED OUT ON THE RE-READ AGAINST THE CANONICAL READING OF THE PAGE - THE TEXT A READER SEES - on two independent grounds. First, the stored quotation was a reconstruction: the string "$49/month" occurs zero times in the article, and the bare substring "49/month" does not appear anywhere in it either. The article states the figure three ways and every one of them is explicitly approximate - body prose "Plans start around $49 a month...", a table cell "From ~$49 / mo" with the page's own tilde, and the Sources line recorded here, which is the smallest self-contained run naming both the vendor and the figure. Second, the price is not stale. $49.00/month is a live, standing Wati Growth rate today - "Growth Plan USD Monthly EAST", isActive true, 4900 minor units - with no promotional, introductory or time-limited marker, and the same $49/mo recurs in the quarterly plan, which an introductory rate would not do. Wati runs separate WEST and EAST USD rate cards under one plan name: our recorded $59 is Growth USD Yearly WEST ($708/yr), and the article's $49 is Growth USD Monthly EAST. Both are standing prices for the plan Wati currently calls Growth, so the difference is billing term and region, not the passage of time. A reader in the US or EU who follows the article's own link sees $59/mo billed annually or $69/mo month-to-month and will not see $49 from that address - a fair criticism of the article's regional precision, but a geo-scoping criticism rather than staleness, and not the claim this study makes.

### A promotional rate rather than the standing price (2)

The vendor was showing a promotional figure. Quoting it is accurate on the day; it simply is not the standing price we record.

- **Hostinger VPS** (control row 4) — figure read as $2.99, 4 independent reads, note stored at 260 characters and stops where the record stops, 260 characters published. Knocked out on the vendor side. Two readers re-fetched the vendor's page by separate routes and both found KVM 1 at $6.49/mo under a 67%-off badge, struck through from $19.49, with "Renews at $11.99/mo for 2 years" printed on the same card. A first-term promot
- **Hostinger VPS** (control row 15) — figure read as $5.99, 2 independent reads, note stored at 260 characters and stops where the record stops, 260 characters published. Article quote is still live verbatim and is presented as Hostinger's starting price, so the quote-gone and different-plan exits do not apply. But the vendor's $6.49/mo is not a list monthly price: hostinger.com/vps-hosting shows it as a 67%-off promotional rat

## Search coverage by category

| Category | Articles found | Articles read | Confirmed out of date |
| --- | --- | --- | --- |
| Whatsapp Business | 4 | 4 | 4 |
| Email Hosting | 4 | 4 | 3 |
| CRM Software | 4 | 3 | 2 |
| Domain Registrars | 4 | 4 | 1 |
| Landing Page Builders | 4 | 4 | 1 |
| Vps Hosting | 4 | 4 | 1 |
| Antivirus Software | 4 | 4 | 0 |
| Consent Management Platforms | 4 | 4 | 0 |
| Mobile Device Management | 4 | 4 | 0 |
| Sales Tax Automation | 4 | 4 | 0 |
| VoIP Business Phone | 4 | 4 | 0 |
| Visitor Management | 4 | 2 | 0 |

Dataset (CC-BY): https://frontdeskreview.com/data/stale-lists.json · https://frontdeskreview.com/data/stale-lists.csv
Cite: "Per FrontDeskReview's Stale List Report (re-checked 2026-09-06), 12 of 216 prices quoted by top-ranking 'best of' articles across 12 software categories were confirmed out of date — 13 of 25 first-pass calls were knocked out on re-reading, and FrontDeskReview corrected 65 of its own figures in the same quarter."
