Discussion and help from anything related to RevenueCat.
Recently active
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
I’m using RevenueCatUI and have configured the restore button action correctly in the RevenueCat dashboard. It used to work fine, but recently the onRestoreCompleted modifier is no longer being triggered when I tap the restore button that i configured remotely Here’s the code:PaywallView(displayCloseButton: false) .ignoresSafeArea() .onAppear { print("paywall onAppear") } .onDisappear { print("paywall onAppear") } .onPurchaseStarted { package in print("onPurchaseStarted") } .onPurchaseCompleted { transaction, customerInfo in print("onPurchaseCompleted") } .onPurchaseCancelled { print("onPurchaseCancelled") } .onPurchaseFailure { error in print("Purchase failed with error: \(error)") } .onRestoreStarted { print("Restore started") } .onRestoreCompleted { customerInfo in print("Restore completed, checking subscription status") } .onRestoreFailure { error in print("Restore f
I am an administrator on this project, and I connected the RevenueCat extension on Stripe. The Stripe App Integration on RevenueCat was selected by the owner of the project. I am still getting this error:{ code: 7103, message: "The receipt is not valid." }whenever I try to post a call to curl -X POST \ https://api.revenuecat.com/v1/receipts \ -H 'Content-Type: application/json' \ -H 'X-Platform: stripe' \ -H 'Authorization: Bearer strp_XXXX' \ -d '{ "app_user_id": "XXX", "fetch_token": "sub_XXX" }'I also tried using server to server notifications, and the same error occured. What could be other possible issues for this to happen? I have not tried deleting the Stripe integration and doing it again yet.Thank you for your replies,Calda
Hi Revenuecat!Actually I have an issue with my setup . I get a grey screen while testing on my phone (android) . I wanted to know If someone can help? And do I should only one product per entitlement ?What I don’t understand is when I test on iPhone everything works (no grey screen )!
There are ‘price_per_period’ options for original & 1st offer price,but not for secondary offer. It is really needed, because I set my offerings in Google Play like this:7-day Free Trial (1st offer) 1st Year 50% discount (2nd offer) And then original price In this case, 1st offer price is of course Free ($0), which is unnecessary.But for 2nd offer, there’s no variable for ‘price_per_month’, so the price in blue rectangle could not be presented with 2nd offer's ‘price_per_month’ price normally. Please fix this issue and implement the new variables as soon as possible.Thanks.
When using V1 API, when we GET the subscriber endpoint, information about purchased subscriptions is returned under the subscriptions object.original_purchase_date purchase_date store_transaction_idvalues are returned, is there a chance you can add original_transaction_id to these values? I think this is a serious need.
Hi everyone,This issue is still not resolved, and unfortunately I haven't received any response so far.Here is my previous question for context: According to the documentation, when a purchase or other important event happens, I should see some logs under the “View Detail” section of the integration, confirming that the AppsFlyer connection is working. However, even after successful trials or purchases, I see nothing under that section.As shown in the second screenshot, the AppsFlyer integration is active, yet the system still tells me to "connect your integration". So what could be the problem here?I’d sincerely appreciate it if someone could guide me on this. Thanks a lot!
Hello, is there a way i can save my own paywalls as a template that I can use across multiple apps. i'm not talking about default paywalls. But a paywall that i made myself. Thank you
Hi,We recently had a customer reach out and report that he can’t successfully complete a flow involving SCA (Strong Customer Authentication) making a purchase through the ios App Store. Specifically:“Each time, I click the necessary buttons, approve the payment through my bank, and then… nothing. The app simply returns to the “Unlock Deglaze Pro” page without any confirmation, and I remain on the free version.Then, several minutes later, I receive a message saying I didn’t approve the payment in time—even though I had already approved it immediately when prompted by my bank.” And then: I have tried all of the suggested methods and nothing works. I have even deleted the card from my phone and it still defaults to that card for payment.From what I can see the app isn't waiting from the response from the bank. As soon as I leave the app to authorise the payment in my banking app the Deglaze app switches back to the previous screen and then I get the payment wasn't authorised in time messa
I’m looking to test my webhook implementation but I don’t seem to be able to find a way to do it?Stripe has tools that let you proxy the webhook to a local server running, which is great. Iterating faster and fixing small issues and testing edge cases with a deployed web server isn’t really feasible imo for developing payment integrations.Does RC not support anything similar? Do I need to to setup something like ngrok myself to do this?
I recently have met two problems with my app:1. I ran an the Experiment about my new purchase page design with two Offerings. And the result was pretty good, so I applied the new page design to all my users in the next app update. But after a few weeks I found the result differed greatly with the Experiment. It differed in the Conversion to Paying, Trial Conversion, Revenue…, which leads to a completely different conclusion.2.I became very confused, so I wanted to check the data with the filter of Offering. And I found no matter what offering I selected, all the data is 0.I wonder if there is anything wrong with the way I use Offering or what.
Even though I haven’t applied any discount on my monthly or annual packages, it’s showing 84% off on my annual plan. I’m using Paywall, and everything is set up correctly. However, this discount is still appearing on the annual plan. I need your help — is this just visible during development, or will it persist after deployment?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.