integrate-revenuecat: end-to-end RevenueCat integration
Use this skill when the user wants to add RevenueCat to a project for the first time, or to reconfigure the SDK with a public API key. The skill covers two halves:
- Dashboard side — set up the project, register the app, and obtain the public API key, through the RevenueCat MCP server or the
rcCLI. - App side — install the Purchases SDK, call
Purchases.configure(…)at app entry, and verify the configuration banner in the logs.
Walk them in order. Most integrations need both halves, even when the user asks "just install the SDK" — the SDK needs an API key from the dashboard.
If a project + app already exist and the user only wants to wire the SDK into code, jump to Section 3 below. If the user wants to bootstrap a brand new RevenueCat project (apps + products + entitlements + offerings), use the
create-revenuecat-projectskill instead, then come back here for the SDK install.
Arguments
Available as $ARGUMENTS when invoked as a slash command:
platform(optional): One ofios,android,kmp,flutter,react-native. If omitted, run the detection algorithm in Section 3a.app_identifier(optional): Bundle ID (iOS) or package name (Android). If omitted, read it from the project files (Info.plist,AndroidManifest.xml,app.json,pubspec.yaml).project_name(optional): Name of the RevenueCat project to use. If omitted, list projects (via MCP orrc projects list) and ask the user.
1. Understand the status quo
Before touching the dashboard, gather the facts:
- Platform target: iOS / Apple App Store, Android / Google Play, or both. Inspect the working directory before asking — the detection algorithm in Section 3 makes this obvious for most projects.
- Technology: native iOS (Swift), native Android (Kotlin / Java), React Native, Flutter, Kotlin Multiplatform. SDK list: https://www.revenuecat.com/docs/getting-started/installation.md.
- App identifier: bundle ID (iOS), package name (Android). Pull from
Info.plist/AndroidManifest.xml/app.json/pubspec.yamlrather than asking.
2. Dashboard side
Use whichever surface the user has available: the RevenueCat MCP server or the rc CLI (see the revenuecat-cli skill for CLI discovery and conventions). Both cover the same operations for these steps, and each step below notes the MCP tool and the rc command.
2a. Get or create the project
- List accessible projects:
list-projects(MCP) orrc projects list. If multiple, ask the user which one matches this app, or offer to create a new one (create-project/rc projects create). - If there is no project, hand off to the
create-revenuecat-projectskill, then resume here. - Store the
project_idfor the rest of the steps.
2b. Get or create the app
- Check which apps are already configured in the project (
list-apps/rc apps list). Atest_storeapp is always present;app_storeandplay_storeapps are present only if the user has finished store-side setup. - Ask the user whether their app is already set up in App Store Connect (iOS) or Google Play Console (Android). Reassure them that store-side setup can come later — the
test_storeapp is enough to start integrating. - If the user confirms store-side setup is done, call
create-app(orrc apps create):- iOS:
type: "app_store",bundle_idfrom Section 1. - Android:
type: "play_store",package_namefrom Section 1. namederived from the identifier or asked from the user.
- iOS:
2c. Get the public API key
- List public keys for the relevant app ID:
list-public-api-keys(MCP) orrc apps keys <app-id>:app_store/play_storeif the store-side app exists.- Otherwise the
test_storeapp.
- The returned key is public and safe to embed in client app code. iOS keys are prefixed
appl_…, Android keysgoog_…, Amazonamzn_….
Never use the secret API key in client code. Secret keys are server-side only.
3. App side — install and configure the SDK
3a. Detect the platform
Inspect the working directory and pick the first match, from top to bottom:
- React Native:
package.jsonhas areact-native-purchasesentry, orreact-nativeas a dependency → readplatforms/react-native.md. Ifexpois also a dependency, note it as an Expo project. - Flutter:
pubspec.yamlexists at the project root → readplatforms/flutter.md. - Kotlin Multiplatform:
build.gradle.ktscontains akotlin { … }multiplatform source sets block, or depends oncom.revenuecat.purchases:purchases-kmp*→ readplatforms/kmp.md. - Android (native):
build.gradle(.kts)appliescom.android.application(and is not KMP) → readplatforms/android.md. - iOS (native):
Package.swift,*.xcodeproj,*.xcworkspace, orPodfileat the project root → readplatforms/ios.md.
If several match (e.g. an ios/ folder inside a Flutter project), pick the outermost project, the one that owns the build. If still ambiguous, ask the user which platform they want to configure.
3b. Shared concepts (all platforms)
- Public SDK key, not secret key. RevenueCat issues a separate public SDK key per store/platform. iOS apps use an
appl_…key, Android apps use agoog_…key (Amazon usesamzn_…). Server-side secret keys must never appear in client apps. - Configure once per app launch. Call
Purchases.configure(…)exactly once, as early as possible (app entry point). Later calls no-op or warn. - Anonymous users by default. If you don't pass an
appUserID, RevenueCat creates a stable anonymous ID. Only passappUserIDif you already have an authenticated user at launch; otherwise calllogIn(…)later (see therevenuecat-identify-userskill). - Enable debug logging during integration. Each platform file shows how. Turn it off for release builds.
- Keep keys out of source control. Recommend
.env(RN),xcconfig(iOS),local.properties/gradle.properties(Android), or dart-define (Flutter) when the user asks about secret management.
3c. Implementation
Read the platform file that matches detection:
platforms/ios.mdplatforms/android.mdplatforms/kmp.mdplatforms/flutter.mdplatforms/react-native.md
Each platform file is self-contained: install command, exact configure snippet, and where to place it in the app entry point.
4. Verify
Do not claim setup is complete until:
- The project builds (Xcode build,
./gradlew assembleDebug,flutter run,npx react-native run-ios, or the KMP equivalent). - The app launches and the RevenueCat SDK logs a configuration banner in the console / logcat / Metro output (each platform file describes the expected log line).
- No authentication errors appear on the first SDK network call. A wrong API key surfaces as an auth error log as soon as the app fetches offerings.
If the user only asked to "install" without running the app, tell them what to look for in the logs when they do run it.
5. Next steps
5a. Products, entitlements, offerings
Check whether products, entitlements, and offerings are already set up in the project. If not, offer to help via the create-revenuecat-project skill.
5b. Store-side setup
iOS (App Store Connect)
- In-App Purchase Key (recommended for StoreKit 2) — App Store Connect → Users and Access → Integrations → In-App Purchase. Generate key, download the
.p8file. Note the Key ID and Issuer ID. - Shared Secret (legacy StoreKit 1) — App Store Connect → App → App Information → App-Specific Shared Secret.
- If the user provides this information, register it on the RevenueCat side via
create-app/update-app.
Android (Google Play Console)
- Service account credentials — Create a service account in Google Cloud Console. Grant "Service Account User" role. Create a JSON key. In Play Console, grant the service account access with "View financial data" permission.
- Real-time Developer Notifications (RTDN) — Set up a Cloud Pub/Sub topic. Configure in Play Console → Monetization setup.
- If the user provides this information, register it via
create-app/update-app.
5c. Subsequent skills
Common follow-ups after integrate-revenuecat:
revenuecat-paywall— display a dashboard-configured paywall.revenuecat-purchase-flow— implement purchase + restore manually.revenuecat-entitlements-gate— gate features behind active entitlements.revenuecat-identify-user— wirelogIn/logOutto the app's auth system.revenuecat-testing-setup— set up a sandbox testing channel.revenuecat-troubleshoot— diagnose offerings / products / entitlement bugs.