Get help with webhooks, third-party integrations, and attribution providers.
Recently active
Hi RevenueCat Support Team,I’ve recently integrated the Meta Ads integration as per your documentation and triggered several purchase events while running the app in development mode. However, I’m not seeing any indication that these events are being sent to Meta—neither in the RevenueCat dashboard nor on Meta’s side.A few additional details: I haven’t implemented the ATT prompt yet, so users have not granted tracking permission. From the docs, it appears that the IDFA is optional and RevenueCat should still be able to forward events without it. The app is using RevenueCat’s anonymous ID and I’ve verified that purchases are correctly being tracked in the RevenueCat dashboard.Could you help clarify:Are events from development builds or sandbox purchases forwarded to Meta Ads? Is ATT permission mandatory for Meta Ads event forwarding in practice, even if IDFA is optional? Are there any known limitations or delays when viewing these events in the dashboard or Meta Events Manager?Let me kn
“Track new purchases from server-to-server notifications” is enabled and is being ignored. I can’t use my custom id to query the API!!!
Hey everyone,I was trying to get a list of customers that tapped on an SearchAds Basic ad, but can’t find any attributes that identify a user who tapped on such an ad (just SearchAds Advanced).The issue with the current charts is (I think) it doesn’t create monthly cohorts based on when the user was first seen (for filtering SearchAds > Unspecified to get the Basic revenue). The use case: Compare SearchAds Basic expenses vs revenue for a specific month.To be as accurate as possible, I want to filter for users who tapped the ad, AND installed the app for the first time in a given month. I don’t want to attribute users who were already using the app before tapping on the ad. I use the First Seen dates for this. Any ideas for workarounds or where the attribute is? I could also set it from inside the app, but I don’t want to mess up the tracking in the charts. We track SearchAds Basic and Advanced, just Basic is hard to find in RC. Thanks!
Hello, is there a way to add an entitlement to a customer using the rest api v2?
Connection failed!We couldn't establish a link to the App Store. The App Store Connect API credentials are not valid or do not have sufficient permissions to list apps. Make sure the key has at least the App Manager role.I keep on getting this error and I 100% put everything in the right way. And I'm not sure why.
Hello,I am integration Branch with RC and I found this in RC documentation:https://www.revenuecat.com/docs/integrations/attribution/branch#optional-set-a-separate-identity-in-branch-and-revenuecatQuote:If you prefer to keep a separate user identity between Branch and RevenueCat, set a $branchId Attribute in RevenueCat. If set, RevenueCat will use this identifier for Branch events instead of the App User Id. I like that aproach and I would like to set $branchId with a user id from Branch, what how do I get it?Could you please tell me which field I should use to set $branchId?PS: if I don’t change/override/use any custom identity ids, so what comes from BranchSDK is not changed, I just want to pass it to RC as $branchId. Thanks!
Hello,I recently try to setup the Google Analytics firebase integration to catch all purchase for the marketing teamI have a question as we are not using firebase for anything else that notification and analytics, does I really need to setup the firebase extension just to send analytics ?In the firebase page integration, I am seing the event sent to GA, with 204 status responseex { "app_instance_id": "xxxxxxx", "events": [ { "name": "rc_expiration", "params": { "affiliation": "APP_STORE", "app_id": "XXXXX", "environment": "SANDBOX", "event_id": "1d4cfa0c-6ab5-4e14-b6a0-4b23ac30f90a", "expiration_at": 1751542603000000, "expiration_reason": "UNSUBSCRIBE", "original_app_user_id": "XXXXXX, "original_transaction_id": "2000000922156146", "period_type": "NORMAL", "presented_offering_id": "XXXX", "product_id": "XXXXX", "purchased_at": 1751542423000000, "transaction_id": "2000000954063064"
Hi everyone! I'm just getting started with programming, and I'm currently trying to integrate RevenueCat with Supabase to control user access based on subscription status.I created an Edge Function in Supabase that receives the webhook from RevenueCat and tries to extract the app_user_id from the payload to identify the user and update their data.The issue is: even though I can see the app_user_id correctly in the request body, I still get a 400 error saying "user_id not found". 🥲Since I'm new to all this, there's a good chance I'm missing something simple — I'd really appreciate any help or guidance! serve(async (req) => { try { const body = await req.json(); const entitlement = body.entitlements?.premium_access; const event = body.event; const userId = body.app_user_id || body.subscriber_attributes?.user_id?.value || body.customer || body.aliases?.[0]; if (!userId) { console.error("user_id not found"); return new Response("user_id not
As per the subject, how is the USD value calculated for the webhook ‘price’ field if the purchase is made in a different currency? Building for both the App Store and Google Play. Thanks
I’m currently integrating OneSignal with RevenueCat, and I’ve run into a situation that I believe others may have faced as well. I have two separate apps: one for iOS and one for Android. Each app has its own distinct OneSignal App ID, as required by OneSignal for platform-specific notifications.However, in the RevenueCat dashboard under Integrations > OneSignal, I only see the option to enter a single OneSignal App ID. Since my iOS and Android apps have separate OneSignal projects (and therefore different App IDs), I'm unsure how to properly configure the integration to support both platforms at the same time.My main goal is to ensure that RevenueCat sends subscription events to the correct OneSignal app depending on the platform, so I can properly target users for notifications on each OS.Thanks in advance for any guidance or suggestions!
Hello!Is there a way to track shipping fees charged to our customers via Stripe Payment links in RevenueCat? We want to use RevenueCat as a central location to track all sources of revenue and this would be very helpful. Thank you for any help with tracking all of our revenue!
This is from an expo 53 react native implementation.The errors[StoreKit] [b86562ee] Request failed with error Error Domain=StoreKit_Shared.StoreKitInternalError Code=7 "(null)"[StoreKit] [3e167164] Request failed with error Error Domain=StoreKit_Shared.StoreKitInternalError Code=7 "(null)"[StoreKit] [b86562ee] Error updating Storefront: Error Domain=StoreKit_Shared.StoreKitInternalError Code=7 "(null)"Error Domain=ASDErrorDomain Code=509 "No active account" UserInfo={NSLocalizedDescription=No active account}occurs when calling // Set API key based on platformconst apiKey = Platform.select({ios: process.env.EXPO_PUBLIC_IOS_RC_API_KEY || 'appl_xxxxxxxxxxxxxxxxxxxxxxxxxx',android: process.env.EXPO_PUBLIC_ANDROID_RC_API_KEY || 'your_android_api_key_here',});// Enable debug logs in developmentif (__DEV__) {await Purchases.setLogLevel(LOG_LEVEL.DEBUG);}// Configure RevenueCat with anonymous IDawait Purchases.configure({apiKey,entitlementVerificationMode: Purchases.ENTITLEMENT_VERIFICATION_MO
Hello RevenueCat community,I'm facing an issue with my app "Flight Canvas" being rejected by App Review. The reviewer attempted to make in-app purchases but encountered errors.App Review Feedback:"When validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple's test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code 'Sandbox receipt used in production,' you should validate against the test environment instead."Current Situation:The app works perfectly in TestFlight with sandbox purchases RevenueCat logs show successful offering fetching and subscription recognition Customer info shows proper entitlement activation in testing Using RevenueCat for all IAP handling (no custom receipt validation)Question:Is there a setting in RevenueCat I need to change to handle this specific App Review scenari
My revenuecat id is “app99d60b4027”at the sandbox mode is working fine butI got this error when try to purchase on “live mode”3D Secure 2 is not supported for the specific transaction.I was try both of my credit card, all is same error.Step to reproduce:1. goto https://pay.rev.cat/lkdqglryuptczslh/userprodtest-0012. choose package and fill credit card form3. press “Pay Now” buttonnote: userprodtest-001 just a random mocking idResult:Thank you.
Hello!We use RevenueCat as our app subscription management platform and as a single location to monitor our revenue across iOS and Web (Stripe).From iOS, users can only purchase subscriptions, and everything displays as expected. However, from Web (Stripe), users have multiple options for purchasing our product. Some Stripe Payment Links combine non-renewing products with renewing products (subscriptions), while others are only have non-renewing products.When someone follows a Stripe Payment Link to purchase multiple non-renewing products, then in the RevenueCat Dashboard, we see multiple separate “One Time” purchase line items, and all revenue is properly tracked.However, when the Stripe Payment Link includes both non-renewing products and a subscription, then in the RevenueCat Dashboard, we see only 1 “New Sub” line item, and only the revenue from the subscription is tracked. The rest is untracked. It’s all a bit inconsistent and confusing. Thank you for any help with tracking all of
Hi there, I'm reaching getting the error message below upon trying to add more webhooks:“This project has reached the max number of webhook integrations.”I have 5 webhooks currently and will need a lot more to handle all the different event types. What is everyone's approach to this? I haven’t seen anything relating to this issue. In the docs it does not say anything about the limit. Any insights would be appreciated. Thank you!
Prevously my appsflyerID in revenue cat events integrations would be set to the user ID as I did not set it manually. As of March 25th this stopped happening and the integration is broken as the appsflyer id is required for it to work. Why did the appsflyer IDs stop auto populating?
Hello, I did everything correctly via integration Firebase, but my conversions in Google Ads doesn’t have a value so ROAS can’t optimise How can we solve this issues? Thanks
In linked post, the answer to this question remained unclarified, I would basically like to ask for a follow up on that question:The `store_transaction_id` in CustomerInfo of v1 REST API , is it the unchanging ORIGINAL transaction ID for all platforms? Or does it change after renewals?
Hello, the flow I’m trying to implement is the following:✅ user might or might not have downloaded and logged in on the app ✅ user visits my website and by following a stripe payment link they purchase a subscription through a stripe checkout session ✅ stripe sends the purchase to revenuecat through server to server notifications ✅ revenuecat creates an anonymous user with an anonymous user id ✅ user gets in the app, logs in with their email (same email as they used for stripe) ⚠️ what i’d want to do at this point: call loginUser with revenuecat, a user with the same email is found and they have a stripe subscription attached, in the app i get identified as that user and with access to the revenuecat offering.i think there are two blockers i’m not finding a solution for:revenuecat is not setting the email field in the user metadata (of the anonymous user it creates) when it receives the server to server notification, this is somewhat necessary because it’s the only way i have to connec
Hey everyone, I am asked to input the Sandbox Api Key here: Any idea where I can find it?
In my previous apps, account creation wasn't a feature, so I relied solely on RevenueCat's SDK to determine subscriber status.However, my new app incorporates an account system powered by Firebase Authentication. I plan to integrate the RevenueCat Firebase extension to facilitate this. My goal is to grant premium access to users consistently across Android, iOS, and web platforms.Therefore, I'm wondering if Firebase Auth custom claims can serve as the sole mechanism for checking a user's subscription status. My concern is that if a user signs in with their premium app account but uses a different Apple ID or Gmail (not linked to the original purchase), the RevenueCat SDK might incorrectly return 'false' for their subscription status."
Hi,I have configured Stripe + RevenueCat integration based on the documentation, but I do not see any subscriptions created in my RevenueCat test data. The IDs appear to line up (see screenshots), and server-to-server notifications are enabled with ‘Track new purchases from server-to-server notifications’ turned on. The RevenueCat app is installed and visible in Stripe. I have mapped Stripe product IDs (from the Default Sandbox) to product IDs in RevenueCat. However, even when a successful subscription is created in Stripe, nothing is received by RevenueCat.If someone could help me understand what might be going on and what steps I might take to debug, it would be much appreciated!
I’m using FlutterFlow’s built-in RevenueCat integration to create a custom paywall UI with two cards: one for the monthly plan and one for the yearly plan. The official docs only show how to configure a single subscription option (hard-coded) in the Purchase action. I need to: Let the user tap either the monthly or yearly card to select that plan. Then tap a single “Buy” button that initiates the RevenueCat purchase for the plan they selected. But in the Purchase action’s Package ID field I only see a way to bind one static package or choose “Package by Identifier,” and I don’t see how to point that at a dynamic App State or Action Output variable. I can’t figure out how to wire up my selectedPlan string (e.g. "myapp.monthly" or "myapp.yearly") into the Purchase action so it charges the correct plan.What have you tried so far? Created two tappable cards, each updating an App State selectedPlan string to either the monthly or yearly package identifier. Added a “Buy” button with Reve
Is there a workaround to the problem described here?
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.