Discussion and help from anything related to RevenueCat.
Recently active
Hello, I am currently building my app using Kotlin Multiplatform, and users can select multiple themes within the app. However, the Paywall template I am using seems to default to the system theme.I was wondering if there is a way to programmatically set the theme of the Paywall template. I couldn’t find a way to pass theme information in the Paywall builder. I can create a custom Paywall, but I am not looking to implement that soon as it would be a bit more efforts.Thank you!
Hi, I’m currently integrating RevenueCat into my Android app and encountered some unexpected behavior when handling subscription cancellations. After clicking “Unsubscribe” in the Play Store and then opening my app: • The activeEntitlement.unsubscribeDetectedAt property is returning null.• The activeEntitlement.willRenew property is returning true. I was expecting unsubscribeDetectedAt to indicate when the unsubscription was detected and willRenew to be false since the user unsubscribed. Could you help me understand how these properties are expected to behave in this scenario? Specifically: 1. When should I expect unsubscribeDetectedAt to be populated?2. Why does willRenew remain true even after the user unsubscribes?3. Is there a recommended way to detect unsubscriptions promptly? Any clarification would be greatly appreciated. Thank you!
I know there was a question related to this same issue but I do no see any resolution to it:User pauses subscription - we receive SUBSCRIPTION_PAUSE (OK) End of billing cycle subscription enters paused state on Google Play - we should receive EXPIRATION with reason SUBSCRIPTION_PAUSE as per docs https://www.revenuecat.com/docs/integrations/webhooks/event-types-and-fields#cancellation-and-expiration-reasons but NO event is ever received. (NOT OK) When pause period ends we receive RENEW event (OK)This has been tested on sandbox where the subcription renewals and pause time periods are considerably smaller (for pause we’ve tried 5 minutes, 10 minutes and 15 minutes but no EXPIRATION event)
I am using RevenueCat to manage my Google Play Subscription billing on my Android app. I am NOT using Amazon to make my purchases at all. However, when I start the app, I get logs that points to Amazon purchases:Rejecting re-init on previously-failed class java.lang.Class<com.revenuecat.purchases.amazon.listener.ProductDataResponseListener>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/amazon/device/iap/PurchasingListener; Caused by: java.lang.ClassNotFoundException: Didn't find class "com.amazon.device.iap.PurchasingListener" on path My confusion here is that I am not using any Amazon-related purchases. In my gradle file, I just have the purchases library and that’s it. When I set the store on RevenueCat configure, I set it to Google Play Store. implementation("com.revenuecat.purchases:purchases:7.0.0")
Hello all,I am very new to Revenue Cat, I have integrated subscriptions in both Android and iOS and it is working fine. I now want to provide users a 3 day trial to use the app and then purchase the subscription.I have setup the promotional offer in App Store connect and Google Play console.Does Revenue Cat automatically detect the trial from respective stores or should I follow some additional steps to set it up? If automatic then How long does it take so the trial to be reflected in Revenue Cat and how to verify that? A little hint on how to test the trial in Android and iOS?Thank you
hello I am trying to connect play store with revenue catI have followed the instructions and uploaded the credentials but I am getting thia error at the info tip X Permissions to call subscriptions API✓ Permissions to call inappproducts API✓ Permissions to call monetization API what may be the cause of that problem? thank you
HiI’m using latest Revenucat iOS SDK v5.7.1 & presenting full PaywallViewController screen using below codelet controller = PaywallViewController(displayCloseButton: true)controller.delegate = selfcontroller.modalPresentationStyle = .fullScreenself.present(controller, animated: true, completion: nil)On implementing above code, Paywall screen shows NavigationBar with white background color, also it shows close (X) button in black color on top right corner on white background navigation bar.Question is1. How can I change white navigation bar color to clearColor &2. How can I change close(x) button color to white color ?
We transfer our mobile application datas from Revenuecat to Adjust. When we checked our datas: There were no inconsistency on events such as trial_started and trial_cancelled etc. On the other hand, we detected that Adjust shows more user than Revenuecat on renewal events in install_date. But, Adjust loses many customers on event_date. We suspected that there may be loss on old customers while investigating event_date. Yet, it is quite awkward that install_date duplication. Anyone who faced that problem and any suggestions to solve that issue? Many thanks
I have one subscription group with four subscriptions Premium YearlyPremium MonthlyBasic YearlyBasic Monthly First when i buy a subscription ( For example: Basic Monthly) then i upgrade to another subscription (Premium Monthly), the webhook sends the event for the product change and renewal. In the webhook, i hit the developer api v2 to check the active entitlements for the user and i get Basic Monthly and Premium Monthly both as active subscriptions. The api only returns one correct entitlement after some delay .The way we have the webhook setup is that we fetch the active entitlements from the revenue cat itself and we sync the data with our own database according to how the docs recommended it but this two entitlements keeps causing issues when we are trying to sync the data. This issue only happens on iOS. Is this a known bug with revenue cat or how can we solve this?
So, this is the workflow for me - on app start I initialise Purchase sdk with anonymous user:Purchases.configure(configuration);Upon successful login, I login - Purchases.logIn(credentials.user.sub);The question is (and I couldn't find it in the docs) - on app restart, will subsequentPurchases.configure(configuration);overwrite legit user back to anonymous ?User session is long lived, so there will be no login flow on app restart, and I'm wondering will .configure(configuration) respect existing user id (considering logout wasn't called)?
I am a little lost here and could use some pointers/help. I have a Flutter application which has Ads in it. I have no concept of a “user” in my app. I would like to add the ability to remove Ads. I created all the required store setup for both Google and Android. I’ve added a button in my app to purchase the product I setup (I have only the one product) to remove Ads. This all works as expected on both Android and iOS. I need to implement the “restore” capability in my app per the Apple App Store requirements. I have questions as I can’t seem to figure out exactly how to do this.Since I use anonymous accounts wouldn’t the user, upon removal of the app and reinstallation get a new anonymous ID? If so, how does the system know they already purchased my product? How is this done typically, should I show both a Purchase and a Restore option in the app? Seems like there should be a way to ‘detect’ that the user already made a purchase and if so provide the ‘restore’ option...and if
Hi All,I tried everything. I signed all Business Agreements with Apple. I deleted and added subscriptions and products umpteen number of time but always I get null value back in revenue cat from Apple and thus a grey screen in my mobile app. I double and treble checked the keys and secrets, and checked the In-App purchase connection status, everything is correct.Can someone guide me, or help me what I can do? My app is not going ahead because of that?Regards,Aman
I have a question to understand the subscription flow better. If user takes a 7 day free trial for an annual subscription, does the system prompts the user if they are willing to continue subscription or not once the trial ends ?I see my users not getting converted from trial to revenue. I believed the user was cancelling the subscription manually from settings. But if they don’t do it, does the system prompts once the trial ends or does it deduct money immediately from the user ?
I would like to set a custom attribute with a string I get from UserDefaults().This will NOT set the custom attribute:let cam = UserDefaults.standard.string(forKey: "cam")!Purchases.shared.attribution.setAttributes(["cam": cam])This will set the custom attribute:Purchases.shared.attribution.setAttributes(["cam": "abc"])let cam = "abc"Purchases.shared.attribution.setAttributes(["cam": cam])let cam = UserDefaults.standard.string(forKey: "cam")!Purchases.shared.attribution.setAttributes(["cam": "abc"])Purchases.shared.attribution.setAttributes(["cam": cam])UserDefaults combined with setting the attribute through a variable will not work, except if the attribute is previously set using a literal string (last example).What do I miss here?Is it a bug?Is it Swift or RC related?
I would like to know how many users will likely churn in January 2025 based on their subscription status.How can I identify the number of users likely to churn in January by finding users who:Have auto-renewal disabled AND Have subscriptions expiring in January?
Hello,I’m setting up a subscription with 7 days free trial & 1 year period on Android & iOS, using Flutter SDK. I want to show on the UI wether the subscription is:not subscribed in trial (& active) active cancelled (& active) expiredAll states work except cancelled (when the subscription is still active but won’t renew). Upon my app startup, I call this code: Purchases.invalidateCustomerInfoCache(); _customerInfo = await Purchases.getCustomerInfo(); Even though RC’s debug logs print “😻 CustomerInfo updated from network.”, I still get cached entitlements whose “willRenew” field is always true.I added an overflow menu action to execute this code whenever I want to see if calling it multiple times works (as I read here & there on the forum), it doesn’t.The only way to get an up to date information is to call Purchases.restorePurchases(), but this shall only be called upon user request.Is there a way to get up to date CustomerInfo upon app startup?
I created a Multiplatform app in Xcode. This app has two platforms, iOS and macOS, and users can use it at the same time no matter which platform they purchase on. Currently, the paywall can be displayed correctly when debugging on iOS, but I don't know how to display the paywall on macOS. How can I make the paywall display on the macOS platform app so that users can make purchases?When switching to My Mac, a code error is displayed:Value of type 'some View' has no member 'presentPaywallIfNeeded'
Hi, Not sure if I am missing something, but I have a problem with Grants.I was of the idea that when we assign a grant to a user on a subscription it automatically gives them that period for free. I wanted to use grants in scenarios where my customer had an issue or are unhappy with something I can give them a week, month or quarter free to show good faith.What we have noticed is that when I do so it creates two parallel plans, One for the users subscription and one for the grant but the user is actually charged by appstore. Thank god this was a test scenario and wasnt a paid user, it would have been embarrasing promising them a grant and then getting charged. Is this a code issue or can this not be done the way I though it would be? My Devs are saying that you can only ‘Grant’ users whose plan has expired or who dont have a plan … not sure if that actually serves the purpose. ThanksSunny
So I am able to use RC to complete purchases of a product.Here’s what happens once a user has purchased a product. → I grab their Revenue Cat ID, and extract their latest transactionIdentifier→ An API request is made with this info to our backend server to process their order. Here is a code snippet of how I am using the React-Native SDK to get their transaction Id. On the backend I want to verify their Revenue Cat ID has indeed made the purchase based on the provided transactionIdentifier. What’s the best way to do this?
my app is almost done, the big problem that i am facing is Revenuecat is not working and showing gray screen when i have adding the pricing string and when i am not adding the pricing string the page is loading but is still not executes the purchase, i am unable to find the problem , please HELPi have tried the flutterflow document on revenuecat, i have tried youtube videos on it and revenuecat documents on checklist for errors and i have checked playstore for any missing or wrong entries.
I downloaded the subscription key for an in-app purchase from Apple into a file named 'SubscriptionKey_5S5U32JN84.p8' However, when I try to upload this file I get this error: “Invalid file name, it should be SubscriptionKey_XXXXXXXXXX.p8. A file name with any other prefix could be a private key for a different Apple service. Please validate you are uploading a Subscription Key.“ I also tried renaming the file to ‘SubscriptionKey_XXXXXXXXXX.p8’ but got the same error. What am I missing?
When you stop an experiment, do developing values like those for “Realized LTV” and “MRR” continue to update for those who entered the experiment or are they frozen at when the experiment stops running? I have an experiment running currently that I’d like to stop (to run others) but would prefer to continue to see how developing numbers like those for LTV and MRR evolve over time. Is there any way to restart an experiment that has been stopped or pause an experiment or turn the enrollment % down to 0%?Thanks, -O^O-
I want to know if it’s possible to set a dynamic price, custom price, price with additionals, etc.I’ll try to explain what I’m doing.I have a shop that sells burgers for $9,99. Users can choose a burger and add soda, mayo, ketchup, remove anything else that they don’t like in the burger, like onions.So the burger is $9.99, soda is $2.00, mayo is $0.30, ketchup is $0.20 and to remove onions we charge an extra $1.00.The subtotal is now $13.49. The user has to be prompted to pay with Apple Pay this amount.How can I prompt this price without registering all the possibilities for products and prices in Apple Connect? Or even adding all possible features and crafting a multiple offerings in RevCat for every combination? I don’t want to have to do that.It’s not possible I’m the only one with this use case, I can’t find anything of this sort online.This is for a single app purchase, but can I do this also for a subscription?Say I have a service with different tiers, but users in lower tiers wa
We use a Firebase extension to automatically add revenuecat events to a Firestore collection and it’s been working great for a long time already.Now we’re adding a Firebase “dev” environment to run some tests, in the form of a second google cloud project that mirrors the production one.Is there any potential issue or things to watch for, in linking the same revenuecat project to both the prod and dev Firebase environments?
At this stage in the google set up doc it says to download the public json key to your computer. In the gif there is no guide to doing this. The json key that is downloaded to your computer automatically seems to be the private key. I can’t see anything specific about downloading the public key or how to do that. What am I missing here? Thanks!
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.