Discussion and help from anything related to RevenueCat.
Recently active
After renewal of my Apple Developer Membership my paywall stopped showing the products. There was an issue with the membership which led to my app being delisted from App Store for a couple of days. After contacting the support and fixing the issue, the paywall stopped working in production.In the logs I see:ERROR: 🍎‼️ Error fetching offerings - The operation couldn’t be completed. (RevenueCat.OfferingsManager.Error error 1.)There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). More information: https://rev.cat/why-are-offerings-emptyERROR: 😿‼️ There is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used). More info
If I log in then relaunch the app so the RevenueCat SDK initializes with the appUserId populated, the paywalls launch perfectly.If I log out, paywalls are displayed. If I then log back into the same appUserId (or any other), paywalls aren’t displayed.If I launch the app logged out, paywalls are displayed. If I then log in (to the same appUserId), paywalls aren’t displayed.The call to `offerings.currentOffering(forPlacement: “placement_id”)` does return an offering in all cases.The following is executed in all cases, with a non-nil offering:``` Group { PaywallView(offering: offering, displayCloseButton: true) } .onRestoreCompleted { customerInfo in ...```Any ideas what might be preventing the paywalls from rendering?
Hello,I am using RevenueCat Paywalls for Google Play Subscriptions in my App. I can successfully set up and start trial periods in my Paywall, but the price displayed for introductory offers is still the standard price, not the price after conclusion of the trial (which is discounted by X% in my case).In the Paywall editor, using Text field for an introductory offer with {{ product.price }} shows the default price and {{ product.offer_price }} simply shows “free”, not the discounted price after the trial period. ( {{ product.secondary_offer_price }} doesn’t show anything, but I think that’s because I only have one intro offer active )The goal is to show something like “{{ discounted price }} for {{ discounted period }} then {{regular price}} {{period}}}”. How can I achieve this?I am using the latest SDK inside Dart/Flutter.
Is there a way to see the number of times a paywall was shown? Maybe I’m missing something, but I’m totally unable to find this in the dashboard or docs. It seems like a very basic, very important feature to offer.If not, I suppose the intent is to use our own analytics to track paywall shows. In that case, is there any way to determine WHICH paywall was actually shown when using PaywallView with Targeting and Experiments?In the app I’m working on now, we have some targeting rules that show a discount to certain active users who haven’t upgraded, and so we need to know from the RC side which paywall was selected since it is running that targeting.
I’m doing my paywall designs on figma, they are working perfectly with auto-layout on figma. When I export it to Revenue cat with your plugin it doesn’t keep the responsiveness. Some elements look weird (fill is not doing fill in some cases).Another issue that I see is this message: fill disabled: parent's height is set to "fit" . But there’s no parent, and this is done with the propertie fill selected on figma, so should be fill selected on RevenueCat also.How can I fix this?I’ve watched your videoshttps://www.revenuecat.com/blog/engineering/revenuecat-figma-plugin/
I am able to display paywall that looks the same as the paywall on my ios app. But there is no way to close it. on the revenue cat console I can see that a close button is on the right top corner, but on web I do not see it
I’m trying to display a crossed-out “full price” on our paywall to frame a discount on our checkout abandonment paywall. I was able to achieve this by adding a second package that shows the full price with a strikethrough.However, the issue is that tapping this crossed-out price selects it as the active product, which means users could accidentally try to purchase the wrong package when they press the subscribe button.Is there any solution other than hardcoding the text?Hardcoding the full price is not ideal since we support multiple currencies and pricing varies per storefront.For example:Is there a way to display a package purely as informational — like the full price with strikethrough — but make it non-selectable so users can’t tap it?Any workaround or recommended approach would be hugely appreciated. Thanks!Example of the full price with a strikethrough would be the 399,00kr in the image below:
Based on the docs of a web billing paywall + custom success page, it looks like the app_user_id URL param is automatically appended. However, I am not seeing this when testing...the sandbox URL maybe does not know the different of environments, so the ID does not get passed back to complete the test? Is this an issue because I am using a custom paywall also? I am now nervous to launch my renewal subscription to 2k users. I tested on production too, with the same outcome. How can I get the app_user_id?
We’re using Placements for multiple areas in our app, to call different offerings that accord with the placements. And now we’re trying to run experiment for one of the placements, say “onboarding”. When setting the experiment up, I see “All other cases” section, which says :The selected offerings will be the ones delivered:For any placements other than the one(s) aboveFor any new placements added in the future when getting the 'current' offering without using placements Now I’m concerned if this experiment overrides the Targeting(Placements) I set up, other than onboarding.I want the experiment to only affect “onboarding” placements, not the other ones. But in the console it seems like I have to set variants to all other placements, too, and the experiment overrides all my placement settings. Could you please explain how this works? Will the experiment settings specific to one placement affect all other placements, too?
I’m not doing anything fancy. Yesterday I was able to create 3 products just fine and they all show up, but this fourth one I created cannot be found. Even though I’m importing the Products directly from App Store Connect yet I still get these two errors WARN: 🍎‼️ Could not find products with identifiers: ["extension_atlassian_monthly"].There is a problem with your configuration in App Store Connect. More info here: https://errors.rev.cat/configuring-productsWARN: ⚠️ There's a problem with your configuration. No packages could be found for offering with identifier extension_atlassian_monthly. This could be due to Products not being configured correctly in the RevenueCat dashboard, App Store Connect (or the StoreKit Configuration file if one is being used). To configure products, follow the instructions in https://rev.cat/how-to-configure-offerings. More information: https://rev.cat/why-are-offerings-emptyI have triple checked that the Product IDs match exactly `extension_atlassian_mo
I’ve done everything I found online, I made sure all configurations are configured properly, checked app store connect etc. I even signed all the agreements on app store connect (saw this on another post). Still getting Package Not Available.
Hello community, this is a repost (cleaner version as I just found out about the posting rules).I have created a paywall to redirect users from my ios app to web purchase. The issue is it doesn’t show when I have non-apple 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 from paywall, the web page shows the web billing product as intended. My goal is to get rid of apple product here while keeping the paywall workin. Is that reasonable? I’m not sure what I’m missing here.SDK verison: 5.50.1iOS: 26.0Below is the message I get when the offering has no apple product
We’re building a paywall via RevenueCat paywall editor, but can’t find how to show different texts for Android and iOS.We explain to our users in the footer how to manage their subscriptions, but obviously users should see different guides depending on their OS. Is there a way to solve this problem? Thanks.
I created a purchase in production, which includes a trial period. Using the automated email to manage the subscription, I cancelled the subscription, but the trial is still active. This is a revenuecat web billing product, so the product & transaction are not in Stripe.How can I immediately cancel the trial also?
Hi, At RAGA 2025, you mentioned that your new Funnels product would be in Beta around the end of the year. Can I try it? Also: You frame it as “web-to-app”. But I’m more interested in having my normal app onboarding be remotely configurable, A/B testable, etc. So will I be able to use your Funnels product as my normal app onboarding flow (user downloads app, launches app, goes through RC funnel, finally lands on my apps home screen)?Thanks, Toby
RevenueCat's CSS for web Paywall has a global reset that sets font-family: sans-serif on aLL elements using the * selector. This is overriding Font Awesome's icon fonts. When the paywall opens on the web, my icons all turn into rectangles!If this is happening,, it seems to be a bad idea to target the * selector. Unable to find a solution as of yet
Today I am trying to create another entitlement for my project. However, popup is not clickable, yet seems to be disabled. Is there any bug preventing me to create it? Can you check it?
Hi everyone! 👋New to RevenueCat here - I'm building a cross-platform app (iOS, Android, and web) and I've already invested significant time creating custom paywalls that work well for my use case.I was excited to try RevenueCat Paywalls to potentially simplify things, but I ran into a couple of friction points I wanted to share:1. No way to export/import paywall configurationBuilding a paywall in the UI takes quite a bit of time, especially when you're trying to match an existing design. It would be incredibly helpful if there was an option to export the paywall configuration as JSON or XML. This would allow us to:Use AI tools to help generate or modify paywall configs Version control our paywall designs Quickly iterate without manual UI clickingHas anyone found a workaround for this?2. Missing floating/sticky CTA button optionMy current paywall is fairly long (feature comparisons, testimonials, etc.) and I use a floating subscription button that stays fixed at the bottom of the scree
Tried different simulator, tried real device. The product status is “ready to submit”, now I am guessing it’s an Apple’s issue
I saw this post, but it was a bit old. Any hope, now that we are a year later, for a RC <> Shopify integration?
Hi RevenueCat Team,I'm facing an urgent issue with our server-to-server tracking performance for Android.📌 Summary of the Problem Issue: New Android purchases and subscriptions are no longer being matched or attributed in Meta Ads Manager. Timing: The issue began approximately 4 days ago. Status: iOS conversion tracking via RevenueCat remains fully functional. Purchases are successfully validated and reflected in the RevenueCat Dashboard (meaning the transaction is captured), but the data is not resulting in conversions in Meta Ads Manager for Android campaigns.
Hi, not sure why, but in my flutter app even in --release mode, when i click to open the PaywallView it kind of freezing a little bit…Demo with --release:https://drive.google.com/file/d/1RAyQG2awd1Q1bKXJYh3G9GLryo0pcYU8/view?usp=sharingP.s. with `await RevenueCatUI.presentPaywallIfNeeded` is working awesome and there is no freeze. The single issue there is that i want to not have it in a `showCupertinoSheet`…Here’s my code:import 'package:flutter/material.dart';import 'package:purchases_ui_flutter/purchases_ui_flutter.dart';class PremiumButtonLime extends StatelessWidget { const PremiumButtonLime({super.key}); @override Widget build(BuildContext context) { return ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFFBFE737), foregroundColor: Colors.black, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), side: const BorderSide(color: Colors.black, width: 1.5), ), ), onPr
Hello, I’ve created new project, imported the products from the ios app store but not able to create the entitlement as its disabled. Can someone help
Hello, I have a concern which I hope you can address.Our current situation is:We currently handle web based subscriptions using Stripe We want to add the option to purchase subscriptions via the Web Purchase Button on mobile We would like to provide the Stripe Customer Id to the Web Purchase Button checkout flowOur signup flow creates Stripe customers and saves the Stripe customer id to our database, which we then use when creating the checkout link (current web flow). This is something we did after noticing problems with duplicate customers created after passing the user email to the Stripe checkout API and allowing Stripe to create them automatically. (multiple stripe customers for same email)Is there some way to avoid automatic Stripe customers with your checkout flow and have them be assigned manually?This is also important for our existing Stripe customers, which will duplicate if the Web Purchase Button uses the email to create the checkout.Thanks.
My paywall looks fine when I am looking at it in the Revenuecat web browser (in the Paywall Editor section of the website). But when I preview the paywall in the app, my stacks seem to overlap my carousel. Why do they overlap and how can I stop them from overlapping? As far as I can tell from the Paywall Editor, this shouldn't be happening.
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.