Discussion and help from anything related to RevenueCat.
Recently active
I’ve been using RC in my Flutter iOS and Android apps and it’s working beautifully. I’m now looking to add web support w/ Stripe and am hitting a road block. In Stripe, we can create a single product with multiple price points. This seems to be the suggested way to do things, according to RC documentation. However, it appears I should use the product ID to create a single product in RC. This precludes me from putting my Stripe products in different RC packages for the offering.For instance, I have ‘Lifetime’, ‘Yearly’, and ‘Monthly’ packages in the default offering. I added those as price options for the Stripe product. But RC requires the ‘prod_######’ ID to link to a product in Stripe, which doesn’t differentiate for the price options.Should I split it up into different products in Stripe? Or am I missing something?Thanks!
Hi there, We have a meditation app, that has a 7 day free trial, initially we had the paywall after the initial login during onboarding, we noticed we were getting a 20% conversion from app download to trial, we recently updated the app, to remove the paywall during the signup and onboarding. So now users download app and automatically go into the trial, where they dont have to choose monthly or yearly plans until after the 7 day trial…Hope this is making sence…. :-)I have noticed now there are no metrics in the ‘Trial Conversion’ charts, is there a way I can monitor the download to conversion with the new version of the app? Thanks Gordon
Hey all.I have a paywall that just displays a single IAP, which I imported to RC from Google Play as a consumable. The problem is - once that consumable was bought once it can’t be bought again. Checkout/payment google pay widget just doesn’t appear, I can press on CTA button as much times as I want - nothing really happens. My guess is that it can be caused by not consuming consumable but I would think that expected behaviour would be a widget appearing to say ‘You already have this item’, plus from what I see on this forum, it seems that RC automatically consumes any non-subscription IAP from Google Play, so I’m really confused here.Please, let me know if you can help in any way
i have a flutter app about daily horoscope and tarot cards i’ve done sandbox tester and all the other revenuecat settings when i try to test it in my iphone i come up to this error in my logs[configure] DEBUG: ℹ️ Configuring SDK using RevenueCat's UserDefaults suite. [identity] DEBUG: 👤 Identifying App User ID [configure] DEBUG: ℹ️ Debug logging enabled [configure] DEBUG: ℹ️ SDK Version - 4.25.6 [configure] DEBUG: ℹ️ Bundle ID - com.josephmp5.seeryuso [configure] DEBUG: ℹ️ System Version - Version 16.6 (Build 20G75) [configure] DEBUG: ℹ️ Not using a simulator. [configure] DEBUG: 👤 No initial App User ID [configure] DEBUG: ℹ️ Purchases is configured with response verification disabled [configure] DEBUG: ℹ️ Delegate set [offering] DEBUG: ℹ️ Offerings cache is stale, updating from network in foreground [network] DEBUG: ℹ️ GetOfferingsOperation: Started [network] DEBUG: ℹ️ There are no requests currently running, starting request GET /v1/subscribers/$R
Hi community !I am new at developping applications and I am currently using svelte that I will convert with capacitor to be able to use the app on iOs and Android.I did not see any of svelte SDK in the documentaiton, is there a way to integrate RevenueCat in my svelte projet ? Maybe with simple typescript ?Thank you for reading me :)
I'm implementing a subscription system using RevenueCat with React Native Expo and Firebase, utilizing the RevenueCat Firebase extension. My current flow is:User signs in anonymously with Firebase (and implicitly with RevenueCat).User encounters a paywall and makes a purchase.User is redirected to a signup menu with the following sign up options email, Google, Apple.When the users signs up we do a account firebase upgrade from anonymous using linkWithCredential.Issues I'm facing:1. If, after upgrading their account, the user chooses to create a new account with an email and password (now it would not get linked instead this is a entirely new account), the revenueCat subscription appears on both the old and new accounts ( i believe this happens after one of these methods are ran await Purchases.restorePurchases(); await Purchases.syncPurchases();I am not sure why though, do these methods call the firebase cloud function? and should I not call them? and if I should not call them then th
Hello, I am currently developing a feature that sends push notifications before the free trial expires and the subscription begins, using webhooks. The logic is as follows:if (event.type === 'INITIAL_PURCHASE' && event.period_type === 'TRIAL') { // Schedule push notification} else if (event.type === 'CANCELLATION' && event.period_type === 'TRIAL') { // Cancel scheduled push notification}Will the above logic work as intended? I am curious if the `period_type` is correctly transmitted as the current subscribed product, regardless of the event type.
Hi,i want to publish my App in the AppStore. There is everything set up and working in the simulator with the StoreKit (as descripted in https://www.revenuecat.com/docs/test-and-launch/sandbox/apple-app-store#ios-14-only-testing-on-the-simulator).When i give it in the AppStore Connect review and adding the subscription (1st time) then they getting an error - it can’t fetch a product. So thats obviously cause the subscription in AppStoreConnet are notactive now. I don’t get the logic… So, how can i set up my App for productivity so that they can test a subscription that not exists yet?The StoreKit is only for XCode, right? So i nedd to set it up for Sandbox?I Thought i better ask here befor getting rejected 20x times and waiting every time like 12 hours :)Thanks!
I’m trying to use the web sdk in my javascript code but I can’t even pass the initial stage. I’m loading the sdk from unpkg. Here’s my code:<script src="https://unpkg.com/@revenuecat/purchases-js@0.11.1/dist/Purchases.umd.js"></script><script>const api_key = “PUBLIC_API_KEY”const appUserId = “MY_APP_USER_ID” // Replacing with my own useridconst purchases = Purchases.configure(api_key, appUserId);</script>And just this gives me the error:Purchases.configure is not a functionWhat am I doing wrong here?
In EU it seems that Google allows refunds within 48 hours. This means that the user can technically consume the subscription and its benefits for two days and then request accidental purchase refund. Are there any workarounds around this kind of abuse and what should I do to block these users or their in-app benefits?
In the last 24 hours I have been having issues connecting to iOS store with revenueCat. here are the logs, from a “production” bundleERROR: 😿‼️ The operation couldn’t be completed. (RevenueCat.BackendError error 0.) error 21:32:38.863784-0600 IdentaFly WARN: 🍎⚠️ StoreKit 2 product request took longer than expected (83.86 seconds)error 21:32:39.133027-0600 IdentaFly WARN: 🍎⚠️ StoreKit 2 product request took longer than expected (84.12 seconds)error 21:32:40.346549-0600 storekitd AMSURLSession: [2e64_SK2] Session decoder failed. Result = (null); Error = Error Domain=AMSErrorDomain Code=301 "Invalid Status Code" UserInfo={NSLocalizedFailureReason=The response has an invalid status code, AMSURL=https://sandbox.itunes.apple.com/commerce/messages/app/inbox?bundleId=com.identafly.production&guid=00008110-0005046601E2801E&status=1, AMSStatusCode=410, NSLocalizedDescription=Invalid Status Code}error 21:32:40.346623-0600 storekitd AMSURLSession: [2e64_SK2] Task completed with error =
Hi, how to align the dashboard timezone to my timezone? Thank you.
With latest MAUI SDK and .NET 8.0.403 getting the following error on build”```C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\34.0.143\tools\Xamarin.Android.Common.targets(1544,3): error XA4215: The Java type `kotlinx.parcelize.IgnoredOnParcel` is generated by more than one managed type. Please change the [Register] attribute so that the same Java type is not emitted.```Any idea how to have workaround for it?
Hi, The Cordova plugin has this deprecation message: This library is now deprecated. We suggest using our Capacitor SDK instead. (from https://www.npmjs.com/package/cordova-plugin-purchases) How would I use the Capacitor plugin in a Cordova app? I can’t find any instructions about how to do that. I did find https://github.com/ionic-team/capacitor-plugin-cordova-compat, but it says that the Capacitor plugin must have support for the Cordova compatibility layer. I can see that the RevenueCat Capacitor plugin doesn’t have this (see point 10 - the properties mentioned are missing from package.json). It seems to me that Cordova is just simply no longer supported? That’s a bummer. If it is the case, the deprecation message should be fixed to say something like: Capacitor uses should use the Capacitor SDK. Cordova support is deprecated Thanks,Graeme
IOS IAP promo codes are not working in Production app but the RC dashboard is recording each redemption as actual purchases, given that the user gets a prompt for purchasing the product each time they try to redeem the code. strangely I tried to test it out one time but I uninstalled the app and installed it through the redemption process and it worked, just for that one time and then it stopped working again.
Goal: Run campaigns on Apple Search Ads and give them a different Offering and Paywall.Idea: We should be able to use AdServices.AAAttribution.attributionToken() to get the token. I’m assuming this is what the Purchase SDK does. If we have a token then we can request a specific revenueCat offering.Success. If the API finds a matching attribution record, the payload returns attribution=true. If the API doesn’t find a matching attribution record, the payload returns attribution=false. In this case, the 200 OK response is acknowledgment of the receipt of the data request.Question:Does the SDK support this feature without me calling AAAtribution? If I’m calling AAAtribution could that possibly break anything? I’m assuming apple would return the token twice if we both call it.
How would you use targeting to show a unique paywall/offering based on a user’s subscription status? For example, if someone has subscribed at a lower tier, show them a discounted offer to upgrade to a higher tier. Or if someone was once a subscriber and has since churned, show them a discounted offer to resubscribe. I know there are custom attributes that can be passed to RC but this is data the RC already has and should be accessible somewhere (maybe?) but I don’t see it in the targeting rules.Thanks, -O^O-
Hi, I recently see strange behavior on several accounts with purchase transfers to anonymous IDs.This one particular user has renewed his subscription which shows in the User Panel events, but was not given an entitlement. The event also shows couple transfers.Restore purchases does not work for the user as seemingly from the sdk response there is no purchase to restore to.Pictures shows several things that are off. Purchases made but no entitlement Total spend = 0 2 transfers back to back (I’m seeing this on several users)How can I fix this user and give him his entitlements? for context:not in the picture, but the user has an userId alias, not only the anonymous id I’m using the ‘transfer if no active subscriptions’ setting Within in the app I configure RC on app start, but only after a registration I call login with the dedicated userId. Edit: I checked the other user which there has been the transfers, it’s the same user but with different anonymous IDs. I was able to transfer th
The following code in your Android SDK (located in Footer.kt) crashes on some devices: uriHandler.openUriOrElse(it.toString()) { val msg = context.getString(R.string.no_browser_cannot_open_link) Toast.makeText(context, msg, Toast.LENGTH_SHORT).show() Logger.w(msg) } Here is the stacktraceFatal Exception: java.lang.IllegalArgumentExceptionCan't open https://mywebsite.com/terms_of_use.html.androidx.compose.ui.platform.AndroidUriHandler.openUri (AndroidUriHandler.android.kt:36)com.revenuecat.purchases.ui.revenuecatui.extensions.UriHandlerExtensionsKt.openUriOrElse (UriHandlerExtensions.kt:12)com.revenuecat.purchases.ui.revenuecatui.composables.FooterKt$Footer$3$2$1.invoke (Footer.kt:147)com.revenuecat.purchases.ui.revenuecatui.composables.FooterKt$Footer$3$2$1.invoke (Footer.kt:141)com.revenuecat.purchases.ui.revenuecatui.composables.FooterKt$Button$1$1$1.invoke (Footer.kt:213)com.revenuecat.purchases
Do I need to create an introductory offer or a promotional offer in App Store Connect?
Hi, I am facing an issue with the iOS version of my react native app. As the title suggests, when I perform an action in the app which causes the paywall to open (subscription paywall), it closes itself after a second or two of being visible with PAYWALL_RESULT of CANCELLED. It works fine on Android (only tried it in a test environment using open testing) and allows me to step through the process of purchasing a subscription.I created my app with expo but to test on a physical iOS device have used prebuild to create an ios folder which after running pod install has the .xcworkspace file required to run a build in xcode. They physical device I am testing on is signed in to a sandbox account that is linked to my apple developer account.I am using react-native-purchases version 8.2.3 and the same version number for react-native-purchases-ui.I cannot seem to find any other people who have documented experiencing this issue, and there are no warnings or errors thrown in xcode or the metro t
If I post a receipt to RevenueCat when a Stripe customer begins a subscription (as described here), will I receive webhooks from RevenueCat the same as for the App Store (i.e., trial start, payment made, subscription cancelled events)?
Hi!I'm trying to integrate Revenuecat service for a subscription (work on flutterflow). I've already reviewed all the tutorials several times, changed different options, but it still gives an error. I've been trying to solve the problem for a whole weekI'm running it on an Android smartphone via a cable from a PC.HELP PLEASE!. Here are my screenshots.I used the tutorials:https://docs.flutterflow.io/integrations/payments/revenuecathttps://blog.flutterflow.io/in-app-subscriptions-using-revenue-cat/
Hi Guys,I am having an annoying issue in-app purchase payment with RevenueCat.Purchase modal is properly displayed and I can always proceed with payment (). Problem is : about 4 times out of 10, the following callback is not called.Purchases.shared.purchase(package: package) { [weak self] transaction, info, error, other inWhich means we cannot retrieve the transaction info or properly inform the user.I am pretty confident the purchase worked, as the system displays a purchase confirmation an alert (see attached screenshot).The following logs also suggest that both purchase and receipt were properly handled :2023-01-11 19:08:23.124231+0100 XXX[4003:1210683] [Purchases] - DEBUG: ℹ️ SKReceiptRefreshRequest started2023-01-11 19:08:23.232600+0100 XXX[4003:1206279] [Purchases] - DEBUG: ℹ️ applicationDidBecomeActive2023-01-11 19:08:23.675919+0100 XXX[4003:1206279] <SKReceiptRefreshRequest: 0x28161e3e0>: Finished refreshing receipt with error: Error Domain=ASDErrorDomain Code=603 "Reques
I’m using TestStoreProduct to create Packages for my Previews, but I’d like to filter the packages based on the intro discount eligibility. These TestStoreProduct have their introductoryDiscount set to a TestStoreProductDiscount, but when using Purchases.shared.checkTrialOrIntroDiscountEligibility I get .unknown. What does it take to get it to return .eligible in my Previews?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.