Merchant dashboard
The dashboard is where you finish onboarding, configure offers, and watch the cancel flow do its work. This page walks you through each section.
Onboarding checklist
After you connect Stripe, the dashboard runs a five-step onboarding flow before letting you into the main view.
- Connect Stripe. OAuth handshake. See Connect Stripe for the full walk-through.
- Reveal. Unchurn pulls your last 30 days of cancellations from Stripe and shows you the MRR you actually lost and the share that was recoverable. No setup required — these are your real numbers.
- Preview. The cancel-flow widget renders against one of your real subscriptions so you can see exactly what your customers will see.
- Pricing. Pick the Unchurn plan that fits.
- Install. Two snippets — a script tag and a JavaScript call — that you paste into your app. Once the script tag fires once on a page where the widget could open, the install step marks itself complete.
The onboarding flow gates the rest of the dashboard. You cannot configure offers or read live activity until Stripe is connected, because every offer eligibility check reads from Stripe.
Mode toggle
The top of the dashboard has a Test / Live toggle. The toggle controls which mode you are viewing — sessions, metrics, flow config, cancellations. It does not control which mode the widget runs in. The widget mode is set by the token your server mints and cannot be flipped from the dashboard.
Each mode has its own flow config, its own sessions, and its own connected Stripe account. Test sessions never appear in live analytics and the reverse holds.
Live activity and metrics
The default dashboard view shows four cards.
KPI row. New subscriptions, cancellations, MRR change, and saved revenue for the current 30-day window.
MRR chart and movement. A 30-day MRR trend with new subs, expansion, contraction, and churn broken out alongside it.
Save performance and cancellation reasons. What share of cancel flows ended in a save, and which reasons your customers picked when they declined.
Activity feed. A live list of subscriptions, payments, and cancel-flow events as they happen — new customer, kept after cancel attempt, downgraded, payment failed, lost. Each row carries the customer label, the action, the MRR delta, and a relative timestamp.
When you first connect Stripe, the dashboard shows a Importing historical data from Stripe banner. Numbers update as the backfill workflow completes — usually within a few minutes.
Flow config — what your widget shows
The Cancellation Widget workspace lives at /dashboard/widget. Each section configures one piece of what the cancel flow renders. Hit save and the next session picks up the change — the widget always reads the latest config from the backend at session start.
Discount
Set the discount percent, the duration (one billing cycle, repeating, or forever), and the loss-aversion bullets shown alongside the offer. Includes optional bounds for the agentic offer picker — minimum and maximum percent, plus how many billing cycles the agent is allowed to discount.
See Discount offer for the eligibility rules.
Pause
Pick which pause durations the customer can choose from (for example, 1 / 2 / 3 months). The pause offer hides itself for non-monthly subscriptions automatically; you do not configure that.
See Pause offer for the limits.
Switch plan
Define which plan transitions the customer is allowed to take — typically a downgrade from your annual plan to a cheaper monthly plan, or from premium to standard. You provide the source price ID, the target price ID, and copy that explains what they keep.
See Plan switch offer for the rules.
Extend trial
For subscriptions still in trial, configure how many extra days you offer and the maximum number of times a single subscription can extend.
See Trial extension offer for the cap behavior.
Sequence
The strategy section turns the offer waterfall on or off. With waterfall on, declining the first offer shows a backup offer before the cancel screen. With waterfall off, the customer sees one offer and then the cancel confirmation.
It also has the force_compliance toggle — when on, every customer sees the persistent Cancel Now button regardless of location. See Compliance for what that does.
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 off to your coding agent — useful if you want the agent to wire the snippet into the right cancel button automatically.
Cancellations
The Cancellations view at /dashboard/cancellations is one row per cancel-flow session — the subscription, the customer, when the session started, what offers they saw, what they picked, and the outcome. Filterable by mode and a 30-day rolling window.
Manual cancellation requests show up here as a distinct outcome — never as canceled, so your save-rate math stays honest.
Account settings
/dashboard/account covers four things.
- Profile. Email, display name.
- Subscription. Your Unchurn plan and trial status.
- Stripe connection. Connect or disconnect each mode independently. Disconnecting one mode leaves the other untouched.
- Session. Sign out of Unchurn on this browser.
The widget signing secret rotation lives in the install section — rotate from there if you suspect your UNCHURN_SECRET has leaked. The new secret invalidates every signed token already in flight.
Cross-references
- Connect Stripe — the prerequisite for everything on this page.
- Quickstart — wire the widget into your app.
- Offers — what each offer does on Stripe.
- Compliance — direct cancel access and the audit trail.