MuxForms cancellation feedback forms capture churn reasons inside your SaaS offboarding flow—structured select, competitor, and win-back intent with hidden account_id via server POST, not a detached Google Form after users already canceled.

Use case

Learn why customers cancel before they churn silently

Exit surveys belong in your cancel flow—not a Google Form link users ignore after they already clicked unsubscribe.

Cancellation template

FieldPurpose
reasonChurn taxonomy
competitorCompetitive intel
would_returnWin-back signal
account_idHidden from billing UI

Churn interviews are valuable; churn silence is expensive. When a customer hits “Cancel subscription,” you have one moment to capture why before they disappear into Stripe’s receipt email.

MuxForms collects structured cancellation reasons: price, missing features, switched to competitor, or “no longer needed.” A follow-up textarea captures the sentence product managers quote in roadmap reviews.

Pass `account_id`, `plan`, and `mrr_band` as hidden fields from your billing UI via Server Action or API route with the ingest secret—never ship secrets in a public marketing embed. Authenticated offboarding is the right place for PII.

Optional “would you return if we fixed X?” select helps prioritize win-back campaigns without a separate survey tool.

Notify product@ and customer-success@ on each row; webhook to Slack for high-MRR cancels if you encode tier in hidden fields.

Aggregate reasons monthly from inbox export or BI ingest—pair with the NPS use case for relationship health vs exit motivation.

Keep the form short: cancel flows already have friction. Three required clicks plus one form beat a ten-question Typeform users abandon mid-churn.

Ready-made template

Create a form named Product — Cancellation feedback with these fields, then paste the embed on your page. POST from billing cancel step with ingest secret; hidden account_id + plan; notify product@; keep copy empathetic.

FieldTypeRequired
Main reason for cancelingreasonselectYes
What feature was missing?missing_featuretextareaNo
If you switched, what did you choose?competitortextNo
Anything we could have done better?detailstextareaNo
Would you consider coming back if we addressed your concern?would_returnselectNo
EmailemailemailNo
Account IDaccount_idhiddentextNo
PlanplanhiddentextNo
Tenure monthstenure_monthshiddentextNo
Leave blank_hphiddentextNo

Embed demo

Illustrative preview—wire your form id after signup.

Preview only — connect embed.js to submit

Schema JSON

{
  "name": "Product — Cancellation feedback",
  "fields": [
    {
      "name": "reason",
      "label": "Main reason for canceling",
      "type": "select",
      "required": true,
      "options": [
        "Too expensive",
        "Missing features I need",
        "Switched to another product",
        "No longer need the product",
        "Poor support experience",
        "Other"
      ]
    },
    {
      "name": "missing_feature",
      "label": "What feature was missing?",
      "type": "textarea",
      "required": false
    },
    {
      "name": "competitor",
      "label": "If you switched, what did you choose?",
      "type": "text",
      "required": false
    },
    {
      "name": "details",
      "label": "Anything we could have done better?",
      "type": "textarea",
      "required": false
    },
    {
      "name": "would_return",
      "label": "Would you consider coming back if we addressed your concern?",
      "type": "select",
      "required": false,
      "options": [
        "Yes",
        "Maybe",
        "No"
      ]
    },
    {
      "name": "email",
      "label": "Email",
      "type": "email",
      "required": false
    }
  ]
}

Embed snippet

<div data-form-id="FORM_UUID"></div>
<script src="https://www.muxforms.com/embed.js" defer></script>

Common questions

Embed on public site?
Prefer POST from authenticated cancel step with ingest secret; avoid public account_id.
Required before cancel completes?
Product choice—MuxForms only stores feedback; gating is your app logic.
Pair with NPS?
Yes—NPS for health; cancellation form for exit reasons.
Analyze reasons?
Export inbox or webhook to analytics; group by reason select monthly.

Create the form for this job.

Then clone the pattern for the next site or app.

Upgrade to Pro