Skip to main content
In Firmhouse, you can enable the Cancellation and Churn Prevention flow. This feature allows you to better collect feedback and prevent immediate churn by offering a winback during the cancellation steps in the subscription my account portal. The new Cancellation Feedback and Prevention flow offers a few steps in the customer journey when cancelling:
  1. Customer clicks cancel from their dashboard
  2. Chooses from one of the predefined cancellation reasons (if available)
  3. Gets offered a winback
  4. Takes the winback offer or proceeds to cancel and gives feedback

Enable the new Cancellation flow

Steps

  1. Go to your project in Firmhouse and click New Features from the sidebar.
  2. On this page, enable Cancellation Reasons and Winback Offers.
Enable Cancellation Reasons and Winback Offers in New Features In your sidebar under Settings, a new menu item Churn prevention now appears where you can set up cancellation reasons. The new flow is immediately effective for your customers in the subscription account portal. Since no reasons are added yet, your customer will not be able to pick from any yet, but the new flow will already ask for qualitative feedback when someone cancels.

Add a cancellation reason and winback offer

Steps

  1. In your Firmhouse project, from the sidebar go to Settings > Churn prevention.
  2. Click Add Reason.
  3. Fill out a Reporting title, which is the language-independent title of this reason to be used in reporting exports and dashboards.
  4. Fill out the Customer-facing cancellation reason, which is the text that people will see in the Cancellation flow.
  5. Under What customers see, choose an Alternative action: Continue to cancellation, offer to pause for 1–3 months, or offer to skip 1–3 orders.
  6. Enable or disable the reason with the Status checkbox.
  7. Click Save.
Add cancellation reason form For reusable offers with customer targeting, benefits such as complimentary products or plan swaps, and optional minimum terms, see Promotional offers.

Connect a promotional offer to a reason

When the Workflow Builder preview is enabled, What customers see lets you expand the promotional offers linked to a saved reason. Only offers with an explicit condition targeting this reason can appear during cancellation. Every other eligibility condition must still match the customer. If several offers qualify, the offer with the lowest priority number is checked first. Expand Linked offers and choose an offer to review its conditions. To create one, check Create an offer for this reason, then choose Save and create offer to open a draft with that reason preselected. After saving the offer, you return to the reason. The list shows each offer’s status and omits archived offers. An eligible promotional offer appears first. The configured pause or skip alternative is shown alongside it and remains available when no offer is available or the customer declines it. Continue to cancellation adds no pause or skip alternative; it does not disable promotional offers.

Record a reason when cancelling or pausing for a customer

When your team performs the action from a customer’s subscription page, the cancellation or pause form shows the active reasons configured for that flow. By default, selecting a reason is optional: select the reason the customer gave you, or leave it blank for an internal action where no customer reason should be recorded. To require reasons for team actions:
  1. Enable Cancellation Reasons and Winback Offers and Pause Reasons and Winback Offers in New Features.
  2. Add at least one active reason for each flow in Settings > Churn prevention.
  3. Go to Settings > Subscription model and enable Require a reason when team members cancel or pause subscriptions.
With this setting enabled, team members must select a configured reason before starting a cancellation. For pauses, they must select either a configured customer reason or Internal pause (no reason). The initial Select a pause reason placeholder cannot be submitted. Cancellation notes alone do not satisfy the cancellation requirement. Confirming a cancellation that is already in progress does not ask for another reason. Use Internal pause (no reason) for operational holds, such as a subscription switch. This option is available only to your team, including when no configured pause reasons are available. It saves a completed internal pause in subscription history and keeps the customer reason blank in Liquid and webhook data. It does not automatically suppress emails: an external email workflow can use the blank reason to exclude internal pauses. The setting is off by default and applies only to team actions from the subscription page. Customer portal flows, API calls, and automated actions keep their existing behavior. Only project managers and users with permission to update the project can change this setting. Both reason features must be enabled before turning it on. If either feature is later disabled, you can still turn the requirement off in Subscription model settings. An admin-selected reason is included in churn history, reporting, Liquid templates, and webhook payloads. Because the customer does not see the portal flow, Firmhouse records the action as completed without presenting or reporting a winback offer. Pause reasons are available in the admin pause form only while the Pause Reasons and Winback Offers preview is enabled.

Start a cancellation or pause with a known reason

When another system already knows why a customer wants to cancel or pause, add the active reason ID to the flow URL as the churn_reason_id query parameter:
For a pause, include both parameters:
Firmhouse records the supplied reason, skips the reason selection and winback steps, and shows the customer a confirmation step. After the customer confirms, Firmhouse performs the cancellation or pause and takes them to the completion step. The subscription’s normal eligibility rules still apply, including its status, cancellation strategy, commitment terms, and whether customer pausing is enabled. Opening the link does not cancel or pause the subscription by itself. This makes the link safe to preview or retry and ensures the customer deliberately confirms the change. The reason must be active, belong to the same Firmhouse project, and be configured for the requested flow. If the ID is invalid or does not meet these conditions, Firmhouse shows the normal reason selection instead. If the subscription is not eligible for the requested action, Firmhouse does not initiate the churn request and continues with the standard eligibility flow.

Complete a custom cancellation flow without another confirmation

If your Customer Portal v2 template already asks the customer to confirm, submit that confirmation directly to subscription.complete_churn_request_url. This skips the Firmhouse confirmation page while keeping the change behind an authenticated, CSRF-protected POST request.
For a custom pause flow, add <input type="hidden" name="flow" value="pause"> and use a reason configured for pauses. Only use this endpoint for a customer action that has already presented a clear confirmation. A GET request never completes the change. Firmhouse still verifies that the reason is active and belongs to the current project and flow, and rechecks the subscription’s cancellation or pause eligibility before applying it. An invalid reason returns the customer to the standard reason-selection flow.

Pause Reasons and Winback Offers

The same churn prevention flow is available when customers pause their subscription. Instead of pausing immediately, the flow asks customers why they are pausing, can respond with a winback offer, and collects feedback after the pause.

Enable

  1. Go to your project in Firmhouse and click New Features from the sidebar.
  2. On this page, enable Pause Reasons and Winback Offers.
Subscription pausing itself needs to be enabled in your customer portal settings for the pause button to appear.

Add a pause reason

  1. In your Firmhouse project, from the sidebar go to Settings > Churn prevention.
  2. Click Add reason and set Shown before to Customer pauses their subscription.
  3. Fill out the reason the same way as a cancellation reason. The Alternative action options are: Continue to pause, offer to pause for 1–3 months with an automatic resume date, and offer to skip 1–3 orders. Promotional offers are only shown during cancellation, so pause reasons do not show the promotional-offer section.
Pause reasons are only shown in the pause flow, and cancellation reasons only in the cancellation flow. The Shown before column on the Churn prevention page shows which flow each reason belongs to. When a customer proceeds with pausing, they can leave feedback just like with cancellations. On the Metrics > Churn Prevention page, use the Cancellations / Pauses toggle to view prevention rates, winback breakdowns, and customer feedback for each flow separately.

View Cancellation feedback and Winback results per customer

When a customer completes a Cancellation flow - either by taking a winback offer or by cancelling - their choices and feedback can be seen on the Customer detail page in the Firmhouse admin portal. Customer cancellation feedback on detail page

View Cancellation and Churn Prevention metrics

In your Firmhouse project, navigate to Metrics in the sidebar. Then click the Churn Prevention tab to view aggregated metrics about cancellation reasons and winback offer acceptance rates. Churn Prevention metrics dashboard

Export churn feedback

To export the reasons and feedback customers submitted during cancellation and pause requests:
  1. In your Firmhouse project, go to Analytics > Reports.
  2. Open Churn feedback.
  3. Set Created after and Created before to choose the reporting period.
  4. Under Request type, select cancellation, pause, or both. Both request types are selected by default.
  5. Choose the fields to include and click Generate report.
The flow field identifies whether each exported row came from a cancellation or pause request. Only completed requests are included. When Pause Reasons and Winback Offers is not enabled, this report is named Cancellation feedback and only includes cancellations. The Request type filter and flow field are available after enabling pause reasons.