> ## Documentation Index
> Fetch the complete documentation index at: https://funnelfox.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Cancellation funnels

> Retain customers who want to cancel with swap, gift, pause, and cancel actions in cancellation funnels.

Cancellation funnels help retain customers who want to cancel their
subscriptions. Instead of losing them completely, offer alternatives
that address their concerns.

![](https://mintcdn.com/funnelfox/KAngMY6MfAm-9pc7/assets/cancellation-funnel.gif?s=98b30fe83071e9b40c162e5501f58294)

Cancellation funnels are [created](https://funnelfox.com/docs/dashboard/funnels.md#create-funnel) the same way as acquisition funnels, but they include additional cancellation actions:

* **Swap subscription**: Offer a discounted alternative instead of complete cancellation. Learn about [subscription swap flow](#subscription-swap).
* **Gift free period**: Select a period to extend their current billing cycle for free. This gives you time to demonstrate value before the next charge.
* **Pause subscription**: Temporarily suspend access and stop billing while maintaining the customer relationship.
* **Cancel subscription**: If retention fails, process the cancellation gracefully. Cancels all of the customer's subscriptions with the same payment provider.
* **Resume subscription**: Paused subscriptions can be resumed at any time.

Learn more about [actions](https://funnelfox.com/docs/editor/actions.md).

![](https://mintcdn.com/funnelfox/ktl4-o28DmK9Pu78/assets/cancellation-actions.png?fit=max\&auto=format\&n=ktl4-o28DmK9Pu78\&q=85\&s=84f0240fb404327e54d866da239f2697)

## How cancellation funnels work

Cancellation funnels work with Stripe, Paddle, Solidgate, and FunnelFox Billing subscriptions only. You can configure how the payment provider processes subscription swaps or cancellations directly in the Editor when editing actions.

When a customer enters the funnel with their [profile ID](#customer-access-link), FunnelFox loads their subscriptions across all [organization projects](https://funnelfox.com/docs/getting-started/concepts.md#core-concepts) and uses the payment provider from their original purchase.

When the customer takes an action, the payment provider applies your configuration and syncs with the PSP (Payment Service Provider). Swap, pause, and gift free period affect the most recently purchased active or trialing subscription; cancel affects all of them. For example, pausing a Stripe subscription immediately appears in:

* In [subscription status](https://funnelfox.com/docs/dashboard/subscriptions#param-status) on the FunnelFox [Subscriptions page](https://app.funnelfox.com/subscriptions).
* In [subscription status](https://docs.stripe.com/billing/subscriptions/overview#subscription-statuses) on Stripe Dashboard.

> [!WARNING]
>
> Cancellation funnels aren’t personalized by product and act across all organization projects.
>
> * A funnel offering 1 free week gives the same gift period to everyone (e.g., 1-year and 1-week plans).
> * Swap, pause, and gift free period modify only the last purchased active or trialing subscription.
> * Cancel subscription cancels all of the customer’s subscriptions with that payment provider.

### Subscription swap

If you’d like to offer customers a discounted alternative instead of a full cancellation, you can configure a subscription swap.

Because payment providers handle this differently, the resulting flow depends on which provider you use:

**Stripe**

You can offer a subscription swap even if the new subscription belongs to a [different Stripe account](https://funnelfox.com/docs/integrations/payments/stripe.md#multiple-stripe-accounts) integrated with FunnelFox.

When customer activates a discount (swaps subscription):

**1. Seamless transition**

Their current subscription keeps running until the end of the current billing period (or trial, if they’re trialing).

**2. At period end, the current subscription ends**

Stripe cancels the current subscription automatically at that time.

**3. The new subscription starts right after**

As soon as the old one ends, Stripe activates the new subscription (or starts the new plan’s trial, if it has one).

**4. Billing happens for the new plan when it starts**

The customer is charged for the new plan when it becomes active.
If the new plan includes a paid trial, Stripe charges the trial payment at the moment of the swap (even though the plan/trial starts at period end).

For example:

* Current paid period: September 1–30, `$20/month`.
* Subscription swap: September 23.
* Monthly price of new plan: `$10`.

Result:

* Sep 23 - Sep 30: the customer stays on the `$20/month` subscription (no change, no interruption).
* On Oct 1:
  * The `$20/month` subscription is canceled.
  * The `$10/month` subscription becomes active.
  * The customer is billed `$10`.

If the new plan includes a paid trial: the customer would pay the trial amount on Sep 23, and the new plan/trial would still begin on Oct 1 (right after the current period ends).

**Paddle**

When a customer activates a discount (swaps subscription):

**1. Seamless transition**

Their current subscription keeps running until the end of the current billing period (or trial, if they’re trialing).

**2. At period end, the current subscription ends**

Paddle cancels the current subscription automatically at that time.

**3. The new subscription starts right after**

As soon as the old one ends, Paddle activates the new subscription (or starts the new plan’s trial, if it has one).

For example:

* Current paid period: September 1–30.
* Subscription swap: September 10.
* Monthly price of new plan: `$10`.

Result:

* Sep 10 - Sep 30: the customer stays on the current subscription (no change, no interruption).
* On Oct 1:
  * The current subscription is canceled.
  * The new subscription begins billing from that date.

If the customer is trialing: the current trial continues until it ends, then the current subscription is canceled and the new subscription begins billing from that date.

**Solidgate**

Subscription swap isn't supported while a subscription is paused. Consider resuming it first.

When a customer activates a discount (swaps subscription), Solidgate
switches the product on their existing subscription. It doesn't
cancel the subscription or create a new one.

**1. Seamless transition**

The most recent active or trialing subscription keeps its
current plan until the end of the current paid period or
trial.

**2. At period end, the new plan applies**

The same subscription continues on the new product.

**3. Billing happens for the new plan when it starts**

The customer is charged the new product's price on the next
billing date.

> [!NOTE]
>
> The new product's trial period, if any, isn't applied.
> We recommend swapping to products without trial
> periods.

For example:

* Current paid period: September 1-30, 2025.
* Subscription swap: September 10, 2025.

Result:

* Sep 10 - Sep 30: the customer stays on the current plan (no
  change, no interruption).
* On Oct 1: the same subscription switches to the new product, and
  the customer is charged the new price.

If the customer is trialing: the trial continues until it ends, with
no early charge. The subscription stays **Trialing** in FunnelFox,
then renews on the new product.

**FunnelFox Billing**

When a user activates a discount (swaps subscription):

**1. Current subscription cancellation**

The most recent active subscription is canceled immediately.

**2. New subscription activation**

A new subscription is activated the same moment.

**3. Free trial for remaining paid time**

The user receives a free trial equal to the remaining paid time of the canceled subscription (if any).

For example:

* Current paid period: September 1-30, 2025.
* Subscription swap: September 10, 2025.
* Result: the original subscription cancels on September 10. A new subscription starts right away with a free trial through September 30, 2025. The first payment on the new plan occurs on October 1, 2025.

### Cancel subscription

Cancel subscription cancels all of the customer’s subscriptions with the payment provider from their original purchase, not just the most recent one.

Cancellation behavior is consistent for Stripe and Paddle, but differs slightly for Solidgate cancellation funnels.

**Stripe / Paddle / FunnelFox Billing**

Any canceled subscription runs until the end of the current paid period.

**Solidgate**

Solidgate behaves differently when canceling active or paused subscriptions:

* **Active**: Subscription runs until the end of the current paid period.

* **Paused**: Subscription is immediately canceled. If you want cancellation to happen after the paid period expires, resume the subscription first, then cancel.

## Subscription condition

Use the **Subscription** visibility condition to show content based on
whether FunnelFox finds the customer's subscription.

![](https://mintcdn.com/funnelfox/UjjEaNaAhrOACe31/assets/cancellation-sub-status.png?fit=max\&auto=format\&n=UjjEaNaAhrOACe31\&q=85\&s=b5d4e48a4da8d558474f83e7135d32b9)

| Value | What to show |
| - | - |
| **Found** | Retention offers: swap, gift free period, or pause |
| **Not found** | A fallback message, such as a link to support |

FunnelFox returns **Not found** when:

* The customer has no subscription.
* The `vendor_subscription_id` in the [access link](#customer-access-link)
  matches no subscription.
* FunnelFox can't load the subscription, for example because of a
  network error.

FunnelFox checks one subscription per customer:

* If the access link includes `vendor_subscription_id`, FunnelFox checks
  that subscription.
* Otherwise, FunnelFox picks one in this order: renewing active or
  trialing, active or trialing with a scheduled cancellation, paused,
  overdue, then cancelled or expired.

> [!NOTE]
>
> FunnelFox checks the subscription once per funnel visit. If the customer
> pauses or cancels inside the funnel, conditions and variables on later
> screens still show the original data.

## Show subscription details

Use subscription variables to show the customer's plan on any screen.
For example:

```
Your {{source_subscription.product_name}} plan renews on
{{source_subscription.period_end}}.
```

See the full list in
[Subscription variables](https://funnelfox.com/docs/editor/variables.md#subscription-variables).

## Customer access link

To access a cancellation funnel, the customer must be identified. FunnelFox directs customers into a specific cancellation flow when you pass their profile ID (fpid) as a query parameter:

```
https://your-project.fnlfx.com/cancel?fpid=PROFILE_ID
```

You can find a customer's profile ID in the following ways:

* **[Customers page](https://app.funnelfox.com/customers)** - Listed in the **ID** column of the customers list
* **Webhook events** - Sent as `profile.id`
* **Subscription integrations** - User attributes, such as [Profile ID in Adapty](https://adapty.io/docs/profiles-crm#user-attributes)
* **FunnelFox API** - Use the [Get profile](https://funnelfox.com/docs/api-reference/get-profile.md) endpoint

> [!TIP]
>
> Use preview mode to test cancellation funnels without
> affecting real subscriptions. Preview mode won't modify actual customer data.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.