App Subscription Launch Checklist
RevenueCat pre-launch checklist
This document contains a checklist of things to consider before launching subscriptions in your app to production.
You MUST replace your Test Store API key with the correct platform-specific API key (iOS, Android, etc.) before submitting your app for review.
If you've been testing with the Test Store during development:
- Go to Project Settings > API keys in the RevenueCat dashboard
- Copy the correct platform-specific API key (iOS for App Store, Android for Google Play)
- Update your app configuration to use the platform-specific API key for release builds
- Never submit an app configured with a Test Store API key to app review
Using a Test Store API key in production will crash your app. See Configuring SDK for details on managing API keys across environments.
1. Know your plan limits
Plan Limits | iOS | Android |
---|---|---|
There are free usage limits on our base plan. When you hit the $2,500 MTR limit, we'll start charging you at 1% of tracked revenue. Consider adding your credit card details early to prevent temporarily losing access to some of our best features. See the pricing page for more details. | ✅ | ✅ |
2. Testing user identity in RevenueCat
Verify App User IDs are set properly | iOS | Android |
---|---|---|
If you're setting your own user identifiers, make sure they are all being set as expected and you've followed our tips - double check for hardcoded strings! | ✅ | ✅ |
Verify all users are tracked in customer view | iOS | Android |
---|---|---|
Verify all the users that purchased are tracked in the activity view. If you expect to see a specific App User Id that purchased, but it's missing, something could be wrong. | ✅ | ✅ |
No unexpected aliases on user | iOS | Android |
---|---|---|
For each user, check that there are no unexpected aliases on their customer page. See our guide for more information on how aliases are created. | ✅ | ✅ |
3. Testing purchases
Sign agreements, tax forms, and enter banking info efficiently | iOS | Android |
---|---|---|
Before releasing, make sure that all agreements and tax forms have been signed and that banking information has been added as this is required to fetch products correctly. Regularly monitor these for updates in agreements and tax forms from the respective stores in order to ensure acceptance and the seamless retrieval of products. | ✅ | ✅ |
Test with real store sandbox (not Test Store) | iOS | Android |
---|---|---|
Before launch, test purchases using your platform-specific API key with real store products in the platform's sandbox environment (Apple Sandbox/Google testing). This verifies your complete integration works end-to-end with real stores, not just Test Store. See Sandbox Testing for platform-specific instructions. If you only tested with Test Store during development, this step is critical to catch any real store integration issues before submission. | ✅ | ✅ |
All products are available | iOS | Android |
---|---|---|
Verify that all of your products are being fetched correctly by RevenueCat. If any product is unavailable, there may be a configuration issue. | ✅ | ✅ |
Test purchases unlock content | iOS | Android |
---|---|---|
Make a purchase, the transaction should succeed and unlock "pro" content. It should appear right away in the transactions table and in the customer view for that user. (Note: Sandbox subscriptions will auto-renew at an accelerated rate.) | ✅ | ✅ |
Subscriptions status is up-to-date | iOS | Android |
---|---|---|
Return to the app while a test subscription is still active. You should still be able to access "pro" content. Wait for the subscription to expire then return to the app, your "pro" access should be revoked. | ✅ | ✅ |
Restoring purchases | iOS | Android |
---|---|---|
Uninstall and re-install the app. If you're setting your own App User Id, any active subscriptions should be automatically restored when you log-in. If you're using RevenueCat generated App User IDs on iOS, you won't be able to restore purchases after an uninstall in sandbox until you make another purchase. | ✅ | ✅ |
4. Verify webhooks and integrations
No webhook failures | iOS | Android |
---|---|---|
If you have a webhook configured, ensure that you don't have any errors and are handling all event types properly. | ✅ | ✅ |
Integrations delivered to correct user | iOS | Android |
---|---|---|
If you have any integrations configured, ensure that you're receiving test events attached to the expected user | ✅ | ✅ |
5. Prepare release
Replace Test Store API key with platform-specific API key | iOS | Android |
---|---|---|
CRITICAL: If you used Test Store during development, you MUST switch to your platform-specific API key (iOS/Android) for release builds. Find your production API keys in Project Settings > API keys. Never submit an app with a Test Store API key—real purchases will not work. | ✅ | ✅ |
Store description | iOS | Android |
---|---|---|
Include disclosure of auto-renewing subscription details in your app description. | ✅ | ❌ |
App Privacy | iOS | Android |
---|---|---|
As of December 8, 2020, Apple requires thorough App Privacy disclosures for third-parties, including RevenueCat. By April 2022, Google requires a Data Safety disclosure for all apps on the platform. | ✅ | ✅ |
Phased rollout | iOS | Android |
---|---|---|
Choose a staged release option so you can monitor, and halt, a rollout on a fraction of users if there's any problems. | ✅ | ✅ |
Choose to manually release app | iOS | Android |
---|---|---|
On iOS, if your app contains new products, choose to manually release the version and wait ~24 hours after your app is "Cleared for Sale" to release publicly. This is because it sometimes takes new products ~24 hours to propagate throughout the App Store. | ✅ | ❌ |
IDFA guidelines | iOS | Android |
---|---|---|
If you're using an attribution integration, ensure your app complies with IDFA usage guidelines by disclosing the use of IDFA. | ✅ | ❌ |
First release on App Store?
If the app has never been released on the App Store, it must be released before in-app purchases will work in production (even if you download with a code).
We recommend releasing and waiting up to 24 hours to ensure purchases work before starting marketing/release campaigns.
RevenueCat detects when you launch based on the purchases we receive, so there's nothing you need to do in RevenueCat when you're ready to ship.
Next steps
- Profit! However, if your app gets rejected, don't panic - check out our post on getting through App Store review →
- Subscribe to Changelog to stay up to date with new SDK releases
- Subscribe to RevenueCat Announcements to stay up to date with the latest announcements from the RevenueCat team