Discussion and help from anything related to RevenueCat.
Recently active
“Active Subscribers” and “Total Revenue” on the Customers pagedo not match “Active Subscriptions” and “Revenue” on the Overview page, which are higher here.(App Store only. New app.)Why?
Hi,I am experimenting Webhooks integration for purchases events callbacks in Sandbox environment in AppStore. For every purchase transaction I do, I see that there is an attempt to trigger the Webhook in the Event Details, but I only see Retrying and Failure states. I do not see any logs about attempting the endpoint for any event at the API service level. In case of Failure, the response does not have any detail to convey the reason for failure. I have tested the endpoint separately using other clients and see that the endpoint is up and running and returns 200 status code. Not sure what is the issue here and where can I find more information to debug this situation.Any help is greatly appreciated.Thanks
I am implementing App Store subscription (promotional) offers in an app, and I need to implement a check similar as the checkTrialOrIntroductoryPriceEligibility SDK function.This article here suggest I could use an existing entitlement as a means to validate that, however an entitlement could have been acquired in another platform, thus tricking me into promoting an offer Apple will not honor.Apple suggests instead:You can check whether the receipt contains any existing or expired subscription purchases to identify these current or lapsed subscribers.Which seems pretty simple, but the SDK doesn’t seem to expose this kind of information - wether a specific product identifier has ever been purchased on iOS. The raw ReceiptParser also has no public parsing methods I could use. I would have to resort to manually parsing the local receipt, which makes no sense when using RevenueCat.I also see a property called in PurchaserInfo called allPurchasedProductIdentifiers. Could this be used to det
Hi there!I'm experiencing some delay on the PurchaserInfo data right after login. I'm using the Transfer Purchase behavior from https://docs.revenuecat.com/docs/restoring-purchases. Problem: PurchaserInfo returns without active entitlements right after Purchases.login()Steps to reproduce:1.With a anonymous user, buy a subscription 2. Now the anonymous user has an active entitlement on PurchaserInfo 3. Log in (Purchases.login()) on a account with no active entitlements 4. Call Purchases.getPurchaserInfo() to check if user has active entitlements Result: The recently logged in user has no active entitlements, even though they should (because of the Transfer Purchase behavior). However, if I call Purchases.getPurchaserInfo() again after 2-5 seconds, then the PurchaserInfo returns correctly, with the user having the active entitlement.To fix this I'm using addPurchaserInfoUpdateListener, so I can observe better the PurchaserInfo changes. But is this delay after transferring a purchase norm
We are launching a new app that requires users to sign in with their Apple ID (sign in with Apple). Are there any best practices for using the RC purchases SDK in combination with sign in with Apple. One thing I was wondering was if we should rely on the Apple Identity Token as our User IDs or the anonymous user IDs vended by RC. Any insight would be greatly appreciated.
Hi, we are trying to block restores for users, we would like to only associate 1 apple id to our own account, the problem we are having is that on Android(having previously configured RC to block transfers) , if we login with two different accounts but the same Google account , RC will let us buy the same product , in the other hand on apple , if we login with two different accounts of our own but the same Apple id, it will not buy the product although the purchase completes ( we know this is the intended behaviour), what we intend to do , is only link one apple o android account to our own account , i already checked the docs and other post but this different behaviour between apple and google seems strange, we hope you can help us understand better Thanks for your time.
Hi there!I'm testing the login/logout system of the RevenueCat SDK on Flutter.I'm using the Transfer Purchase behavior from https://docs.revenuecat.com/docs/restoring-purchases.Problem: PurchaserInfo entitlements returns empty after Purchases.logOut(). Purchases.getPurchaserInfo() only returns correct after I refresh the app and call Purchases.setup().Steps to reproduce:1. Enter app, call Purchases.setup() (without appUserId). 2. Do a subscription purchase 3. Now with the user with subscription, call Purchases.login(). The user now has a provided app id and has the subscription entitlement. 4. Call Purchases.logOut(). Now the user has an anonymous id. 5. Call Purchases.getPurchaserInfo() to retrieve the user's entitlements and check if the user has subscription. Result: the user has no entitlements, even tho the user bought the subscription on that same device.But…6. Refresh the app and call Purchases.setup(). Now when Purchases.getPurchaserInfo() is called, it returns the subscription
This is for iOS.Is it possible to provide the paying user with a consumable In-App Purchase at the time of their initial subscription and subsequent renewals? For example, the user signs up for a 3-month subscription. At that moment we give him 10 apples. Three months later when his subscription renews, he gets 10 more apples. If there’s not an easy way with RevenueCat or iOS, then I’m sure I can think up a workaround using some Booleans and Timestamps - figured I check first.Thanks!
Hello, I’ve faced an issue when implementing a view on iOS that allows the user to switch between hour subscriptions plans when testing in sandbox. I have the current set-up for the subscriptions:Only one subscriptions group that is made of 4 subscriptions: A level 1 monthly subscription => entitlement “Premium” A level 1 annual subscription => entitlement “Premium” A level 2 monthly subscription => entitlement “Classic” A level 2 annual subscription => entitlement “Classic”Since all are in the same subscription group, I should be able to only have 1 subscription active at all time. The issue is that the user can manage to get 2 entitlements at the same time for this subscription group.To do so he simply have to:Take the level 2 annual subscription (at this step he unlock the Classic entitlement) Change to the level 2 monthly subscription (I’m still having the annual plan but at the end of the year, I will change to monthly period) Upgrade to the level 1 monthly subscriptio
Hello! I am confusing about configuring consumable products. I added directly all consumable products to products tab in dashboard and do not want to attach to any offerings or packages. Is it not get any problem?And in "purchaseProduct(...)", do I need check transactionState for each case or RevenueCat automatically handle and I only give user Coins(for example) Thank you so much for your help!
In my “Cohort” report, when looking at the retention of our yearly subscribers, it shows retention rates above 100% (see attached screenshot). This seems like a good thing...I just need to know what it means.Is this extra people who are resubscribing who have subscribed previously (not a renewal)? Or does anyone know how to interpret that? Maybe I’m completely misinterpreting? Thank you in advance for the help!
We were recently testing our RevenueCat integration in the Google Play Store sandbox and had a user that was stuck in a terminal Active state even though their account had been cancelled on the Google Play Store side.It turned out that what happened was that the user started their subscription at 8:00 PM and then cancelled at 8:23 PM. Had their subscription of monthly_plan cancelled due to a billing error2021-09-07 8:23 PMStarted a subscription of monthly_plan2021-09-07 8:00 PMThe only problem was that the webhook for both of these events were sent at 8:23 PM and had the exact same ms timestamp for their `event_timestamp_ms` so we had no way to determine which happened first.My main questions are:Is this related to the fact that these were sandbox events? Are sandbox events not guaranteed to go out when the event happens? Even if this is related to them being sandbox events, is there a way to differentiate which event was applied first?
Lately I received multiple users who already have an active subscription from Google Play, then signed out and created a new account and from what I understand they won’t be allowed to subscribe with the same billing / Google account.However, I received a webhook call from RevenueCat that he subscribed successfully in the new account with a $0 bill.This is the webhook call back I have received from RC:"presented_offering_id": "plus","price": 0,"price_in_purchased_currency": 0,…"transaction_id": "GPA.3333-*** And both records has a unique transaction id under the same Google Play account, here’s records:I am not sure what’s happening, it’s the third times in the last 2 weeks.Please advise. P.S. I am adding a price check on the webhook function, rejecting new subscriptions with price=0, but not sure any side effects and the user still receive a “successfully subscribed” message on the frontend, so from the user’s angle it will be confusing.Thank you.
Hi Community, I just setup my webhook endpoint for collecting data and was wondering if it is possible to retrigger events from Revenuecat or is there an archive of all events from an App? Thank you
Hi, I have some users with email addresses and also some with keywords.When I create a custom customer list with the logic ‘Email is not null’ or ‘Keyword is not null’ the filter does not pick up all instances of keywords and returns nil for emails. Any tips or workarounds for this?Thanks so much
Even though I made a purchase, the membership seems empty. that's why I got a rejection from Review center. At this point I looked at the redirects on the page but it doesn't seem to work.First of all, when I connect it to the ios14 china storekit, everything works correctly through the store kit. Purchases are accurately reflected to RevenueCat. Everything is OK. But things change when I publish the app on TestFlight. We are doing the subscription process, we also get the warning that it has been done successfully. but when we query via RevenueCat right after, we cannot access the membership information. We go and check the revenuecat dashboard, likewise we see that AppUserId is not assigned there. more interestingly, when we try to make a purchase again, we get a warning that you already own this item. Please help
From the documentation of common fields sent in Webhook payloads, we get that the aliases key should a) always be an Array of Strings, and b) include all IDs associated with the user, including their “main” user ID.All app user ids ever used by the subscriber. However, we’re getting some events that send “aliases”: null in the payload, which is causing some errors on our end.Can we get some clarity on this? Is null an expected value? If so, can you update the documentation please? And if it’s not an expected value, can you help us understand why we’re getting null?
Hello,We noticed that the Google Play API usage by the service credential we have assigned to RevenueCat more than doubled for us over the last few days.It used to be around 2 requests/second till September 4 but after that it has shot up to 4 requests/second peaking at 6 at times. The specific API is androidpublisher.SubscriptionPurchasesService.GetWe haven’t seen anything similar in our other metrics. Can anyone at RevenueCat take a look at this increase?Thanks!
Hello!We just launched an update of our app yesterday that uses RevenueCat to manage subscription IAPs. I can see some of the summary information at the top of the dashboard display how many active trials there currently are, along with a revenue summary, etc. But when I click through to view any of the charts, all the data is still empty. I understand that some charts are delayed by 7 days, like the trial start chart, but all the other charts are empty too. I’m also able to see the recent transactions coming in at the summary list at the bottom of the dashboard.Looking at the Charts guide (https://docs.revenuecat.com/docs/charts#monthly-recurring-revenue), it seems like most of the data should populate right away:“All charts are generated from the current snapshot of purchase receipts saved in RevenueCat and work independently from any in-app usage. This means that your charts are always up-to-date, without having to rely on any client-side event logging.”So just wanted to confirm if
Hi I have a game built in C++ and using SDL2 for the application framework and was wondering if it would be possible to use RevenueCat? Would it be possible to bridge the SDK with aObjective-C++ class?ThanksDenis
Hi everyone,Is it possible to configure 2 different webhook URLs? We would like to have the sandbox requests to our staging environment and the production requests to production. Otherwise we would need to route the request first to be sent to the appropriate environment on our own.Thanks for your input on this!
Hello, We want to switch our purchase system from Unity IAP to Revenuecat. But we have some questions about subscription system. 1- How to get subscription local prices (monthly price / introductory monthly price and weekly) from Revenuecat SDK? For example, we were get the price data with Unity IAP like this:if (m_GooglePlayStoreExtensions.GetProductJSONDictionary() .TryGetValue("om_sub_vim", out string skuDetails)) { ControllerUIMainMenu.Instance.SetLocalizedIntroductoryPriceMonthly(JsonUtility .FromJson<SkuDetails>(skuDetails).introductoryPrice); } 2- How to start Purchase Subcription request with Revenuecat SDK?For example, we can start a purchase subscription request with Unity IAP like this:m_Controller.InitiatePurchase(m_Controller.products.WithID("on_weekly_vip")); Thank you!
is there summary statistics that show how many sales of each product? I see a big list but no count for each product.
What is the eligible conversions data, as it differs significantly from started trials?
Hello, I don’t have any conversion on facebook ads, even though the IDFA are sent to Facebook on Revenue Cat and the traffic only comes from Facebook ads. I have read the docs but could not find a proper full example. Here is what I have done (swift).I have tested where to call FBSDKCoreKit.AppEvents.activateApp() (before or after ATT request) Option 1:@UIApplicationMainclass AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { FBSDKCoreKit.Settings.isAutoLogAppEventsEnabled = false FBSDKCoreKit.AppEvents.activateApp() Purchases.automaticAppleSearchAdsAttributionCollection = true Purchases.configure(withAPIKey: "XXXXXXXX") Purchases.shared.collectDeviceIdentifiers() Purchases.shared.setFBAnonymousID(FBSDKCoreKit.AppEvents.anonymousID) if #available(iOS 14.5, *)
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.