Integrations

Integrations connect external revenue and subscription data to your OnRamp funnels. Once connected, you can see which onboarding steps predict conversion to paying, overlay revenue on retention curves, and measure the dollar impact of funnel improvements.


Available integrations

IntegrationBest forIdentity strategy
StripeWeb and SaaS apps with direct card billingEmail or metadata
RevenueCatMobile apps using in-app purchasesanonymous_id (recommended)

How it works

1. Connect

Go to Settings → Integrations, pick a provider, and paste in your API key. OnRamp validates the key immediately before saving.

2. Identity resolution

OnRamp needs to map your external customer IDs (Stripe cus_xxx, RevenueCat app_user_id) to OnRamp's anonymous_id. You configure a strategy per integration:

StrategyHow it worksWhen to use
anonymous_idYour app sets the external user ID to the OnRamp anonymous_idRevenueCat (recommended)
emailApp calls OnRamp.identify({ email }) - OnRamp matches against the external customer's emailStripe, RevenueCat
propertyApp calls OnRamp.identify({ userId }) - OnRamp matches a trait against the external customer IDCustom user ID flows

The identify() call is the standard way to tell OnRamp who the current user is. Call it once after sign-in:

ts
// React / Next.js
const { identify } = useOnRamp()
identify({ email: user.email, userId: user.id })

// React Native / Expo
OnRamp.identify({ email: user.email, userId: user.id })

identify() is optional

identify() is only needed for the email and property strategies. If you never connect an integration, or you use the anonymous_id strategy (passing the OnRamp anonymous ID directly to RevenueCat or Stripe), you never need to call it. Apps that prefer not to collect identity traits can skip it entirely - all funnel, session, and retention features work without it.

The anonymous_id strategy requires no identify() call - your app passes the OnRamp anonymous_id directly to RevenueCat or Stripe as the customer/user ID. It's the most reliable option when you control the external system's user ID at setup time.

3. Sync

After connecting, OnRamp runs an initial sync to pull historical data. Subsequent syncs run automatically every 6 hours. You can also trigger a manual sync from the integration settings page.

RevenueCat is webhook-only - events arrive in real time. No polling is needed.

4. Revenue views

Once data flows in, the following appear in your dashboard:

  • Revenue summary - total revenue, MRR, paying users, refunds for the selected date range
  • Daily revenue chart - new subscribers and churn overlaid on revenue bars
  • Funnel → revenue - conversion rate to paying, split by whether users completed your onboarding funnel

Environment variable

Credentials are stored encrypted at rest. Add this to your environment:

bash
INTEGRATION_ENCRYPTION_KEY=<64 hex chars>

# Generate with:
openssl rand -hex 32

Webhook URLs

ProviderURL to configure
RevenueCathttps://your-domain/api/integrations/webhooks/revenuecat?integration_id=<your-integration-id>
StripeConfigure via the integration settings page after connecting

Find your integration ID in Settings → Integrations after connecting.