Discussion and help from anything related to RevenueCat.
Recently active
Hey there,The user experience of loading the dynamic paywall is really ugly. You see all these skeleton loaders. Is there a way to avoid this? I rather have it have a short delay of 0.5s vs this weird experience.
I was testing a scenario when the user is on a subscription (e.g. monthly) and decides to purchase a lifetime access while subscribed. In this scenario:user has their monthly subscription that lasts until 31Jul for example (let's assume today is 11Jul) user purchased lifetime access -hen user goes to the settings and cancels their subscription which is still valid until 31Jul but won't renewNow I wanted to show a banner to the user that they must manually cancel their subscription (as far as I know we cannot do it on our own). For this I am checking the willRenew flag that I found inside the customerInfo.subscriptionsByProductIdentifier.What I noticed though during testing in Sandbox that the willRenew flag is not updated and couldn't get a confirmation on RevenueCat's forum if it's just a Sandbox issue or it's also not reliable in Production.I also considered using it together with the unsubscribeDetectedAt attribute, somehow like this:let hasNotCancelledActiveSubscription = customer.
I’m a little confused on how this should be handled and If it’s suppose to work that way. I’ve logged in as (user id = ) userA , I’ve purchased a subscription then I’ve logged out and logged in as userB and then deleted userA from my database.UserA HistoryUser B History Why is the renew event sent from userA ? This creates a problem in my app because `userA` was deleted after transfer and some time later the subscription renewed. Also the revenue cat firebase extension fails because of the same thing I would expect that after transfer all the subsequent events to have the new customer id set.
Hello, RevenueCat team.I've already correctly configured my service account in Google Cloud and Play Console with Admin access and API permissions.I uploaded the JSON to the RevenueCat dashboard, enabled all the APIs used in the project (vdt-invest-25), and waited over an hour.I uploaded app with closed test. I still receive the error message: ❌ Permissions to call subscriptions API.I'm counting on your help to resolve this.
I’m wonderign if its possibel to haev a nested bottom sheet withitng the paywall like the above? Like you click on the “Upgrade your locket” and it woud pull up that “Subscribe to locket gold” modal within the paywall?
Getting in-app purchases can take a long time to get approved, but I’d like to test my paywall before it’s approved. I don’t see my new product in the offering. Is there a way to force it? All I see is the default. thanks
Hi,Currently, the SDK for Unity only allows string values to be sent for customer attributes.Also, in the Targeting Ruels UI, it seems to only do string comparisons.Am I doing something wrong, or is it limited to strings only?thanks!
Hello, is there a way to add an entitlement to a customer using the rest api v2?
Hi everybody and RC Team,I just want to request RC team regarding few limitations of APIs, I actualy want to get list of active subscriptions (new) on daily basis for graph stats also ios and android users number on subscriptions. Thanks
Hello everyone, I have completed the AppsFlyer integration as described in the documentation, but I’m not seeing any events (e.g. trial started, conversion, renewals) appear in my AppsFlyer dashboard, even after waiting for some time. Additionally, the documentation does not clearly explain how event names should be structured or sent. This causes confusion when trying to verify whether RevenueCat is sending the correct events to AppsFlyer. As shown in the screenshot, the "No Events to Show" message appears in the Integration Events section. Does this mean that no events were sent at all to AppsFlyer? Or could this indicate a problem with the event naming or setup?👉 One thing I’m not sure about:Should the event names listed under the "Integrations" tab (in RevenueCat dashboard) match RevenueCat’s default names, or do they need to follow AppsFlyer's default naming conventions (e.g., af_subscribe, af_start_trial, etc.) for them to be tracked properly?Any help or clarification on how t
Hello,we have implemented RevenueCat into our app.We are testing the app through TestFlight.Testers see the price for the US in USD in the paywall, while they should see the prices for Germany in EUR. On the Apple Payment screen the price shows correct in EUR.They are located in Germany, have a phone locale and everything set up in German, their App Store account is registered in Germany, and their added credit card is from Germany. No VPN and no previous activity in with US store accounts.We didn't change anything regarding locale in App Store Connect. We use the default US Localization.We are getting prices like this:func getOfferings() { Purchases.shared.getOfferings { offerings, error in if let error { print("Purchases: Error: \(error.localizedDescription)") return } // We are getting prices from availablePackages guard let packages = offerings?.current?.availablePackages else { return } for package in pac
Hey everyone,I was trying to get a list of customers that tapped on an SearchAds Basic ad, but can’t find any attributes that identify a user who tapped on such an ad (just SearchAds Advanced).The issue with the current charts is (I think) it doesn’t create monthly cohorts based on when the user was first seen (for filtering SearchAds > Unspecified to get the Basic revenue). The use case: Compare SearchAds Basic expenses vs revenue for a specific month.To be as accurate as possible, I want to filter for users who tapped the ad, AND installed the app for the first time in a given month. I don’t want to attribute users who were already using the app before tapping on the ad. I use the First Seen dates for this. Any ideas for workarounds or where the attribute is? I could also set it from inside the app, but I don’t want to mess up the tracking in the charts. We track SearchAds Basic and Advanced, just Basic is hard to find in RC. Thanks!
I'm encountering an issue where the in_app_purchase event does not show up in Firebase Analytics, even though the user successfully completes a subscription using RevenueCat on Android. Purchases.configure(PurchasesConfiguration.Builder(context, apiKey).build())Firebase.analytics.appInstanceId.addOnSuccessListener { appInstanceId -> Purchases.sharedInstance.setFirebaseAppInstanceID(appInstanceId)}Other details: I’m using Firebase SDK directly (no third-party wrappers). appInstanceId logs successfully.
Hello,I recently try to setup the Google Analytics firebase integration to catch all purchase for the marketing teamI have a question as we are not using firebase for anything else that notification and analytics, does I really need to setup the firebase extension just to send analytics ?In the firebase page integration, I am seing the event sent to GA, with 204 status responseex { "app_instance_id": "xxxxxxx", "events": [ { "name": "rc_expiration", "params": { "affiliation": "APP_STORE", "app_id": "XXXXX", "environment": "SANDBOX", "event_id": "1d4cfa0c-6ab5-4e14-b6a0-4b23ac30f90a", "expiration_at": 1751542603000000, "expiration_reason": "UNSUBSCRIBE", "original_app_user_id": "XXXXXX, "original_transaction_id": "2000000922156146", "period_type": "NORMAL", "presented_offering_id": "XXXX", "product_id": "XXXXX", "purchased_at": 1751542423000000, "transaction_id": "2000000954063064"
Hey everytime i click link from builder pack. Go to rev.cat/bolt enter your email address and click Start for Free. its always not working.
With the new Paywalls v2, there is no way to change the GoogleReplacementMode when making a purchase. I would need to set purchasesAreCompletedBy to MY_APPS to be able to set a custom purchase logic for the paywall to change the mode accordingly. Even the community support does not agree that thats even the correct approach to solve this issue (see this thread from 2 months ago)
When adding Service Accounts, the docs state: Under 'App permissions' you need to add your app. Then under 'Account permissions', you need to grant certain permissions in order for RevenueCat to properly work. Is this really necessary? It is possible to assign apps to users and manage app permissions s.t. the particular service account is only able to access one specific app instead of all apps.The documentation currently recommends users to grant Account Permissions which means said service account would be able to access all apps in the Play Store.Can this be avoided by just setting the correct permissions under App Permissions > Manage Permissions?See also: https://github.com/RevenueCat/docs/pull/929
Hi,so until now I’ve used Apple In-App Subscription only with RC. I have two subscription tiers (entitlements). Now I’m build a web dashboard and want to sync the tiers and give the users to manage their subscriptions and subscribe to a tier. Works fine with web Billing but after some testing I saw that users can subscribe to several tiers (entitlements) the same time in the web billing version. Or is that only because I’m using the Sandbox version and the system has no time to react? Can we allow the user to manage their subscription in the dashboard? As far as I understood correctly, they can manage their payments only via the stripe dashboard (only when subscribed via web). In case the user subscribed via our iOS app, the user can only manage their subscription via the app? Thanks in advance!
If the system font scale on iOS is ratcheted up far enough, my paywall becomes unusable. I have control of this throughout my app, but I can’t find a way to disable font scaling in my RevenueCat paywall. Is there a setting or workaround anywhere to do this? We’re getting customer reports with busted paywalls due to font scale settings.
Hey everyone,I’m currently setting up my paywall and need some guidance on how to implement a conditional label on the continue button based on the selected offer.My setup: I offer two packages: Lifetime (one-time purchase) Monthly (recurring subscription with a free trial) What I want to achieve: When the Monthly offer is selected, the continue button should say: “Continue to Free Trial” When the Lifetime offer is selected, the button should say: “Continue” Is there a built-in way in RevenueCat to handle this kind of conditional UI behavior based on the selected package or offer type (e.g., checking if a trial is available)? Any best practices would be greatly appreciated!Thanks in advance!
Is there a way to simply scroll to see further transactions on the web?I understand https://app.revenuecat.com/activity allows going further back with Older button clicks but 10 a page is very limiting. The mobile app Transactions view is simply what we need in web homescreen UI as well.
We added RevenueCat to our app recently and are using the react-native SDK. We have seen the warning “Could not determine price format because price string is incompatible” thousands of times from production users. The majority of instances seem to be in the UK, but we have also seen it in Australia, the United States, South Africa, and Canada. What does this mean? What is the user impact? Thanks,Jacob
Hi, I’m using RevenueCat’s showPaywall() in Flutter on iOS. Plan A: 1-year with 7-day free trial ($89.99) Plan B: 1-year discounted ($39.99), no trial I want users to start the trial, but if they choose the discounted plan during the trial, they should be charged immediately.Instead, RevenueCat on iOS just updates the renewal preference. No charge happens, and if they cancel before trial ends, they’re never charged.Is there any way to force an immediate charge on iOS using the built-in paywall?Thanks!
Hi,I have a separate component responsible for loading the paywall.Purchases.configure is setup in the useEffect in the index.tsx file as that’s the first component it hits.Then, my subscribe button calls a function that loads the paywall.This wasn’t happening prior to updating the the latest expo/expo supported react native that comes built into their latest SDK.For referencePackage.json:"react-native": "0.79.3","expo": "^53.0.11","react-native-purchases": "^8.9.5","react-native-purchases-ui": "^8.9.5", Any suggestions? Thank you.
Hi RevenueCat team, I wanted to share an issue we’ve encountered with experiments and get your guidance on it. Summary We’re testing A/B experiments with our app and noticed that RevenueCat only seems to treat users as “new” (for experiment enrollment) if their original app user ID is in the $RCAnonymousID:xxxxxx format. In our setup, we intentionally avoid using anonymous IDs because they cause issues with subscription transfers, generate transfer events we can’t handle, and make it harder to link subscriptions to known user accounts. Instead, we always create new users with explicit original IDs (for example: {appName}_prod.2283035). Steps to reproduce 1️⃣ Launch the app and configure RevenueCat directly with a custom user ID (e.g., an internal user ID format) as the initial app user ID, without first creating an anonymous user.2️⃣ Observe that experiment variants are not shown in the current offering as expected. ✅ Note: If you start by using an anonymous user (default behavior) an
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.