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
| Integration | Best for | Identity strategy |
|---|---|---|
| Stripe | Web and SaaS apps with direct card billing | Email or metadata |
| RevenueCat | Mobile apps using in-app purchases | anonymous_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:
| Strategy | How it works | When to use |
|---|---|---|
anonymous_id | Your app sets the external user ID to the OnRamp anonymous_id | RevenueCat (recommended) |
email | App calls OnRamp.identify({ email }) - OnRamp matches against the external customer's email | Stripe, RevenueCat |
property | App calls OnRamp.identify({ userId }) - OnRamp matches a trait against the external customer ID | Custom user ID flows |
The identify() call is the standard way to tell OnRamp who the current user is. Call it once after sign-in:
// 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:
INTEGRATION_ENCRYPTION_KEY=<64 hex chars>
# Generate with:
openssl rand -hex 32
Webhook URLs
| Provider | URL to configure |
|---|---|
| RevenueCat | https://your-domain/api/integrations/webhooks/revenuecat?integration_id=<your-integration-id> |
| Stripe | Configure via the integration settings page after connecting |
Find your integration ID in Settings → Integrations after connecting.
