Stripe
Connect Stripe with a restricted key. Snagr recovers expired checkouts, failed renewals and cancellations, and fills in revenue analytics.
Paste a Stripe restricted key and Snagr does the rest: it registers its own webhook on your account, imports the last year of payments, and starts recovery flows on its own. No code.
Create the key
In Stripe, open Developers → API keys → Create restricted key, name it "Snagr", and set these permissions. Leave everything else at None.
| Resource | Access | Used for |
|---|---|---|
| Checkout Sessions | Read | Finding abandoned checkouts |
| Customers | Read | Knowing who to email |
| Subscriptions | Read | Failed renewals, cancellations, MRR |
| Invoices | Read | Revenue, and the pay-now link for failed renewals |
| Products | Read | Product names and prices |
| Charges and Refunds | Read | Net revenue |
| Promotion Codes | Read | Recovery discounts |
| Payment Links | Write | One durable checkout link per product |
| Webhook Endpoints | Write | Registering Snagr's webhook |
Then paste the key in Onboarding → Stripe, or Settings → Connections. Snagr checks the read permissions before saving and tells you exactly which one is missing.
What Snagr does with it
- Abandoned checkouts. When a Checkout Session with a customer email expires unpaid, the abandoned-checkout flow starts. The email links to a Payment Link for that product, with the customer's email and your recovery discount prefilled.
- Failed renewals. When a subscription goes past due, the dunning flow starts. Its button opens the open invoice's hosted payment page, so the customer updates their card on the existing subscription. When the subscription is active again, the recovery is credited.
- Cancellations. A canceled subscription starts the win-back flow.
- Analytics. Revenue, MRR, renewal forecasts, products and the checkout funnel are computed from your synced Stripe data, net of refunds (before Stripe fees).
Good to know
- Abandonment timing. Stripe only reports an abandoned checkout when the session expires, 24 hours after it was created by default. To email sooner, set
expires_aton your Checkout Sessions (30 minutes at the earliest), or sendcheckout_startedthrough the SDK the moment checkout begins. - Guest checkouts with no email are skipped. There's no one to email.
- Test mode. An
rk_test_…key connects your test data as a separate store, so you can try everything with the Stripe CLI (stripe trigger checkout.session.expired) before going live. - History import covers 400 days and runs in the background after you connect. The Connections page shows when it's done.
- Stripe keeps charging. Stripe processes payments and runs its own card retries. Snagr never charges a card; it handles the emails around each payment.
- Signups and trials that start in your app before Stripe sees them still need the SDK. Native and SDK events run side by side.