Get help with webhooks, third-party integrations, and attribution providers.
Recently active
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 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'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
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
Hi.We've set up the RevenueCat + Appsflyer integration.We built a Fire OS build and uploaded it to Live App Testing.We're successfully processing payments and subscriptions, and we can see the data in RevenueCat.We can also see that the data has been successfully sent to Appsflyer.BUT we can't find this data in Appsflyer.What are we doing wrong?UPDATED!Appsflyer replied that the problem lies in the request data between the servers (RevenueCat → Appsflyer).I don't know how to fix this.
Hi everyone,We’re investigating a sudden failure on our AppsFlyer integration and wanted to check whether anyone else has seen the same pattern.Context:AppsFlyer integration was working before failures started after the RevenueCat incident on Apr 18, 2026: https://status.revenuecat.com/incidents/10dkhmtf8155 RevenueCat’s incident update mentioned delayed third-party integration events and replay of queued requestsWhat we’re seeing:after the last successful AppsFlyer delivery, subsequent RevenueCat -> AppsFlyer events started failing failures affect all our app versions 1.3.1 , 1.3.2 and 1.3.3 failures affect multiple event types AppsFlyer responses are now a mix of: 403 Forbidden 400 Unauthorized What we already checked:RevenueCat AppsFlyer config uses the correct iOS App ID we are using an AppsFlyer Dev Key, not an S2S token the dev key has not changed RevenueCat is definitely attempting delivery to AppsFlyer successful and failed events exist for 1.3.1 , 1.3.2 and 1.3.3, so this
I am experiencing the exact same issue as this user, whose problem was not solved > @hussain - what info do you need from me to investigate?
Hi everyone,I’m using the Airbridge integration, our dashboard is being "polluted" with sandbox transactions from our IT/QA teams testing in TestFlight. I noticed that some RevenueCat integrations (like Mixpanel, AppsFlyer) allow for a dedicated "Sandbox API Key" , but the Airbridge configuration doesn't seem to have this.My questions for the community/team: Is there a way to globally disable "Sandbox Environment" events specifically for the Airbridge integration? If not, how are others handling this? Does everyone just create a separate RevenueCat Project for staging/testing to keep the API keys isolated? Is there any plan to add an "Ignore Sandbox" toggle to the Airbridge integration settings? Any advice on keeping production MMP data clean without stopping internal testing would be much appreciated!
We are using a hybrid approach for our RevenueCat integration: iOS: We use the react-native-purchases SDK for native In-App Purchases. Mobile Web: We provide an option for users to purchase via Stripe Checkout Links directly in a mobile browser (bypassing the native SDK for these specific transactions). The IssueWe are consistently seeing Error 7746 ("This fetch token is currently being ingested") on the initial delivery of Stripe webhooks for these web purchases.Since we are not using the RevenueCat Web SDK to initiate these transactions, we are confused as to why a "fetch token" would already be under ingestion when the webhook arrives.We're seeing subscriptions sync, but the initial 7746 errors force Stripe to rely on retries, causing a delay in granting entitlements. We're not super concerned with this error, but mainly want to confirm that it is expected.Integration Details Webhook URL: https://api.revenuecat.com/v1/incoming-webhooks/stripe/app1280305636 Configuration: "Track
We have the RevenueCat Meta/Facebook integration set up and CAPI events are flowing — we can see "Start trial" (87 events) and "Subscribe" (80 events) in Facebook Events Manager under Conversions API. Client-side Facebook SDK events (ActivateApp, App installs) are also working fine.Issue:Facebook cannot attribute trial starts or subscriptions back to our ad campaigns. In Events Manager, the "iOS 14.5 ATE True Status Rate" shows "No Rate Displayed" with a warning icon.What we're doing in the app before every purchase```// Right before Purchases.shared.purchase(package:)Purchases.shared.attribution.collectDeviceIdentifiers()Purchases.shared.attribution.setFBAnonymousID(metaAnonymousID) // from AppEvents.shared.anonymousIDPurchases.shared.attribution.setMixpanelDistinctID(distinctID)```We also call `collectDeviceIdentifiers()` and `setFBAnonymousID()` earlier during onboarding via `syncRevenueCatIdentifiers()`.For a confirmed test user (ATT authorized):- IDFA: available and valid- FB Anon
Hi,I’m evaluating Virtual Currencies for my mobile apps. My apps do not have a login/account system for users, but I always assign my own UUID as the RevenueCat App User ID instead of using anonymous RevenueCat IDs.My main question is about reinstall behavior.Scenario: user installs app app is initialized with my own UUID-based App User ID user buys virtual currency and has remaining credits user deletes the app user reinstalls the app app may now generate/store a new UUID and use that as a new App User ID in this case in my other premium based apps, I see a message like “Created a new alias …” in the RevenueCat dashboard From the docs, the balance endpoint is:curl --location 'https://api.revenuecat.com/v2/projects/<YOUR_PROJECT_ID>/customers/<YOUR_CUSTOMER_ID>/virtual_currencies' \--header 'Authorization: Bearer sk_***************************'My questions are: If a new App User ID is used after reinstall, and RevenueCat creates an alias, will querying /customer
Hey everyone, Im trying to integrate AppsFlyer with RevenueCat, but I cannot seem to hook things up properly. I get the AppsFlyer data on my customers but the event is never sent, there is neither successful nor unsuccessful events. Any pointers what i need to check? This is sandbox testing, do i need to add different keys and or apps for this, or do I use the same app IDs and dev key?
I have tried to integrate to integrate RevenueCat and AppsFlyer in my iOS. I followed the instruction. Configure AppsFlyer SDK frist, then RevenueCat and set required attributes. In Sandbox env, I see the transaction with AppsFlyerID attributes. Status of AppsFlyer integration is “Active”.However it doesn’t show any event. Also there is no log which can help to identify the issue. I perform the testing on simulator and also on real device. Please let me know if there is any step I missed.
Hello-On my website, I am getting dinged on Time to Load for my page, one of the reasons being Stipe JS bundle loading. Since I am not using Stripe as a standalone, is there a possibility to defer loading of Stripe, as initiated from the `@revenuecat/purchases-js` NPM package?Unless, I need the stripe JS bundle to be available related to checking subscription status; const customerInfo = await Purchases.getSharedInstance().getCustomerInfo(); but I would have thought that happens under the hood by pinging revenuecat instead of stripe directly?Yes, I do need stripe for checkout - but what else would it need to be loaded as part of the main bundle for? Any tips to load it later?
We have just added the Tenjin SDK to our Flutter App and are using the RevenueCat/Tenjin integration. So far this seems to work well. In the documentation there is a section on sending campaign data to RevenueCat (https://www.revenuecat.com/docs/integrations/attribution/tenjin#optional-send-campaign-data-to-revenuecat). We assume this is mostly about reporting on the RevenueCat dashboard, which would be great to have.However, when trying to set it up, we are not sure how to do it properly for two reasons:1. We are unable to find any documentation on what data the getAttributionInfo call from the Tenjin SDK provides. I understand that this is not a RevenueCat issue, but it would be great if it were documented nonetheless, so people could implement it without guessing.2. There is no documentation (or we have not found it) on what data should be set for the campaign attributes in RevenueCat ($campaign, $mediaSource, ...).It would be awesome if you could help us (and maybe improve the docu
I am integrating RevenueCat Web Billing (Stripe) into my Flutter Web app, but I am running into a persistent issue where my Stripe products are not being recognized despite following all the official documentation.[The Issue] In the RevenueCat Dashboard, the Store Status for my Stripe products constantly shows as "Not found" (or "Product not found in live mode..."). In my Flutter Web app, when trying to fetch offerings, I get a "Configuration Error: Production not found in RevenueCat" error, and the offerings list returns empty. [My Environment] Platform: Flutter Web (purchases_flutter) Integration: Stripe Web Billing (connected via the new Stripe App Marketplace OAuth method. Account: acct_1T...) RevenueCat Apps: Configured both "ParentSage (Stripe Production)" and "ParentSage (Stripe Sandbox)" [Steps I've Already Taken & Verified] Stripe Connection: Confirmed that the Stripe account is successfully connected via the Stripe App Marketplace. Price ID: I strictly used the St
estou recebendo a mensagem de missing_secret ao testar o webhook, mas nao sei onde gerar a key secret
I have a Flutter app using RevenueCat and the Meta/Facebook SDK for app events. Currently I am trying to get better results with Meta Ad Campaigns that I want to optimize for Start-Trial conversions. I have heard, that one should use the Facebook SDK to get the best results for event attribution on Meta’s side. However, I also want to use the RevenueCat/Meta integration to send the relevant events.My question is: Can I send the Start-Trial/Subscribe events also from my app without running into double counting issues? The goal being to give Meta more data for event attribution (AEM). If so, how can I make sure Meta is able to do the deduplication? I assume I somehow have to make sure the event from the app and the event from RevenueCat have the same `event_id` parameter.Is there any way to achieve this?
Hi. I am configuring Firebase Integration for our multiplatform app (android, ios, web)Firebase integration is working correctly for our Android and iOS users, but we have issues with RC Web Billing transations. We are not seeing any events for Web transations in Firebase Integration events section (bottom of the page).In Android and iOS we are setting the Firebase App Instance ID in the $firebaseAppInstanceId attribute for the userIn Web version we are setting the Google Analytics Client ID in the $firebaseAppInstanceId attribute for the user.I can confirm 100% that we are setting the attribute for the user before the subscription event and there is no race condition.I see the transation in Customer History, so is the Firebase Integration that is just ignoring the eventThe only difference I see in the customer history event data between working mobile events and not working web events is the store:{ [...] "store": "RC_BILLING", [...]}I am not 100% sure that is correct to set the go
Hi everybody,iOS dev here with my first App Store submission (hard-paywall screen time app). Initial rejection was for 3 issues I fixed (all metadata related like missing Privacy & TOS link in app description). Anyway, the main subscription problem: My 2 desired subs were originally "Developer Action Needed" (apparently because the generic "Premium access" name was rejected) So, I fixed names -> "ThirstTrapp Annual Access" + "ThirstTrapp Weekly Access" Now both are "Waiting for Review" after I saved them from Subscriptions page Current blocker:When creating new app build (with fixed metadata) -> try to add "In-App Purchases and Subscriptions": Dialog only shows my 2 older "Ready to Submit" subs (not the 2 new ones I actually want) Can't attach the "Waiting for Review" ones = can't submit app with correct subs Screenshots of the issue:[Subscriptions page - desired ones stuck "Waiting for Review"][App version IAP dialog - only shows old subs] What I've tried: Waited 2+
Hi RevenueCat Team / Community,I am encountering a persistent account_invalid error while testing RevenueCat Web Billing with Stripe. It appears that RevenueCat is attempting to use a Production API Key to access a Stripe Sandbox Account, which results in the following error:JSON { "error": { "code": "account_invalid", "message": "The provided key 'pk_live_******************' does not have access to account 'acct_1SZWXNDHtgf1OqUX'...", "type": "invalid_request_error" }}What I have already tried: Stripe Side: Revoked/Deleted the RevenueCat app from my Stripe Production dashboard and re-connected it only to the Test Mode environment. RevenueCat Side: Deleted the main Stripe account under Account Settings -> Project -> Stripe. App Configuration: Verified that the "Web Billing" app provider in the RevenueCat dashboard is correctly linked to the Stripe Sandbox account. Product IDs: Confirmed that all Product Identifiers match correctly between Stripe and RevenueCat. O
Hello! I have enabled the integration from RC to Meta using the App events api. When in development and testing in sandbox mode, any test purchase shows up instantly in the events feed and later gets forwarded to metas event manager as expected. I have tested 2 real production purchases and it's been almost 24 hrs. RC correctly shows the purchases and customers, but no events in the meta integration as well as meta, both have not received these events. Is this normal or due to volume, or is something set up incorrectly? Thank you.
Hi,I am trying to integrate Meta Conversion API using the steps in the documentation. I have said up everything on Metas side and see general install data flowing in. I am currently still in development of my app and using the Test Store for subscriptions.I see the requests coming back Response 400 in the RevenueCat dashboard with the following error: Response body{"error":{"message":"Invalid parameter","type":"OAuthException","code":100,"error_subcode":2804043,"is_transient":false,"error_user_title":"Invalid extended device info parameter","error_user_msg":"You are sending a device information with wrong 'extinfo version' or 'OS version'. Please refer to https:\/\/developers.facebook.com\/docs\/graph-api\/reference\/application\/activities\/#parameters for more details.","fbtrace_id":"AvGtc5A3lYjP9sqP7guRLhh"}}Since you are the ones handling the payload I can’t do anything about this.Request: {"access_token": "EAAa1ZAw...krOJf...","data": [{"action_source": "app","app_data": {"adverti
Hello RevenueCat Support Team,We are investigating an attribution issue related to AppsFlyer integration on Android and would appreciate your assistance.ContextIn some cases, purchase events (af_purchase) sent to AppsFlyer via S2S are attributed to an old appsflyer_id, which appears to belong to a previous installation of the app. According to AppsFlyer documentation, a new appsflyer_id should be generated on every fresh install.AppsFlyer support confirmed that these purchase events are received via S2S and advised us to ensure that the latest appsflyer_id is correctly extracted from the AppsFlyer SDK and used in the S2S request.Our implementation We obtain the AppsFlyer ID via:AppsFlyer.getAppsFlyerId() We pass it to RevenueCat after SDK initialization using:purchases.SetAppsflyerID(AppsFlyer.getAppsFlyerId()); RevenueCat then forwards purchase events to AppsFlyer via S2S. Questions Does RevenueCat update the AppsFlyer ID used for S2S events, or is the first provided value persis
I want to backup configuration as code. With help of rest APIs, I've got JSONs for products, offerings, etc. But I failed doing so for paywalls. https://www.revenuecat.com/docs/api-v2#tag/Paywall/operation/create-paywallIt mentions the endpointPOST https://api.revenuecat.com/v2/projects/{project_id}/paywalls But I find no way to get a paywall. Am I missing something?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.