Skip to content
Integrations

Connects to your stack in an afternoon.

Start with a restricted Stripe key. Add the widget or API only if and when you want deeper control. No rebuild.

The foundation

Stripe

Connect a least-privilege restricted Stripe key and Churnless imports your billing reality in minutes, then watches for the moments that precede lost revenue.

  • Subscriptions & plans
  • Invoices & payment failures
  • Customers & metadata
  • Refunds & disputes

Restricted key · revoke anytime

Stripe connectionconnected
Subscriptions1,284 imported
Open invoicessynced
Failed paymentsmonitoring
Stripe webhooksverified
Ways to embed

Pick the surface that fits your stack.

Private beta

React SDK

ChurnlessProvider, CancelFlow, and PaymentRecoveryWall components. Private beta: not yet on npm, available on request.

v1.js

Cancel Widget

A lightweight drop-in script for any stack — no framework required.

/api/v1

REST API

Read risk, customers, and next actions with a single X-API-Key header. Cancel-flow, recovery, and event endpoints work on every plan; the data API is not included in Launch.

Private beta

MCP Server

Give AI agents tools to read signals and request guarded retention actions over the Model Context Protocol. Private beta: not yet on npm, available on request. Uses the data API, which is not included in Launch.

pixel

Tracking Pixel

A lightweight (~3KB gz) pixel streams behavioral events so risk is scored from real product usage.

webhooks

Outbound webhooks

Signed (HMAC-SHA256) events for cancel-flow outcomes, payment failures and recoveries, and customer health changes, retried for about 24 hours. Owners and admins configure endpoints in Settings.

Integration examples

Connect your authenticated billing flow.

Your backend authenticates the customer and binds a short-lived token to their exact subscription. The examples use that token callback and your app’s customer ID. The React SDK is in private beta; the script-tag widget works today. Follow the complete setup guide.

React SDK (private beta)
<ChurnlessProvider
  getCustomerToken={getCustomerToken}>
  <CancelFlow customerId={stripeCustomerId}>
    {({ show, isLoading }) => (
      <button onClick={show} disabled={isLoading}>
        Cancel subscription
      </button>
    )}
  </CancelFlow>
</ChurnlessProvider>
REST API
curl https://www.getchurnless.com/api/v1/customers/cus_123 \
  -H "X-API-Key: fk_live_..."

# → churn risk, signals,
#   and recommended actions
Widget
<script src="https://www.getchurnless.com/widget/v1.js"></script>
<script>
  const flow = Churnless.init({
    customerId: stripeCustomerId,
    getCustomerToken
  });
  cancelButton.onclick = () => flow.show();
</script>

Plays nicely with the tools you already run

StripeReactNext.jsResendPostgresVercelSlack

Connect Stripe. Start saving this week.

The only required integration takes five minutes. Everything else is optional.

Free audit, no card · 14-day trial starts when protection goes live