FrontDeskReview · Data study · Updated September 2026

The Stale List Report

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 in all. 82 disagreed with our own recorded figure on a first read, but 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 — which is the whole finding.

12 of 216 quoted prices were out of date. Of the 25 rows a first pass flagged, 13 did not survive the independent re-reads that followed — 3 of them because the quotation stored for the row was not the text on the page. Those are 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.

Every row re-checked 2026-09-06 · 82 independent reads

5.6% of the 216 quoted prices were confirmed out of date
13 of 25 first-pass stale calls knocked out by further independent reads
65 of our own figures corrected in the same quarter

How 216 quoted prices became 12

Each step is a narrower claim than the one above it. The distance between step two and step four is the study: a disagreement is not an error, and a first look is not a finding.

Prices quoted for a vendor we carryacross 45 readable articles in 12 categories
216
Disagreed with our figure on a first reada disagreement, not yet an error
82
Looked out of date to an independent checkereach one re-read live against the vendor's own page
25
Still out of date, and the quotation found in the page a reader sees13 fell away — they are the control below
12

The 12 figures that were out of date

Ordered by the size of the gap between the article's figure and the vendor's figure today, as a share of the figure quoted. 9 publishers, 10 vendors. Every cell is checkable: the publisher links to the article, the vendor to our sourced pricing page, and the page's own stated date is reproduced verbatim — where a page shows no date, the table says so.

Confirmed out-of-date quotes, biggest gap first · re-checked 2026-09-06
# Publisher & the date the page states Vendor Article's figure Vendor's figure today Our figure Gap
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 · read 2026-09-03 172.4% vendor now higher · 3 of 3 reads agreed
2 softwareadvice.com Updated September 3, 2026 Copper CRM CRM Software $12 $23 Basic $23 Basic · read 2026-09-02 91.7% vendor now higher · 3 of 3 reads agreed
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 · read 2026-09-02 70.7% vendor now lower · 3 of 3 reads agreed
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 · read 2026-09-03 42.9% vendor now higher · 3 of 3 reads agreed
5 techradar.com 12 January 2026 Pipedrive CRM Software $10 $14 Lite $14 Lite · read 2026-09-02 40% vendor now higher · 4 of 4 reads agreed
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 · read 2026-09-03 20.4% vendor now higher · 3 of 3 reads agreed
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 · read 2026-09-03 20.4% vendor now higher · 3 of 4 reads agreed
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 · read 2026-09-02 16.7% vendor now higher · 3 of 5 reads agreed
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 · read 2026-09-03 16.7% vendor now lower · 4 of 5 reads agreed
10 mailtrap.io On November 12, 2025 Microsoft 365 for Business Email Hosting $6 $7 Microsoft 365 Business Basic $7 Business Basic · read 2026-09-02 16.7% vendor now higher · 3 of 3 reads agreed
11 techrepublic.com Aug 17, 2026 Microsoft 365 for Business Email Hosting $6 $7 Microsoft 365 Business Basic $7 Business Basic · read 2026-09-02 16.7% vendor now higher · 3 of 3 reads agreed
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) · read 2026-09-02 0.8% vendor now higher · 3 of 3 reads agreed

The evidence behind each row

For every row above: the article's own sentence carrying the figure, as that sentence stands in the text a reader sees on the page, and the vendor's own page stating today's figure — with the billing basis the comparison was made on. Numbered to match the table.

Each quotation was re-read against the live article on 2026-09-06 and matched against one canonical reading of that page — the text a reader sees, set out in full under Method — and the count printed beside each row is the count that reading produces. A quotation that reading could not find was not rewritten to fit: 3 rows were moved to the control below on the quotation — 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 — the longest run here is 3,595 characters and 28,117 characters are published in total, each block's own length stated beside it. Nothing on this page is cut.

  1. #1 Respond.io · Whatsapp Business · $29 quoted vs $79 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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.

    The vendor's page says (2,508 characters, in full)

    [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.

    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. 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.

    Compared onUSD 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. #2 Copper CRM · CRM Software · $12 quoted vs $23 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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.

    The vendor's page says (2,880 characters, in full)

    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.

    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. 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.

    Compared onUSD, 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. #3 Unbounce · Landing Page Builders · $99 quoted vs $29 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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.

    The vendor's page says (2,419 characters, in full)

    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.

    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/. 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.

    Compared onLowest 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. #4 Zoko · Whatsapp Business · $34.99 quoted vs $49.99 today

    The article says, verbatim (32 characters, in full) Pricing: Starts at $34.99/month.

    Found once in the page a reader sees, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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.

    The vendor's page says (2,807 characters, in full)

    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.

    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. 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.

    Compared onStanding 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. #5 Pipedrive · CRM Software · $10 quoted vs $14 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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 says (1,716 characters, in full)

    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.

    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. 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.

    Compared onUSD 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. #6 WATI · Whatsapp Business · $49 quoted vs $59 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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 vendor's page says (2,715 characters, in full)

    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.

    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. 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.

    Compared onUSD, 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. #7 WATI · Whatsapp Business · $49 quoted vs $59 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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 vendor's page says (3,595 characters, in full)

    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).

    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. 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.

    Compared onUSD 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. #8 Google Workspace · Email Hosting · $6 quoted vs $7 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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 vendor's page says (1,611 characters, in full)

    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.

    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. 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.

    Compared onUSD, 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. #9 Vultr · Vps Hosting · $6 quoted vs $5 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. Article reached by: Route 1 - direct curl with a browser user agent (Chrome 126 UA), no redirect; HTTP 200

    The vendor's page says (2,755 characters, in full)

    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.

    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. 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.

    Compared onMonthly 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. #10 Microsoft 365 for Business · Email Hosting · $6 quoted vs $7 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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.

    The vendor's page says (2,565 characters, in full)

    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.

    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. 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.

    Compared onUSD, 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. #11 Microsoft 365 for Business · Email Hosting · $6 quoted vs $7 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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.

    The vendor's page says (152 characters, in full)

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

    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. 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.

    Compared onUSD 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. #12 Porkbun · Domain Registrars · $10.99 quoted vs $11.08 today

    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, as fetched on 2026-09-06 — the reading is defined under Method, and it is the only reading this study counts on. 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.

    The vendor's page says (2,394 characters, in full)

    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.

    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. 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.

    Compared onUS 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 that a first look called stale and further reads did not

These are not the study's failures — they are its control, and the reason the headline number is 12 rather than 25. Every one was flagged by an independent checker reading the article live, and every one was 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 of them was carelessness by a checker; each is one of the ordinary traps of reading a pricing page, which is exactly why a single read is not enough. No publisher is named here: 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.

  • row 5 MXroute · 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
  • row 13 Bitdefender · 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
  • row 14 Bitdefender · 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.

  • row 12 Leadpages · 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
  • row 23 Instapage · 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.

  • row 1 TaxJar · 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
  • row 9 Landingi · 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
  • row 10 Leadpages · 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.

  • row 2 ManageEngine Mobile Device Manager Plus · 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,
  • row 7 Leadpages · 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
  • row 24 WATI · 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.

  • row 4 Hostinger VPS · 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
  • row 15 Hostinger VPS · 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

What we searched, category by category

All 12 categories are listed, including the 6 where nothing was confirmed out of date — a category with no stale rows is a result, not an omission. Of 48 articles found, 3 could not be read (the page did not return readable text to our fetcher) and are excluded from every figure on this page.

Search coverage per category · as of 2026-09-06
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

Method, limits & data

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” above 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.

  • The denominator is every price, not every disagreement. 12 of 216 quoted prices were out of date — 5.6%. Reading it against the 82 disagreements instead (14.6%) would flatter the finding, and against the 25 first-pass calls (48%) would flatter it more.
  • We are in the same position. We corrected 65 of our own figures in the same quarter — 5.4 for every one confirmed here — found by auditing every plan whose recorded source was not the vendor's own page. A price index is a perishable thing to keep, and this study measures the perishing, not anyone's care.
  • A row is one figure on one day. It is not a judgement of an article, a publisher, or the rest of that page — most prices in these articles matched. An article can be corrected at any time, and a row here may already be out of date in the other direction.
  • Only vendors we carry. A price is checkable only where we hold our own dated, sourced figure, so the 216 prices are the subset each article states for a vendor in our catalogue — never its whole table.
  • The baseline is our own recorded figure. A row can only test a published figure against the plan we ourselves hold, so in every confirmed row above the vendor's figure today and our figure are the same number. A row whose vendor baseline is not the plan we record would be measuring a publisher against the wrong number; where such a row ever belongs in the study it has to carry its reason on the row, printed with the evidence, and none of the rows above needed one.
  • Every quotation is a run of the page's own text, not a reconstruction. Before publication each surviving row was read once more against the live article and its quotation matched against the single reading described above. A row is published only where the sentence is found in that reading, and the count beside it is the count that reading produces. Several of these sentences are not a run of the page's raw bytes at all — markup falls between their words — which is exactly why the study counts on the text a reader sees rather than on the bytes. A quotation that reading could not find was never rewritten to fit: 3 rows were moved to the control on the quotation, whatever their arithmetic said — 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, with its length beside it; nothing on this page is silently cut.
  • Some vendor pages will not serve their own price. For 6 of the 12 rows the vendor's recorded pricing page did not hand us the figure — it shipped its price nodes empty, suppressed pricing for our vantage point, or, in one case, refused every route we tried. Each of those rows says so in the evidence above and links the route the figure was actually read at, so a reader is never sent to an address that cannot answer the question.
  • Same-basis or nothing. A figure counts as out of date only where the vendor's own page states a different figure on the same billing basis. Every row records that basis, and the rows where the basis explained the difference are published in the control above.

Download: JSON · CSV · Markdown (CC-BY, see open data) · all research · our accuracy standard. Re-checked 2026-09-06; re-run quarterly.

Cite or embed this finding (copy-paste):