---
title: "Hosted Cancel Flows — Go Live Without Code"
description: "Hosted, no-code delivery of Churnkey Cancel Flows. Connect a billing provider, share a link, and run the full Cancel Flow engine — segmentation, offers, A/B tests, Feedback AI — without embedding a script."
canonical: "https://churnkey.co/feature/hosted-cancel-flows"
category: "feature"
related:
  - /feature/cancel-flows.html.md
  - /feature/adaptive-offers.html.md
  - /feature/customer-segmentation.html.md
  - /feature/subscription-pauses.html.md
  - /feature/customer-insights-ai.html.md
  - /feature/session-recordings.html.md
  - /feature/account-agent.html.md
  - /sdk-overview.html.md
last_updated: "2026-05-27"
---

# Hosted Cancel Flows

## Overview

Hosted Cancel Flows is the no-code, no-embed delivery mode for Churnkey [Cancel Flows](/feature/cancel-flows.html.md). The full Cancel Flow runs on a Churnkey-hosted page, reached by a link you generate, share, or redirect to from your own cancel button. No HMAC. No script embedding. No engineering ticket.

It's the same engine as the embedded flow — same segmentation, same offers, same A/B testing, same analytics, same branding — delivered as a URL instead of an SDK call. Time-to-live drops from days to under an hour.

Hosted Cancel Flows is built for the companies the embedded flow couldn't easily serve:

- **Platforms that block custom scripts** — third-party sites, e-commerce builders, payment orchestrators where you can't ship JavaScript into your app.
- **Mobile-app teams** — skip the webview integration. Send a link, open it in the browser, get the same flow.
- **Support teams handling cancellations** — generate a one-off cancel link from the dashboard and send it by email or SMS.
- **Companies that need to go live before engineering can prioritize the embed.**

## How Hosted Cancel Flows Work

Hosted Cancel Flows live at `billing.churnkey.co/cancel/{token}`. A subscriber reaches the page through one of three authentication methods, then runs the full Cancel Flow as if it were embedded in your product.

### Three ways to deliver a Hosted Cancel Flow

1. **API sessions (primary path)** — Your backend creates a session for an authenticated customer and redirects them to the returned URL. Mirrors the Stripe Customer Portal pattern: one backend call, one redirect, no frontend SDK.

   ```
   POST /v1/cancel-sessions
   x-ck-api-key: sk_live_xxx
   { customer_id: "cus_123", return_url: "https://merchant.com/settings" }
   → { url: "billing.churnkey.co/cancel/cs_f8a3b2c1d9e4", expires_at: "..." }
   ```

2. **Dashboard-generated links** — Support agents click "Generate Cancel Link" on a customer record in the Churnkey dashboard, configure expiry (1 hour to 30 days) and single-use vs. reusable, and copy a URL to send by email or SMS. Audit-logged and revocable.

3. **Email verification (no-code fallback)** — For merchants who can't make backend API calls. Subscribers enter their email, receive a 6-digit verification code, and are dropped into the flow once their customer record is resolved across billing providers.

### Subscriber experience

All three methods converge on the same page. Once the token is validated:

- The customer record is resolved server-side across the configured billing provider (Stripe, Chargebee, Braintree, Paddle, Maxio, or custom).
- The Cancel Flow engine loads — same blueprints, segments, A/B tests, [Adaptive Offers](/feature/adaptive-offers.html.md), [Subscription Pauses](/feature/subscription-pauses.html.md), exit surveys, [Session Recordings](/feature/session-recordings.html.md), and [Feedback AI](/feature/customer-insights-ai.html.md) analysis.
- The subscriber sees the flow under your branding (logo, colors, copy).
- When they finish, they're redirected back to your `return_url` with a `?churnkey_status=retained|cancelled` query parameter so your app can react.

### URL structure

- `billing.churnkey.co/cancel/{token}` — Cancel flow entry (all methods).
- `billing.churnkey.co/init/{pubkey}` — Email verification entry (no-code fallback).
- Token prefixes: `cs_` (API session), `cl_` (dashboard link). Path-based, not query strings.

## Key Features

### Same Cancel Flow engine

Hosted is a delivery mode, not a separate product. Everything that runs in the embedded [Cancel Flow](/feature/cancel-flows.html.md) runs here:

- [Customer Segmentation](/feature/customer-segmentation.html.md) by subscription age, billing interval, plan type, cancellation reason, and customer health.
- [Adaptive Offers](/feature/adaptive-offers.html.md) — AI-driven discount and duration optimization.
- [Subscription Pauses](/feature/subscription-pauses.html.md) and Pause Wall.
- Trial extensions, plan changes, seat handoffs, custom redirects.
- A/B testing across flow variants with statistical significance tracking.
- [Session Recordings](/feature/session-recordings.html.md) — every hosted session is recorded end-to-end.
- [Feedback AI](/feature/customer-insights-ai.html.md) analyzes exit survey responses for themes, sentiment, and priority ranking.
- Anti-gamification cooldown periods on offer acceptance.
- Automatic AI Translations into the customer's language.

### Branded experience

The hosted page uses your existing Cancel Flow design settings — logo, brand colors, copy. Customers see a fully branded retention experience, not a generic Churnkey-branded page.

### Multi-provider support

Works with every billing provider Churnkey supports: Stripe, Chargebee, Braintree, Paddle, Maxio, and custom integrations. The token resolves the customer record server-side regardless of provider.

### Multiple install paths in one product

A single Cancel Flow can be reached via the embedded SDK, a hosted link, or both — without duplicate configuration. Flows, offers, segments, A/B tests, and branding are shared. Analytics merge across delivery methods with a filter to compare performance side by side.

### Security model

- Opaque tokens (nanoid, ~126 bits of entropy). No PII in URLs.
- Short-lived: API session tokens expire in 1 hour by default; dashboard links can be set from 1 hour to 30 days.
- Single-use by default for API sessions; configurable per dashboard link.
- Server-side customer resolution — billing customer IDs are never exposed in URLs.
- Rate limiting on token validation and email verification.
- Security headers: `Referrer-Policy: no-referrer`, `X-Robots-Tag: noindex`, `Cache-Control: no-store`, `X-Frame-Options: DENY`.
- Dashboard links are revocable with audit trail.
- SOC 2-certified infrastructure shared with the rest of Churnkey.

### Support-team workflows

The dashboard's "Generate Cancel Link" action on a customer record lets support agents:

- Generate a cancel link with custom expiry and single-use vs. reusable settings.
- Preview the cancel flow as the customer would see it.
- View link history (active, used, expired, revoked) with a Revoke action.
- Send the link by email or SMS to customers requesting cancellation.

This injects Churnkey into support workflows without code changes, and gives agents a structured save-attempt path instead of cancelling directly.

### Mobile-app delivery

Hosted Cancel Flows unlock mobile apps without native SDK work or webview integration. Generate a link from your app's backend, open it in the customer's browser (via deep link, in-app browser, or email), and the customer runs the full flow. Returns to your app on completion via the `return_url`.

## Choosing between Hosted and Embedded

Both delivery modes are first-class. Most companies choose one based on their constraints; some use both.

| Use Embedded if... | Use Hosted if... |
|---|---|
| You can drop a script into your cancel page | Your platform blocks custom scripts |
| Your engineering team can implement HMAC | You want to go live before engineering can prioritize |
| You want the flow to feel like a modal inside your app | You're delivering cancellation via mobile, email, or SMS |
| You need server-side HMAC for security parity | The opaque-token model meets your security bar |
| You want zero redirect roundtrips | A redirect to a branded subdomain is acceptable |

Both modes share the same Cancel Flow configuration. You can deploy Embedded in your web app and use Hosted links for support workflows and mobile flows simultaneously.

## Connected Products

Hosted Cancel Flows is part of the Churnkey retention platform and integrates with:

- **[Cancel Flows (embedded)](/feature/cancel-flows.html.md)** — Same engine, different delivery mode. Flows, offers, and configuration are shared.
- **[Adaptive Offers](/feature/adaptive-offers.html.md)** — AI-driven offer optimization works identically on hosted and embedded.
- **[Customer Segmentation](/feature/customer-segmentation.html.md)** — Segment-based flow branching works identically on hosted and embedded.
- **[Subscription Pauses](/feature/subscription-pauses.html.md)** — Pause Wall and pause offers work identically on hosted.
- **[Feedback AI](/feature/customer-insights-ai.html.md)** — Exit survey analysis applies to hosted sessions.
- **[Session Recordings](/feature/session-recordings.html.md)** — Every hosted session is recorded.
- **[Account Agent](/feature/account-agent.html.md)** — Surfaces optimization opportunities across both delivery modes.
- **[Open Source SDK](/sdk-overview.html.md)** — `@churnkey/node` generates the server-side session tokens that back the API sessions install path.

## Set up

1. Enable Hosted Cancel Flows in your Churnkey dashboard under Cancellation → Installation → Hosted.
2. Copy your API key.
3. Add one backend endpoint that calls `POST /v1/cancel-sessions` and returns the URL.
4. Redirect your cancel button to that URL.
5. Test from the dashboard's "Test Hosted Flow" launcher before going live.

For email verification (no-code path), enable the Allow Email Verification Fallback toggle and copy your publishable key. No backend required.

## Related

- [Cancel Flows (embedded)](/feature/cancel-flows.html.md)
- [Adaptive Offers](/feature/adaptive-offers.html.md)
- [Customer Segmentation](/feature/customer-segmentation.html.md)
- [Subscription Pauses](/feature/subscription-pauses.html.md)
- [Feedback AI](/feature/customer-insights-ai.html.md)
- [Session Recordings](/feature/session-recordings.html.md)
- [Account Agent](/feature/account-agent.html.md)
- [Open Source SDK](/sdk-overview.html.md)
