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

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