Legal & claims changelog
Started 26 August 2026
A dated, reverse-chronological record of changes to anything on cancel.klairlabs.com
that states a price, a feature, a limit, or a legal/regulatory fact — what changed and why. This
exists so a claim's history is checkable, not just its current wording. See also
the regulatory reference page and
apps/canceldesk/content/facts.json in the source repository for the underlying facts.
26 August 2026
Corrected the FTC click-to-cancel claim sitewide
The homepage FAQ (visible and JSON-LD) and the Terms of Service warning box previously implied
the FTC's click-to-cancel rule is currently in force and being "actively enforced" — it isn't.
The rule was vacated in full by the Eighth Circuit on 8 July 2025 (Custom Communications, Inc.
v. FTC) on procedural grounds, days before its 14 July 2025 effective date. Rewrote both
places to state the actual status: not in force, a replacement (ANPRM) submitted to OIRA on 30
January 2026 with public comments due around 13 April 2026, and ROSCA / FTC Act Section 5 /
~30 state auto-renewal laws never affected and still fully enforceable.
Why: stating an outdated legal status as current is a compliance-facing customer's
actual downside risk, not just an inaccuracy — and the corrected position is a stronger sales
argument anyway (the underlying obligation to make cancelling as easy as subscribing never went
away, rule or no rule).
index.html, terms.html, click-to-cancel-2026.html (new)
26 August 2026
Published a dedicated regulatory reference page
Added click-to-cancel-2026.html: what happened (the
vacatur), what's in force today, what it means in practice for a cancel flow, a dated timeline
table, FAQ, and linked primary/reputable sources (WilmerHale, Gibson Dunn, two FTC press
releases). Linked from the homepage FAQ and every legal-page footer.
click-to-cancel-2026.html (new), index.html, privacy.html, terms.html (footer links)
26 August 2026
Standardized the operating entity's name
Replaced "Klairtech" with "Klair Technology Solutions Private Limited (Klair Labs)" on first
mention in privacy.html and terms.html, "Klair Labs" thereafter. Contact email
(hello@klairtech.com) is unchanged — that address is real and has SPF/DMARC configured; only the
prose name of the company changed. Added clearly marked placeholder comments for the registered
address and phone number, which are not yet published anywhere and were not fabricated to fill
the gap.
privacy.html, terms.html
26 August 2026
Removed two unsourced statistics from the homepage stat strip
"Voluntary churn runs ~3× involuntary churn" and "Usage drops ~41% in the 90 days before a
cancel" carried no citation, sitting directly next to the ROI calculator's carefully-sourced
comparison figure. Checked both: the best real dataset found for the churn-type ratio (Recurly's
July 2026 subscription-network benchmarks) shows roughly 1.6–2.1× depending on industry, not 3×;
the 41% figure traced only to SEO blog posts that themselves cite no study or methodology.
Neither could be attached to a genuine, verifiable, linkable source without either misattributing
a number to a source that doesn't actually support it, or laundering an unsourced claim through a
citation. Deleted both rather than guess.
index.html
26 August 2026
Corrected a competitor pricing claim
The stat strip and pricing section both named two competitors and stated both "start at
$250/month" with no source link. Verified one of the two figures directly against the competitor's
own current pricing page (still accurate); the other competitor had since been acquired and no
longer exists as an independently priced product under that name — its acquirer's current
cancel-flow offering shows a free starter tier and custom Enterprise pricing, not a flat monthly
figure. Removed the stale claim rather than restate it. (This page no longer names either
competitor at all — see the entry below.)
index.html
26 August 2026
Baked default rows into the ROI calculator table
The ROI calculator's table previously rendered with headers and zero rows until JavaScript ran,
meaning a crawler or a JS-disabled visitor saw an empty table. Added static default rows computed
from the calculator's own default inputs ($50 average subscription price, 20 cancels/month),
matching exactly what the script renders on load.
index.html
26 August 2026
Created facts.json as the single source of truth
Added apps/canceldesk/content/facts.json: plan names, prices, exact feature lists (cross-checked
against lambda/canceldesk/index.mjs and app.html's own gating logic), the free-tier session limit
and its never-blocks behavior, entity name, contact email, and the regulatory facts above. Public
pages must match this file, not the reverse — the lambda's PLANS object and gating logic remain
the ultimate source for prices and limits.
content/facts.json (new)
26 August 2026 (later the same day)
Removed the remaining named-competitor references
The stat strip, the pricing section's competitor note, and the ROI calculator's 54% "reported
rate" row all named a specific competitor by name and linked to their site. Replaced the stat
strip and competitor note with unnamed, qualitative positioning (self-serve and monthly vs. an
annual enterprise contract with a sales call), and replaced the ROI table's borrowed 54% figure
with a third illustrative row (40%) alongside the existing 10%/25% ones, matching the "illustrative,
not measured" framing already used for those two. No page on this site names a competitor.
index.html
26 August 2026 (later still)
Structural pricing-page patterns, an honest export claim, an audit log, and a corrected deletion claim
- Added a full feature-by-plan comparison table under the pricing cards (every limit, every
plan, checkmarks and exact numbers) — a common, effective SaaS pricing-page pattern, built in
this product's own visual identity rather than copied from any one competitor's page.
- CSV export was described as a Pro-only feature ("Full history + CSV export" only on the Pro
card), but the export button in the app has never actually been gated by plan — every tier can
export, Pro and Premium just have more history to export. Added "30-day history + CSV export" to
the Free card so the copy matches what's actually shipped.
- Added a real audit log: a new Audit tab in the dashboard, backed by a new
cd-audit-list endpoint, mirroring DSAR Desk's existing audit log exactly (Free sees
the last 30 days, Pro/Premium see full history). Verified live end-to-end with a disposable test
account before shipping.
- The privacy policy said Cancel Desk has no self-serve way to delete a workspace — a "Delete
workspace" button has existed in Settings for a while; the policy text was never updated when it
shipped. Corrected it to describe what deleting a workspace actually does and removes.
index.html, app.html, privacy.html, lambda/canceldesk/index.mjs
26 August 2026 (later still)
Added a data retention setting; the automated purge job is built but not yet switched on
Added a retention window control in Settings (6, 12 or 24 months, or indefinitely — mirroring
DSAR Desk's identical control), and a scheduled job that purges closed sessions (saved or
cancelled) past that window once enabled; an open, in-progress session is never purged
automatically regardless of age. Verified the setting itself and its Pro gate live with a
disposable test account. The scheduled job is deployed but its EventBridge trigger is currently
disabled pending an IAM permission this Lambda's role doesn't have yet — the privacy policy
describes this honestly rather than claiming automatic purging already runs.
app.html, privacy.html, lambda/canceldesk/index.mjs