Discussion and help from anything related to RevenueCat.
Recently active
We're building an iOS and an Android app that uses RevenueCat to manage the subscriptions.There's a free trial period and we'd like to send users an email 2 days before their free trial period ends. It sounded like maybe one of the webhooks could do that, but we weren't sure. Is it possible with a webhook or is there another method you suggest?
I'm currently evaluating whether adding a lifetime (non-consumable) in-app purchase is as simple as adding a new non-consumable one-time purchase to my paywall, or if it's more complicated.Here is the current technical situation of the appApp already uses RevenueCat + RC paywalls. The app currently has no login functionality, so each installation is an anonymous account.My requirements for adding a lifetime optionI want users to be able to use their lifetime purchase across all of their devices. I will be adding an account system in the future and want to make sure that the in-app purchase can only be used for one account.A few years ago I implemented a one-time purchase in an iOS app (without RC though) and I remember it was quite a struggle because people couldn't restore non-consumable items across their devices.So my first question is:Is it possible for users (on both iOS and Android) to restore non-consumable purchases across devices? I couldn't find any information on this.If so,
I know (now) I can add different subscriptions to different groups. Which will restrict users into a group. However as the option of using different groups was not known my app has all subscriptions within the same group.Subscription A $15Subscription B $10In my app Subscription B is only offered if certain criteria are met and the relevant paywall is displayed. Unfortunately as both Subscriptions are in the same group users can through their Apple Account > Subscriptions. Move to Subscription B. I know now I can prevent this with different groups but I want to stop it.In AppStoreConnect I see the option to turn off “Streamlined Purchasing”. Is this enough to prevent moving between subscriptions in the device settings and will force users to need to make purchases through the app so its logic can be applied? As I can not move product ID’s between groups. I have to set up a new ID “Subscription C”. In the new group. My thinking is to remove Subscription B from sale. This will then no
We currently have partnerships with several clients, and we want to grant them premium access. This would provide 5 tokens each month for them. However, I’m unsure if granting entitlement is the right approach. If I select a one-month option, it appears it will not auto-renew. On the other hand, a lifetime option also doesn’t seem to allow for monthly auto-renewal. What is the best way to implement a monthly auto-renewable subscription for free? Thank you.
I’ve been seeing a ton of these events come through and they often lead to cancelation and lost revenue. How can I make sure this isn’t due to some misconfiguration in RC or Apple, or my code set up?
Hi,We tried to simulate a communication failure with our webhook endpoint and we noticed that failed events are no longer resent.How can we handle this case correctly? Is there a way to manually send a failed event?Also we not found in the documentation if there is an api rest that allows us to recover failed events. There isn't, is that correct? Thanks
We have been using RevenueCat for close to 5 years now, so really would love to know what LTV/paying customer is over that period but the prediction explorer currently limited to 24 months of data.
Hi, We have a subscription structure in Stripe that has one product and multiple SKUs inside that product with variations of subscription lengths/discounts/etc. Currently in the events data from RC we’re getting product id but we’re unable to attach the info about a particular SKU that was purchase at transaction level. We have decided to insert this info in the subscriber parameters but that’s not ideal for downstream analytics. Have anyone had a similar problem and found a way to pass that info with the transactional data?
As we continue to promote and market our app, we’ve been seeing an increasing number of subscribers, yet the MRR seems to be going down slightly.Our churn rate is low, we’ve had days without any churn, and increasing subscriptions, yet MRR went down We have both monthly and annual offerings Our main market is not based in USD, are exchange rates taken into consideration at any point?We want to clarify this calculation so our marketing and growth team have better tools to make decisions.
Currently, we are using pure StoreKit2 to detect user’s entitlement. var purchasedShops = Set<Shop>() //Iterate through all of the user's purchased products. for await result in Transaction.currentEntitlements { //Don't operate on this transaction if it's not verified. if case .verified(let transaction) = result { //Check the `productType` of the transaction and get the corresponding product from the store. switch transaction.productType { case .autoRenewable: fallthrough case .nonConsumable: let productID = transaction.productID guard let shop = Store.identifierToShop[productID] else { continue } // Not sure such checking is required. I guess no harm to do so. if transaction.revocationDate == nil { purchasedShops.insert(shop) } default: preconditi
Hi, I'm working on Bubble (nocode) and here's the API call setup I did following the RC doc (https://www.revenuecat.com/docs/api-v1#tag/customers/operation/subscribers) to pass the user id into my app so that it replaces the id that RC provides automatically and randomly.Is something missing because this is what I think when I initialize. I don't want that, I want the users in my app to use the unique id they get in my app, to use it in RC.
Why are some of my subscriptions canceled due to a billing error? Am I doing something wrong on my end or does that mean the user’s credit card isn’t working or something? Some of the transactions are going through and others aren’t so I’m not sure why this is happening.
In Google Play, my free trial is not showing up for my monthly subscription and I can’t figure out why. Do I need to recreate the app or somehow re-sync the settings from Play Store?
Here’s how I combined RevenueCat subscriptions with usage-based credits without overcomplicating things (perfect for AI tools, AI wrappers API calls, or limiting features): Subscriptions via RevenueCat: Users pick weekly/monthly/yearly plans. RevenueCat handles Apple/Google payments. Credit Tracking in Firestore: We store credits in Firebase. Example: "Monthly plan = 1000 credits." Auto-Sync with Webhooks: When someone subscribes/cancels, Custom Written Revenuecat Webhook Handler in nextjs deployed on vercel extension updates Firestore. Credits auto-add/reset. Deduct Credits via Backend: Every API call from ios app hits our backend → checks Firestore → subtracts credits. IOS App: Firebase Auth and Reveneucat login with firebase userID Backend 1: Communicatig with 3rd party services, spends credits from user’s firestore record. Backend 2: Webhook handler for revenuecat, add credits to user accounts on new subscriptions, resets and adds new credits on renewal etc. I wrote all handl
So, I am following the recommendation to “Don’t set emails as App User IDs” in:https://www.revenuecat.com/docs/customers/identifying-customers#tips-for-setting-custom-app-user-idsand instead am setting the App User ID to their UID. But this means in my RevenueCat dashboard, the users are identified by strings like “McXAayHL1qVtFLSm74phQAqZNGx1”.Is there a way to follow your recommendation but still display users via their email in the dashboard?
When a user first enters our app, they are setup as an anonymous user and get RevCat’s anonymous ID. This happens via using `Purchases.configure(revcat key)`. Later should they login with a named account from our system, we use `Purchases.shared.logIn(customID)` to update the RevCat user with our customer identifier. The issue is that after doing this and checking `Purchases.shared.customerInfo()` for the ID, the initial anonymous ID is returned rather than the custom ID supplied at login. Should the login method not change the user’s ID when checking their `customerInfo`?
I'm using Flutter to develop my application, but I ran into a problem when I tried to incorporate a revenue cat subscription feature into my Android app. This problem is specific to Android, not iOS, so the error message I'm seeing in the debug log is “Error loading offerings info: PlatformException(3, The device or user is not allowed to make the purchase., {code: 3, message: The device or user is not allowed to make the purchase., readableErrorCode: PurchaseNotAllowedError, readable_error_code: PurchaseNotAllowedError, underlyingErrorMessage: Error when fetching products. DebugMessage: Billing Unavailable. ErrorCode: BILLING_UNAVAILABLE.}, null)”I have followed all the instructions they have given me, and I have made sure to do so, but I'm still having trouble. If someone could assist me, I would be very grateful.
Hope someone can help.In my Android app (which I’m still developing, so in test / sandbox mode etc), RevenueCat purchases seem to work okay. However, after a purchase, in onCompleted, I’m trying to get EntitlementInfo from provided CustomerInfo, and it’s (EntitlementInfo) always null.I’ve also attempted to get EntitlementInfo from CustomerInfo using the RecieveCustomerInfoCallback, a few moments after the purchase completed (so, not immediately after), and EntitlementInfo is still null.Also, just to add, it’s a non-consumable product.Any suggestions?
I’m trying to understand the new refund request functionality that RevenueCat provides, as announced here: https://revenuecat.releasenotes.io/release/yTKyk-we-now-handle-apple-refund-requests-automatically. My question is around the reporting of consumption. The article states:The degree to which a customer consumed an in-app purchase (for example, someone six months into an annual subscription would have consumed that for 50%) Is this the only mechanism RevenueCat implements for reporting consumption to Apple — calculating the fraction of a subscription that has elapsed? It seems that Apple would already trivially be able to calculate that from their records given the time of the refund request? My app delivers user credit for both consumable IAPs, and over time for auto-renewing subscriptions. Usage of these credits costs me real money, so I’m certainly concerned about how much has been consumed at the time of a refund. Does RevenueCat have any solution for reporting metered usage s
Currently the firebase integration sends both trial conversions and renewals as the same event to firebase (purchase), and this is a problem when it comes to running google ads. In google ads, we wish to see how many trials converted from a campaign, but since this isn’t a separate event, renewals and trial conversions are combined and its not possible to see the number of new paying subscribers that we obtained by a google ads campaign. Can RevenueCat please add the ability to also send the the trial converted event as rc_trial_converted ? This would be a great help. Below is the current Firebase event mapping. Currently trial conversions are mapped to ‘purchase’.
I just got my first app approved in the App Store (thank you RevenueCat for all your help with this!) My goal is a subscription-based model: people should subscribe for $4.99/month with a six month free introductory period. I set that up in App Store Connect and it looks right: But in the App Store, it shows up with a price of $4.99, not as a subscription: Upon further inspection, I see that on the “Pricing and Availability” page, I set a price for the app of $4.99: At the bottom of this screen, there is a “remove app from sale” link. But I think that removes it from the App store entirely?I now notice that I can also change the price from $4.99 to $0.00. Is that the right way to go?Thanks for your help. I am navigating this stuff for the first time and it is confusing to me.
I’ve seen several postings here saying that failure to save a paywall template is due to not filling out all the fields. I have checked and double checked and somehow cannot find the missing empty field that is apparently causing the dreaded yellow “There are validation errors that need to be fixed before submitting”. I attach screen shots of each section. What am I failing to see? Thanks so much.
Does RevenueCat support React native for web ?I do not see a guide on how to implement it. I testedPurchases.configure({ apiKey: process.env.STRIPE_API_KEY, })and I get a Cannot read properties of undefined (reading 'setupPurchases')
I have done everything mentioned in this documentationhttps://www.revenuecat.com/docs/integrations/attribution/facebook-ads#4-testing-the-facebook-ads-manager-integrationHowever, during sandbox testing, after perform a subscription, this is what I am getting from RevenueCat I re-check my facebook integration again. They look fine to me In the above setup, my Sandbox App ID is same as App ID. I obtain App ID from Facebook.Also, my Sandbox Client Token, is same as Client Token.Is this a correct setup?In this project, I have enabled both Facebook and Apple AdsI am not sure why RevenueCat says “You have no integration enabled”Can RevenueCat customer support help me on this? Thanks.
User events in the dashboardWhy is this user and one like it shown with status Expired in the Customers tab in Dashboard? I got a successful renewal event from the conversion, no expiration event was received nor sent according to logs, this is what the user history shows, yet I see these two with the status “expired” … ?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.