Skip to Content
Merchant dashboard

Merchant dashboard

The Unchurn dashboard is where you finish onboarding, configure the cancel flow, and watch retention work. This page is an opinionated tour: what each surface is for, what decisions you’re making, and what the strategic levers are. Field-by-field reference lives in Widget configuration.

Onboarding (one-time)

After you sign up, Unchurn runs a six-step onboarding flow before letting you into the main view.

  1. Reveal. Unchurn pulls your last 30 days of cancellations from Stripe and shows the MRR you actually lost and the share that was recoverable. No setup required — these are your numbers.
  2. Website. Add your product domain. Used for live previews.
  3. Preview. The widget renders against one of your real subscriptions so you see exactly what your customers will see.
  4. Pricing. Pick the Unchurn plan that fits.
  5. Checkout. Pay for Unchurn (or start your trial). Required before you can ship live-mode traffic.
  6. Install. Two snippets — a script tag and a JavaScript call — to paste into your app. Once the script fires on a page where the widget could open, the install step marks itself complete.

Onboarding gates the rest of the dashboard. You can’t configure offers or see live activity until Stripe is connected and checkout is complete.

Mode toggle

The top of the dashboard has a Test / Live toggle. The toggle controls what you view in the dashboard — sessions, metrics, configuration. It does not control which mode the widget runs in. The widget’s mode comes from the token your server signs and the dashboard toggle has no effect on it.

Each mode has its own configuration, its own sessions, and its own connected Stripe account. Test sessions never appear in live analytics. See Test and live modes for the full picture.

The strategic core: reasons and follow-ups

This is the most important section to get right, because reasons and follow-ups are how you segment customers by intent before deciding which offer to make.

Every cancel flow opens on a feedback step that asks “Why are you canceling?” Each option on that step is a reason you configure. A reason has one of two shapes:

  • Direct-route reason. Picking it takes the customer straight to one specific offer. Use this when the reason and the right counter-offer are unambiguous — “too expensive” → discount, “taking a break” → pause, “only needed it for one project” → plan switch to a cheaper tier.
  • Follow-up reason. Picking it opens a second question with two or more answers, each routing to its own offer. Use this when the same surface reason masks different intents. “Not using it enough” could be a fit problem (no offer can save them — route straight to cancel) or a discovery problem (extend the trial, offer a pause). The follow-up disambiguates.

Each reason — and each follow-up answer — routes to one of five destinations: discount, pause, plan switch, trial extension, or skip straight to cancel.

Strategic rules:

  • Fewer reasons beat more. Five to seven sharp options outperform fifteen overlapping ones. Customers pick the first plausible label and bounce.
  • Use follow-ups sparingly. Every extra click loses people; deploy them only when the intent split is real.
  • Skip is sometimes the strongest move. If a reason’s real cause can’t be fixed by an offer, routing to skip preserves trust and keeps your save-rate math honest.

Configure reasons under Cancellation Widget → Reasons in the dashboard. See The five offers for what each offer destination does on Stripe.

Configuring the offers

The dashboard has one section per offer, each with its own opinion to make.

Discount

The discount is your highest-conversion offer and your biggest margin risk. Two knobs matter: how deep it goes and how often the same customer can see it. Start at 20% off for three months with a 60-day cooldown.

The discount comes in two modes:

  • Manual. Every customer who lands on the discount offer sees the same percentage. Use this until you have enough sessions to read the save-rate signal clearly.
  • Intelligent. Unchurn picks a per-customer percentage between zero and the maximum you set, based on intent signals from the session. Flip to intelligent once you have a few hundred sessions — the model needs signal to calibrate against.

The maximum-discount ceiling applies only when intelligent mode is on, but the dashboard keeps it set in both modes so you can switch without losing the ceiling. See Discount offer for what happens on Stripe.

Pause

Pause works on monthly subscriptions and lets customers freeze billing for a set number of months — billing resumes automatically when the pause ends, and any invoices during the pause window are voided rather than back-billed.

Pick the durations you want to offer (commonly 1, 2, and 3 months; you can offer up to 6) and a cooldown so the same customer can’t pause every month. Pause hides itself for non-monthly subscriptions automatically. See Pause offer.

Plan switch

Plan switch is your “shrink, don’t lose” lever. Define which downgrade paths a customer is allowed to take — for example, from your Pro plan to your Starter plan. Unchurn applies the new price on the next invoice with no immediate charge or credit.

This offer is always same-cadence (monthly source → monthly target) and only shows up when the customer’s current plan has at least one allowed cheaper target. There’s no invoice preview — the new price simply applies next cycle. See Plan switch offer.

Trial extension

For subscriptions still in their Stripe trial, you can extend the trial by a few days. Set how many days to add (1 to 60) and Unchurn enforces a per-customer cap of one extension in live mode — test mode doesn’t enforce the cap so you can re-run the flow during development. See Trial extension offer.

How offers are picked

For each reason or follow-up answer, you wire one destination — discount, pause, plan switch, trial extension, or skip. At session start, Unchurn checks eligibility against the live Stripe subscription:

  • If the customer is on a yearly plan and the reason routes to pause, pause is ineligible and gets dropped.
  • If the customer declines the first offer, the flow shows one backup offer (when eligibility allows) before the cancel screen. There’s no merchant-controlled waterfall toggle — the runtime always tries one backup if it can.
  • If no offer is eligible, the customer goes straight to the cancel screen.

Install

The install page renders your script tag and the JavaScript call ready to paste. Both are pre-filled with your merchant ID. The page also has an AI launcher that hands a written prompt to your coding agent — useful if you want it to wire the snippet into your real cancel button automatically.

The widget signing secret lives here too. Rotate it if you suspect it’s leaked; every signed token in flight stops working immediately and your server starts issuing tokens signed with the new secret.

Reading the results

Overview

The main dashboard has five cards, all scoped to the last 30 days and to the active mode (test or live).

  • Retention snapshot — three numbers: verified retained revenue (invoices marked paid in Stripe after a save), immediate saves (sessions where the customer accepted an offer), and lost voluntary MRR (revenue from subscriptions that canceled anyway). Use this row to answer “is the engine working this month?”
  • Cancellation reasons — distribution of reasons selected at the feedback step, with outcome breakdown per reason. A reason with high volume and low save rate is your highest-leverage rewrite target.
  • Offer performance — save rate, accepted count, and retained revenue broken out per offer type. Use this to see whether your discount ceiling is too low or your pause duration options are right.
  • Canceled anyway — subscriptions that completed a session but still canceled at period end. Use this to find patterns in customers the engine couldn’t retain.
  • Recent activity — cancel-flow events as they happen. Use this when debugging a specific session.

Sessions view

The Sessions view is one row per cancel-flow session — the subscription, the customer, the session start time, which reasons and follow-ups they touched, which offers they saw, what they picked, and the outcome. Filterable by mode.

Manual cancellation requests appear here as a distinct outcome — never as a canceled outcome. When Stripe can’t safely auto-cancel a subscription (an unresolved mid-cycle invoice, some pause states, certain coupon stacks), the customer files a request, gets an email confirmation, and the merchant gets a task. Those sessions are excluded from save-rate math.

Account

The Account page covers:

  • Profile. Email, display name.
  • Subscription. Your Unchurn plan and trial status.
  • Stripe connection. Connect, disconnect, or reconnect each mode independently. See Connect Stripe.
  • Keys. Rotate your widget signing secret here. Generate new keys when a teammate leaves with access.

When something looks wrong

  • Banner: Reconnect Stripe required. Your OAuth grant was revoked or expired. The widget stops serving offers until you reconnect. Click the banner.
  • Banner: Importing historical data. First-time backfill is running. Numbers update as it completes — usually a few minutes.
  • A session row shows manual-request instead of an outcome. Stripe couldn’t auto-cancel that subscription shape safely. The customer was emailed and a task is in your inbox. The full list of safely-cancellable shapes is in Supported subscriptions.
  • An offer never shows up in sessions. Usually eligibility — the customer’s subscription shape didn’t match the offer’s safe lane. See Eligibility.

Next steps

Most teams go straight to The five offers next — once you know what each offer is actually doing on Stripe, the dashboard configuration choices get a lot easier to make. Then come back here and start wiring reasons.