---
title: Hosted Cancel Flow
description: Send customers to a Churnkey-hosted cancellation page instead of embedding the JavaScript SDK in your application.
---

## What is the Hosted Cancel Flow?

The Hosted Cancel Flow is a cancellation page that Churnkey hosts for you. Instead of loading our JavaScript library and opening a modal inside your application, you redirect the customer to a Churnkey URL — for example `billing.churnkey.co/cancel/...`, a Churnkey subdomain like `acme.churnkey.co`, or your own custom domain — and we handle the entire cancel experience. When the customer finishes (or backs out), we send them back to a return URL you control.

You configure everything from the dashboard at **app.churnkey.co** under **Cancel Flow → Hosted**. There is nothing to deploy, no script tag to maintain, and no modal to wire up.

::alert{type="tip"}
**The fastest way to go live with Churnkey.** The moment you sign up and publish a Cancel Flow, your hosted page is already live at `billing.churnkey.co/cancel/<your-app-id>`. Share that link with a customer — in an email, a support reply, a help article — and you are running Churnkey end-to-end. No engineering work required.
::

## A no-code path to live

Most retention tools assume you have engineering bandwidth to integrate them. The Hosted Cancel Flow is built for the opposite situation — when you want Churnkey running today, not next sprint.

- **Zero code to ship.** Your hosted URL exists the moment your account does. Drop it anywhere a link can go.
- **No frontend integration.** Nothing to embed, no JavaScript snippet to maintain, no version to keep up with.
- **No backend integration required.** Customers verify themselves via email — your billing provider is the only thing Churnkey needs to be connected to.
- **Branding from the dashboard.** Theme, logo, and font live in your settings, not in your codebase.

When you are ready to graduate to a more integrated experience — for example, pre-authenticating logged-in customers — you can layer in [Cancel Links](/cancel-flows/hosted-cancel-flow/cancel-links) without changing anything about the page itself.

## Hosted or embedded — which should you use?

Both options run the same cancel flow logic, the same offers, and the same analytics. They differ only in **where the experience lives** and **how the customer authenticates**.

The **Hosted Cancel Flow** is the right choice when you want a zero-code or minimal-code integration, when the cancellation surface cannot easily run JavaScript (such as an email link, a billing receipt, or a third-party account-management portal you do not control), or when you would rather have Churnkey handle authentication for you.

The **Embedded Cancel Flow** — the original `window.churnkey.init('show')` integration documented in the [Quick Start Guide](/cancel-flows/quick-start-guide) — is the right choice when you want the cancel flow to open as a modal inside your own application, with full control over when it launches and what surrounds it.

A simple way to decide: if your customers cancel from inside a logged-in account page you own, **embedded** usually feels more native. If they cancel from anywhere else — an email, a help article, a support reply, a portal — **hosted** is almost always easier.

## How customers reach the hosted page

There are two ways a customer ends up on your hosted cancel page, and you can use either one or both at the same time.

**Cancel Links** are the recommended path for logged-in customers. Your backend calls the Churnkey API to mint a signed URL tied to one specific customer (single-use by default, with a reusable option available), and you redirect that customer straight to it. The link is pre-authenticated, so the customer lands directly inside their cancel flow with zero extra steps. Read more in [Cancel Links](/cancel-flows/hosted-cancel-flow/cancel-links).

**Email verification** is the path for everyone else. Anyone who knows your hosted URL can visit it, type in the email address on their subscription, receive a verification code, and continue. No backend integration is required, which makes this the fastest way to launch the hosted flow and the right fit for email footers, public help pages, or any link you cannot personalize per customer. Read more in [Email Verification](/cancel-flows/hosted-cancel-flow/email-verification).

::alert{type="tip"}
You do not have to choose. Most teams generate Cancel Links for customers signed in to their app and leave email verification on as a fallback for everyone else.
::

## What's in this section

**Setup** — Turn the hosted flow on, set your return URL, and configure link expirations and feature toggles. Start at [Setup](/cancel-flows/hosted-cancel-flow/setup).

**Domains** — Decide whether customers land on the default `billing.churnkey.co` URL, on a Churnkey subdomain like `acme.churnkey.co`, or on your own custom domain. See [Domains](/cancel-flows/hosted-cancel-flow/domains).

**Appearance** — Choose a page template, theme, logo, and font so the hosted page looks like part of your brand. See [Appearance](/cancel-flows/hosted-cancel-flow/appearance).

**Cancel Links** — Generate signed URLs from your backend for logged-in customers so they skip verification entirely. See [Cancel Links](/cancel-flows/hosted-cancel-flow/cancel-links).

**Email Verification** — Let any visitor verify by email and reach their cancel flow without any backend work on your side. See [Email Verification](/cancel-flows/hosted-cancel-flow/email-verification).

**Customer Data Endpoint** — Expose an endpoint that returns extra customer attributes so offers, pause options, and messaging can be personalized in real time. See [Customer Data Endpoint](/cancel-flows/hosted-cancel-flow/customer-data-endpoint).

::alert{type="info"}
**Before you start, you will need:**

- An active Churnkey account
- A connected billing provider (Stripe, Chargebee, Braintree, Paddle, or Maxio)
- At least one published Cancel Flow

If any of these are missing, set them up first — the hosted page renders the same cancel flows you have already published, so it has nothing to display without them.
::

When you are ready, head to [Setup](/cancel-flows/hosted-cancel-flow/setup) to enable the hosted flow on your account.
