Getting started
Connect Stripe
Backstop connects to Stripe with Connect (OAuth). The grant is read_write — recovery and retention need to act on your account (retry invoices, apply coupons, pause / cancel / switch plans), not just read it. We never ask for your secret key, the token is encrypted at rest, and you can revoke it from Stripe at any time. Connecting takes about a minute.
What we'll do
- You click Connect Stripe from the workspace dashboard.
- Stripe shows you a consent screen for a
read_writeconnection to your account (customers, subscriptions, invoices, payment intents). You confirm. - We mirror the data into our database via Stripe's webhook events. Every cancel page, every recovery campaign, every analytics view reads from this mirror — never live from Stripe. Writes only happen for the specific actions below.
What we read
customer.*— customer mirror (email, name, metadata)customer.subscription.*— subscription state, billing interval, amountinvoice.*— paid / failed / finalized invoicescharge.*,payment_intent.*— to detect failures and retries
What we write
The read_writegrant exists so Backstop can take the recovery and retention actions you configure. Every write is triggered by one of your rules or a customer's own choice — never speculatively:
- Smart retries — we re-attempt failed invoices on a decline-code-aware schedule (rules, not ML) via
invoices.pay. - Save offers — when a customer accepts an offer in your cancel flow, we apply it: a coupon / discount, a pause, a plan switch, or gifted free months (
subscriptions.update, coupons). - Cancellations — a confirmed cancel sets
cancel_at_period_endon the subscription.
What we don't do
- We never see or store your Stripe secret key — Connect tokens only, encrypted at rest.
- We never modify a subscription speculatively. Writes fire only from a recovery rule you set up or an action a customer takes in your flow — never on a whim.
- We never touch anything outside billing — no Stripe settings, no payouts, no Connect account configuration.
Disconnecting
Go to your Stripe dashboard → Settings → Connected applications → Backstop → Revoke access. We immediately stop processing webhooks for your account, but the mirror data we've already collected stays in our DB until you delete the workspace. To wipe the mirror too, delete the workspace from Settings → Workspace.
Next
After Stripe is connected, ship your first cancel flow.