Skip to main content
Product changelog

ChurnWin product updates

Selected shipped changes across failed-payment recovery, churn evidence, and the read-only agent workflow. Dates are source-backed ship dates, not a promise of release cadence or a future roadmap.

Clearer dead ends and a keyboard path past the navigation

An unknown guide or comparison address now returns a proper ChurnWin page instead of a bare framework error, and every public page offers a keyboard user a way to skip the repeated header navigation.

  • The skip link is the first Tab stop and moves focus, not just the viewport.
  • The login and registration screens gained the main landmark every other public page already had.

Revenue and feedback views, with MRR movement actually measured

The dashboard now separates revenue and feedback, reports real MRR movement instead of a hardcoded zero, and ranks every connected Stripe account by how much revenue it contributes.

  • Expansion, contraction, new, and churned MRR are computed from the connected account rather than assumed.
  • Teams running several products can see which one is leaking revenue without switching accounts.

Unsubscribing now takes a deliberate human click

Following an unsubscribe link opens a confirmation page instead of opting someone out immediately, so a corporate email scanner that follows links in a message can no longer unsubscribe a person who never asked to be.

  • Only the confirmation step changes the subscription; visiting the link changes nothing.
  • The link points at the host that serves it, so it resolves rather than 404s.

Deactivating an account now stops its agent keys too

An API key minted before an account was deactivated kept reading that account's customer list, verbatim feedback, and revenue metrics through both the REST and MCP surfaces. It no longer does.

  • Deactivation revokes the account's keys explicitly, and authentication rejects keys owned by an inactive account.
  • Scheduled Stripe sync and risk scoring skip inactive accounts instead of continuing to pull their data.
  • Nothing is destroyed, so reactivating an account restores it.

Private and tokenised pages kept out of search results

The dashboard, admin console, and the per-customer feedback and unsubscribe pages are now consistently marked as not for indexing, on both the app and the API host.

  • The admin console gained the same server-side auth guard every other private route already had.
  • A tokenised link is the only credential on those pages, so they should never have been indexable.

Rate limiting now sees the real visitor

Behind the reverse proxy every visitor shared a single rate-limit bucket, so one noisy client could exhaust the login and signup limits for everybody. Limits are now keyed on the originating client.

  • The originating address is resolved spoof-resistantly, and header claims are ignored unless the request genuinely arrived through our own proxy.
  • Configured policy and enforced policy can no longer drift apart.

Slow third parties no longer stall the API

Stripe, AWS, and website-crawl calls were running on the event loop, so one slow upstream could freeze unrelated requests. They now run off it, with explicit timeouts and bounded retries.

  • A slow or failing Stripe response no longer delays other customers' requests.
  • Transient upstream failures retry with backoff instead of surfacing as an error.

A sitewide Content Security Policy

Every ChurnWin page is now served under an enforced Content Security Policy that declares exactly which scripts, styles, and connections are allowed.

  • Frames are denied outright and form submissions are restricted to ChurnWin.
  • The policy is validated against the real page inventory rather than assumed.

A free retention cohort worksheet

The cohort analysis guide now ships a downloadable CSV worksheet that compares cohorts of the same age, which is the step most cohort charts quietly get wrong.

  • No signup required.
  • The guide also answers what to look for when choosing cohort analysis tooling.

An AI churn action plan tool and copy-paste agent recipes

A public tool turns cancellation themes into a prioritized action plan, and the developer docs now carry runnable integration examples for connecting an agent to ChurnWin.

  • The action plan tool is illustrative and makes no claim about a visitor's own Stripe account.
  • The agent examples stay read-only: no subscription, payment, or outreach writes.

Try a sample failed-payment recovery audit

The free audit now reveals a clearly labeled example before registration, so teams can understand the report shape without connecting Stripe or creating an account.

  • Keeps the sample distinct from a real account audit.
  • Carries the recovery context into the account-creation path when a team decides to continue.

Recovery playbooks for humans and agents

Separate walkthroughs now show how a SaaS operator and a read-only AI agent can inspect failed-payment evidence and turn it into a human-reviewed recovery plan.

  • The human path starts with the dashboard and keeps customer actions under team control.
  • The agent path uses the scoped API or MCP surface without subscription, payment, or outreach writes.

A clearer, scoped Agent API contract

The public developer reference now documents the bounded read-only churn, failed-payment, and action-plan surfaces available to an authorized agent.

  • Examples use explicit response shapes instead of implying write capabilities.
  • Security guidance keeps billing changes, customer outreach, and product changes behind human approval.

Free failed-payment recovery audit launched

ChurnWin added a public audit path for SaaS teams to estimate where failed-payment recovery work may be worth prioritizing before connecting an account.

  • The public flow explains what evidence a real audit uses.
  • No claim is made that a sample result reflects a visitor's Stripe account.

Start with the recovery wedge

Estimate failed-payment recovery value, then use the audit to see how ChurnWin organizes evidence before you connect a Stripe account.

Open the calculator