Discussion and help from anything related to RevenueCat.
Recently active
Hi everyone,I’m running into an issue where RevenueCat only shows iOS products on my paywall, while Android products don’t appear, even though they are already created and active in Google Play Console.I’d appreciate help confirming whether I’m missing a configuration step or misunderstanding how RevenueCat handles cross-platform products. 🔹 Context App: Flutter (iOS + Android) Monetization stack: RevenueCat Apple App Store (iOS) Google Play Console (Android) Using RevenueCat Paywall Editor 🔹 iOS setup (works correctly) iOS subscriptions and consumables are created in App Store Connect Products are imported into RevenueCat Products appear correctly in: Product catalog Offerings Paywall editor (iPhone preview) 🔹 Android setup (problem)Google Play Console Subscriptions are created with base plans: lucid-fm-weekly lucid-fm-yearly Consumable credit products: lucid_fm_credits_100 lucid_fm_credits_500 lucid_fm_credits_1000 All
For the life of me I cannot figure out how to use virtual currency. I have everything set up in App Store Connect with consumable purchases. Everything is correct with linking to RevenueCat - paywall, entitlement, offerings, etc. I currently have the main offering, but the virtual currency offering isn’t working. Any help would be much appreciated! I’m sure I didn’t provide as much information as I should so if I need to clarify anything please let me know.
i have integrated RevenueCat Paywall ui in expo using the `react-native-purchases-ui` package. i’m trying to show the managment screen on expo dev client on my ios device after subscribing with test packages.await Purchases.showManageSubscriptions()but getting this error `ℹ️ managementURL is nil, opening Apple's subscription management page LOG aa undefined`i have checked the full setup quite a bit of times but couldn’t find any issue and also couldn’t get the relevant information from the docs as well. may be i’m mistaken, please point me to the correct direction if i missed something on the doc.i have checked with await Purchases.getCustomerInfo()✅ customer is there but customer -> `managementURL` is null. ❌and by default it fallback to apple’s default management screen, which keep loading for few mins and later show connection error, try again.just for more context, i have done these steps correctly.Purchases.configure({ apiKey, appUserID });await Purchases.logIn(userId);
I’m trying to set up Meta Ads integration. Android works perfectly fine and I get 200 as a response back from Meta. IOS keeps failing and returning a error message. IOS request body is as follows (this fails):{"access_token": "[token here]","data": [{"action_source": "app","app_data": {"advertiser_tracking_enabled": true,"application_tracking_enabled": true,"extinfo": ["a2","","","1.1.5","Version 26.1 (Build 23B86)","","nl-NL,nl;q=0.9","","",0,0,"",0,0,0,""]},"custom_data": {"content_ids": ["scandoc_premium_montly"],"content_type": "product","contents": [{"id": "scandoc_premium_montly","quantity": 1}],"currency": "USD","order_id": "d389bfdf5ea1d930fa5c6ef4fcd9e3ab179a57fa","value": 4.99},"event_id": "d389bfdf5ea1d930fa5c6ef4fcd9e3ab179a57fa","event_name": "Subscribe","event_time": 1766084555,"user_data": {"anon_id": "XZ54193BB4-03AA-439C-83E6-357CD34D8D5E","em": "ccd793a81dd0c1ca94492edb501f3a7717a40a76c093dff515b2f7b36108576e","external_id": "a28b66322fd410eccb57ba8cfc5616ffde208dba32
Hey, i wanted to implement purchases_flutter (latest version - 9.10.3) for my macos flutter (3.32.8) app. I got the following error:- PurchasesHybridCommon/PurchasesHybridCommon.framework/Headers/PurchasesHybridCommon-Swift.h:286:9: error: Module 'RevenueCat' not found (in target 'purchases_flutter' from project 'Pods')- /.pub-cache/hosted/pub.dev/purchases_flutter-9.10.3/macos/purchases_flutter/Sources/purchases_flutter/PurchasesFlutterPlugin.m:5:9: error: Could not build module 'PurchasesHybridCommon' (in target 'purchases_flutter' from project 'Pods')I was not able to solve the problem and decided to use a native implementation until it’s fixed. Is this issue known ? Cant find anything about. Best regards
I created 2 sandbox accounts from appstore connect to test inapp purchases in testflight then deleted one and singed in the second one in developer-> sandbox account When I test the InApp Purchases it continues to ask me for the password of the deleted account. I've tried to delete the app but this didn't solve the problem. even tho i reset all the settings of my iphone but when I press the Buy button in my app it still display the "deleted" account and there is no option to logout from that account I have tried: close the app and reopen it and do in app purchase, but still popup UI using the old sandbox account reinstall the app and do in app purchase, but still using the old sandbox account even if i dont signin any sandbox account it still shows that deleted test account in purchase ui when i try to purchase subs
Hi!I'm trying to verify if a user has subscribed in the past in order to decide which button to show for a purchase. However, after a reinstallation, it seems that RevenueCat resets the user’s status. I have also tried checking if the entitlements are empty — they always are — so I end up showing the “Start Trial” button even when I shouldn’t. Google Play does not show the trial period because, for this user, it was already used. I’m currently in the internal testing phase. I’m using the latest version of the SDK.Here is the relevant code snippet: fun getButtonText(pkg: Package?, customerInfo: CustomerInfo?): String { if (pkg == null || customerInfo == null) return "Continue" val hasIntroOffer = pkg.product.subscriptionOptions?.any { it.freePhase != null } == true val hasNeverSubscribed = customerInfo.allPurchasedProductIds.contains(pkg.product.id).not() if (hasIntroOffer && hasNeverSubscribed) { return when (pkg.packageType) { PackageType.ANNUAL -
Hi everyoneI’ve configured Meta Conversions API in RevenueCat, but I’m not receiving any Test Events in Meta Events Manager.Important note: I’m currently testing in SANDBOX mode.Here’s what is already set up on my side: Conversions API selected (not App Events API) Datasource ID configured Conversions API access token configured Sandbox Datasource ID configured Sandbox Conversions API token configured “Send events when ATT consent is not authorized” enabled Sandbox purchases / renewals are firing correctly in RevenueCat RevenueCat webhooks are working Despite all of this, no events appear in Meta, including Test Events, after triggering sandbox purchases or renewals.
RevenueCat provides robust subscription management across iOS, Android, and web apps, but the real power comes when this data is integrated with BI tools or CRMs for analytics and business decisions. Here’s how to do it efficiently:1. Use RevenueCat WebhooksRevenueCat supports real-time webhooks for events like subscription purchases, renewals, cancellations, and failed payments. By configuring these webhooks, you can push subscription data to your CRM (e.g., Salesforce, HubSpot) or analytics pipelines instantly.2. Export Data via RevenueCat APIRevenueCat offers a REST API to programmatically access subscription, user, and transaction data. This allows you to automate daily or hourly exports to data warehouses or BI platforms like Tableau, Looker, or Power BI.3. ETL Pipelines for Data WarehousesSet up an ETL pipeline that pulls RevenueCat data via API or webhooks, transforms it into analytics-ready format, and loads it into your BI system. This ensures historical trends, MRR, churn, an
Redemption links are a great step towards gift subscriptions. All that would be necessary is the ability to add a gift recipient email, and possibly the time the gift email should be sent.
Hey everyone,I was reading through this closed thread about tracking revenue by specific Apple Search Ads keywords.Like many of you, I had the same problem. RevenueCat shows Campaign/AdGroup level data, but without keyword-level visibility it's impossible to see which specific keywords are actually driving conversions vs. just burning cash - unless you pay $5k+ for an enterprise MMP.I ended up building something called AppSkale that connects your ASA data with RevenueCat so you can see exactly which keywords are generating revenue and which ones aren't.Just wanted to drop this here in case anyone from the old thread is still stuck on this. Hope it helps!
Hi! I’m using Paywall Builder to design my app’s paywall and recently added a video component for the first time. When I open the paywall in the app, the video starts playing, but after a few seconds the entire video area goes dark.If I close and re-open the paywall, the video then plays normally in a loop with no issues.Has anyone experienced this before, or know what might be causing the video to go dark on the first load? Any guidance would be appreciated!I use the following template paywall:
I made my paywall from a template and it worked normally in my expo dev build on my phone. I was tweaking it little by little and publishing changes while checking the disign updates on my phone. But after making the last edit i cant publish the paywall, It says Paywall valifation error but i bare changed anything big. i only changed some font, border sizings and maybe some colors. It doesnt even show where the errors are. Ichecked every component and everything is fine. I also tried duplicating the paywall and now it gives me an Internal server error. Has anyone ever encountered this?
Running into two issues hereWhen I have an image in the paywall body (in a ZStack with my close button in this case) and my paywall content in the footer, I believe the footer content should draw on top of the image, this is also what the paywall editor shows. When I run this paywall though, I see the footer strictly not overlap with the image. The image instead seems to be pushed upwards. Interestingly the overlay gradient is also not visible in this case When I have the image instead as the background of the Paywall itself, it is vertically centered on android devices, even though I expect it to be at the top. The paywall editor and iOS paywall both show the image at the top of the screen as I expect.Please see screenshots below. This issue is making paywalls unusable for us which is quite frustrating Issue #1 -- paywall editor shows footer drawn on top of the image as expectedIssue #1 -- android paywall footer seems to push image upwards Issue #2 -- paywall editor showing background
when i am adding a sale countdown timer then if i set the target date then i am getting error paywall validation failed.
I’m creating a paywall using template and when trying to assign offering in the general settings of the paywall only (default and test_offer) are available. I’ve assigned a paywall before but now when trying to assign new one I can’t do it. I’ve connected products with google play subscriptions.And I’ve enabled APIs and Permissions.purchases_flutter: ^9.10.1
It seems that API v2 has been in development for a while, but I only just discovered its existence yesterday. I have 2 questions:What’s the best way to follow progress on its development? I don’t see any sort of CHANGELOG in the docs, or any blog posts about it. As I’ve started playing with the API, I have feedback, ex: missing expandables. What’s the best way to provide feedback about it?
I’m using the “Badge” feature on packages, but it’s being cut-off as shown above. On the paywall editor it’s not showing this of course. I’m using React Native (only tested on iOS)
duplicate paywall to this project does not work, it gives a internal server error.
Hello community,I have created a web paywall to redirect users from my ios app to web purchase like. The issue is it doesn’t show when I have web billing products in the offering and when I add an apple product the paywall shows with the paywall in the app with apple product information and when I navigate to the web purchase page it shows the web billing product as intended. My goal is to get rid of apple product here while keeping the paywall working. I’m not sure what I’m missing here.Thanks
Hi I am having a bug in the paywall maker.Basically the Icon doesn’t change color when the other package is selected.Instead the other Icon stays selected. No idea why or how to debug.The package itself changes but not from the perspective of the user
Hi, can we please have the Telegram notification similar to Slack/Discord integration. Thanks.
I was testing plan upgrade on iOS in sandbox, and there seems to be inconsistent results from revenueCat log and delegate call.I was subscribed to plan_casual then purchasing plan_pro.After successful purchase, I can see in the console log that plan B is purchased “INFO: 😻💰 Purchased product - 'plan_pro'The delegate purchases(_ purchases: Purchases, receivedUpdated customerInfo: CustomerInfo) got called immediately after, however with product identifier plan_casual.After about 1 minute, storekit payment queue got update with the correct product id “Plan_pro”, then in about another 5 seconds, revenueCat delegate got called with product id “plan_pro”.
Hi, I was doing a size analysis of my app, and it looks like the Flutter SDKs are around 10 MB each, which seems a bit much. Can someone on the RevenueCat team look into this? From `flutter build ipa --release --analyze-size` RevenueCatUI.framework 10 MB RevenueCat.framework 10 MB
I want to confirm: in RevenueCat webhook events, is app_user_id guaranteed to be included in the aliases array? Same question for original_app_user_id.For this scenario:Fresh install, new $RCAnonymousID:123 created, app_user_id = $RCAnonymousID:123 User taps restore (no logIn() call in this session) RevenueCat merges a previously known ID with this new anonymous ID. The previous ID could be either $RCAnonymousID:567 or john123 (set via logIn() in a prior session on another device).At the time the webhook event fires:Is app_user_id the previous ID ($RCAnonymousID:567 or john123)? Does aliases contain both the previous ID and the new $RCAnonymousID:123?I'm pretty sure, but want 100% confirmation.
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.