Discussion and help from anything related to RevenueCat.
Recently active
Hi team,Great work on shipping the new charts for Paywalls 🚀For macOS we use RevenueCat paywalls, but can only see macOS data for chart type “Paywall Encounter”, not Paywall Conversion, Paywall LTV, or Paywall Abandonment.Questions:Is there a timeline for these chart types support macOS? If so, will these charts provide historical data for SDK 5.51.1+ users once they are functional?
``` mcp Error: Error calling create-product: Unknown error. HTTP status: 422 Full response: object: error type: parameter_error message: A duration is required to create a Test Store subscription product retryable: false doc_url: "https://errors.rev.cat/parameter-error" param: simulated_store_durations Expected parameters: project_id (string) *required* - ID of the project store_identifier (string) *required* - The store identifier of the product. - For Apple App Store products this is the product ID of the subscription or in-app product. - For Google's Play Store, it should follow the format 'productId:basePlanId' for subscription products and SKU for one-time purchase products. - For Stripe, the product identifier that always starts with "prod_" - For Amazon, if it's a subscription, the term SKU of the subscription. If it's a one-time purchase, the SKU of the product. - For Roku, this is the product identifier of the subscription or one-time purchase product. Example: com.revenu
Our paywall looks broken if the user has increased the iOS accessibility dynamic type sizes for fonts to the largest values. Adding the .dynamicTypeSize modified to the RevenuCat Paywall SwiftUI view does not seem to have any effect. Any way to set this to specify the allowable ranges of font sizes?
2 days ago I could be able to use the paywall logic in the way to change the CTA text based on the chosen package’s intro offer existence. But now I am not able to do it because the UI doesn’t let me do it. I strongly believe this is bug. I am sharing the screen recording of it.
Hi team,I’m using RevenueCat Paywalls with a Flutter app and Google Play subscriptions.I have configured an introductory offer in the Play Console (₹150/month initially, then ₹250/month). This works correctly in the Google Play purchase screen.Revenuecat always displays the base price (₹250/month), not the introductory price.I cannot find any variables for:intro price discounted price offer pricingSo currently my paywall shows ₹250/month, while Google Play shows ₹150/month for eligible users. This creates a mismatch and poor user experience.Questions:Does RevenueCat Paywalls support displaying introductory pricing for Google Play subscriptions? If yes, which variable should be used to show the intro price? If not, is this a known limitation or planned feature?Would appreciate clarification, as this directly impacts conversion and pricing transparency.Thanks.
If I create or modify a paywall to support the new Rules and Custom variables, and publish it, what will users with older versions of the SDK see?In my example Paywall, I have multiple headings that are hidden/shown by some Rules, based on custom variables. What happens then? Will all my layer/components appear at once?Also there seems to be a new ‘Hide this component’ feature in the Layers list. Is that supported by all versions?I’m not sure I understand fully the implication of using new features that require a new SDK, and what will be the outcome. The editor has this mention: SDK version detailsThe minimum SDK version required has increased due to Rules.We've seen this paywall served to users on older SDK versions who may see your default paywall if you publish these changes. But I don’t quite understand what it implies. My ‘default’ paywall will look ok if the ‘hide’ feature is supported. But it will be a mess of duplicated content if not.
Hi RevenueCat Team,We’re currently using RevenueCat to manage subscriptions in our app and had a question regarding real-time updates to CustomerInfo.In our setup, we sometimes grant promotional subscriptions via our backend (outside the client app). While this works correctly on RevenueCat’s side, the updated entitlement is not immediately reflected in the app UI. At the moment, users need to restart the app (or trigger a manual refresh) before the new subscription state is visible.We’re looking for the best practice to ensure the UI updates in real time when CustomerInfo changes(Flutter) due to backend actions.Specifically:What is the recommended way to listen for CustomerInfo updates when changes are made externally (e.g., via backend APIs)?Our goal is to avoid requiring users to restart the app and instead reflect entitlement changes immediately.Any guidance or best practices would be greatly appreciated.Thanks in advance for your help!Best regards,
I’m trying to allow multiple users in my app (each with their own account) to subscribe using the same Apple ID.I’ve set up multiple subscription groups in App Store Connect and matching offerings in RevenueCat. In my app, I’m selecting different offerings depending on what’s already been purchased.But no matter what I do, I keep getting:“You’re currently subscribed to this.”Even when I should be hitting a different subscription group.In RevenueCat I can see the correct entitlement (like a different plan/group), but the app still seems to be using the default offering.Has anyone successfully implemented multiple subscriptions under one Apple ID with RevenueCat? Would anyone be willing to help me? I am more than willing to pay for help at this point 😞
Hey Revenue cat TeamHas the following issue been resolved = What is the solution for this bug ?
Hi,we are implementing the recommended flow for syncing subscription information on our backend with RevenueCat, as described here: https://www.revenuecat.com/docs/integrations/webhooks#syncing-subscription-status.Each time we receive a webhook, we call the RevenueCat API to fetch the current information about the user’s entitlements. Based on that response, we determine whether the user should have premium access.We are using the v2 Get Customer endpoint. After receiving a webhook, we call this endpoint and check the active_entitlements field in the response.I have a question regarding consistency:Does RevenueCat guarantee that, after receiving a webhook, calling the API will always return up-to-date entitlement information?For example, if we receive an expiration webhook and then immediately call the API, is it guaranteed that the active_entitlements field will already be empty because the user’s subscription has expired and the entitlements have been removed?Thank you for your help.
For my customers, I keep running into issues where the customer’s free trial is ending and they are set to convert, but almost all cases where this happens, there is a billing issue, I wonder if its some set up I am not doing properly or its an issue.Please advise as this is affecting my revenue, thanks!
Been trying to fix this and looking around for solutions, but I still can’t figure out how to make the RevenueCat paywall UI on iOS / Apple reflect the selected package correctly. When switching between monthly and yearly, the text, button, and trial-related UI do not update the way they should. Yearly has a free trial, monthly does not, but the UI does not properly reflect that difference. Not sure how this is supposed to be configured in RevenueCat for iOS.
When can we expect support (react native) for the newly announced monthly subscriptions with a 12-month commitment?
When certain settings are disabled to prevent double counting (double spending), install and usage events also stop working. This seems to be caused by disabling options on the Datasets page. Additionally, parts of the documentation appear outdated and need revision.There are inconsistencies between the configurations available in Meta Apps / Meta Events Manager and the current RevenueCat documentation.Tech Stack React Native (Expo) react-native-fbsdk-next react-native-purchases Relevant DocumentationFrom RevenueCat docs:https://www.revenuecat.com/docs/integrations/attribution/meta-ads#setting-device-attributesRemove Meta SDK Purchase TrackingMake sure to remove all client-side tracking of revenue. Since RevenueCat sends events for all revenue actions, tracking purchases directly with the Meta SDK can lead to double counting in Meta Ads Manager.You can disable automatic In-App Purchase event logging from the Meta SDK or from your Meta app dashboard:Settings > Platform > Log I
Hi team, filing this here rather than a support ticket so other users hitting the same opaque 400 can find it.TL;DRThe create-webhook-integration tool schema served from https://mcp.revenuecat.ai/mcp contains a null literal inside a type: "string" enum. Anthropic’s own endpoint accepts it silently, but any strict JSON Schema validator (e.g. Volcengine Ark Coding Plan with Kimi/GLM/Doubao models) rejects the entire request with 400 InvalidParameter and an empty param field — which is effectively undebuggable without writing a capture proxy.The Offending Schema"environment": { "anyOf": [ { "type": "string", "enum": ["production", "sandbox", null] }, { "type": "null" } ] } The null in the third enum slot is invalid (parent type is "string") and redundant ({"type":"null"} sibling already handles nullability).Minimal Reprocurl -X POST https://ark.cn-beijing.volces.com/api/coding/v1/messages \ -H 'x-api-key: <ark_key>' \ -H 'anthropic-version: 2023-06-01' \ -H 'content-type: a
Hi,I’ve been exploring RevenueCat Funnels, and the feature looks really promising.However, I’m not sure how to handle branching the flow based on the user’s state.As part of my funnel, I include authentication. I redirect users to my app where they can sign in or sign up, and then I send them back to the funnel.What I’d like to achieve is showing different steps depending on the user type:Newly registered users Existing users who already have an account but haven’t purchased a subscription yetFor each group, I want to display different content. For new users, I’d like to introduce the app in general + show subscription benefits. For existing users without a subscription, I want to focus more on subscription benefits.When redirecting users back to the funnel, I could include a query parameter like ?new_user={true|false}, along with state and app_user_id. However, I don’t see any option in the funnel settings that allows branching based on these parameters.Is there a way to achieve this
I see that has no real solution. So I wonder if any guide of “how-to” already exist somewhere?
Hi I updated subscription pricing for our products inside app store connect - however the paywalls are not updating with the new pricing? I tried refreshing the app, but still shows the older price, and when trying to pay it still goes to the older price Even though in app store connect - it is fully updated to be the new pricing on our subscriptions. I wanted to try and delete and add the products again but since we had transactions → it did not work as you cant delete products with existing transactions.
Hi everyone,I wanted to bring up a feature request that I believe would be highly valuable for many developers using RevenueCat for subscription management.Currently, there’s no native integration with TikTok Ads for conversion tracking. As TikTok continues to grow as a major user acquisition channel, especially for mobile apps, the lack of direct support makes it difficult to accurately attribute subscription events and optimize campaigns.Right now, developers have to rely on workarounds like server-side events or third-party attribution tools, which can introduce complexity and potential inconsistencies in data.It would be incredibly helpful if RevenueCat could support TikTok Ads integration in a similar way to other ad networks, enabling: Subscription and purchase event tracking Better attribution for ad campaigns Simplified setup without needing custom pipelines Improved ROAS optimization for TikTok campaigns Is this something that’s on the roadmap, or has anyone found a clea
I have used one of the pre-made paywalls and changed some stuff but basically I have setup up monthly and yearly subscription with 7 days freeA couple of things I cant get my head around. 1. Previously the button was showing 7 days free but now it says “continue” only2. The text colour of the button shows white on a dark background in draft mode, but once deployed it shows black on a dar background which is not very visible at all. Can I please get some help with this?Is it possible to see the code of the paywall?
I'm using revenuecat with paddle integration, I would like to implement a subscription downgrade logic that calls the paddle API since revenuecat doesn't support paddle subscription upgrade/downgrades through its sdks (I have already asked about this on github months ago without any answer https://github.com/RevenueCat/purchases-js/issues/182#issuecomment-3519530263).I was wandering if I make a PATCH request to https://api.paddle.com/subscriptions/{subscription_id} (check https://developer.paddle.com/build/subscriptions/replace-products-prices-upgrade-downgrade) with full_next_billing_period proration mode to downgrade, what webhooks revenuecat will trigger. And also, will revenuecat immediately change the user entitlement or wait until the current period ends since the user is only charged at the end of the current period with full_next_billing_period.Basically, does revenuecat rely on paddle subscription state or transactions or both to manage entitlements/revenuecat customer subscri
When using Custom Variables, what is the order they are applied, or priority?If I have 2 variable states that are fighting each other, which one wins? Can that order be modified?For example, my first variable shows heading_1 when true, but my second variable hides heading_1 when true. Who wins? Can I decide?What about Selected Package, and Active Offer, do they take precedence?There doesn’t seem to be a way in the Editor right now to preview more than one variable or selected package or active offer at a time. That would be very useful, if not essential.
I have identified an issue where RevenueCat does not send complete app event data to the Meta Conversions API.Below is a sample request body obtained from the RevenueCat → Meta Ads integration:Reference: Meta Conversions API documentation – https://developers.facebook.com/documentation/ads-commerce/conversions-api/app-events{ "action_source": "app", "app_data": { "advertiser_tracking_enabled": 1, "application_tracking_enabled": 1, "extinfo": [ "i2", "com.my.app", "", "1.0.0", "26.3.1", "", "en-US,en;q=0.9", "", "", 0, 0, "", 0, 0, 0, "" ], "vendor_id": "5E153361-2630-4731-9D6F-XXXXXXX" },Subparameter Name RevenueCat Sends to Meta extinfo version YES app package name YES short version NO long version YES os version YES device model name NO locale YES timezone abbr NO ca
Hello RevenueCat Support, I checked the RevenueCat dashboard, but I’m unable to find any option to upload or change the app icon for my projects. I looked in the App Settings and project overview pages, but I do not see any icon/avatar upload setting.Could you please let me know where exactly this option is located, or if this feature is only available for certain account types?I would appreciate any guidance or screenshots showing where to update the app icon.Thank you for your help.
Hi there - I know that some of the charts features are still Beta. But we put a lot of work into a exit paywall cascade and right now I can’t even see if people vsiting the paywalls at all.Firebase doesn’t count events. Our devs say that’s just not working for exit paywalls.So I hoped the paywall charts within RC give me numbers. But when I a look at Paywalls where I have firebase data AND rc paywall chart data I see that the numbers of the rc paywall charts (“paywall encounter”) are way off compared to firebase.Like: Firebase says 90 visits and RC paywall chart says 3.So if numbers that I can doublecheck with a second source are way off I don’t have much trust in the rc numbers for the exit paywalls, for which I don’t have a second source.I just wanted to know: Is that a common issue? Are others experiencing the same: firebase data and rc paywall charts not matching at all?Thanks a lot for any responses. So I can try to figure out if there is a solution for this issue.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.