Get help with webhooks, third-party integrations, and attribution providers.
Recently active
When linking RevenueCat to Mixpanel in iOS, the Mixpanel user City and Region fields become empty. I see reference to this in a prior post but no solution. This is the code I am using:Mixpanel.mainInstance().identify(distinctId: Purchases.shared.appUserID)
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
Hi there!We’re implementing RevenueCat in our app and using webhooks to handle and store lifecycle changes.The major issue we’ve run into however is that both:Webhooks don’t have a global subscription id (i.e. the Paddle ID from https://www.revenuecat.com/docs/api-v2#tag/Subscription-Data-Model) The API doesn’t have the original_transaction_id (it only has the current store_subscription_identifier)Due to this, there isn’t a any common id between both the API and webhooks that we can reliably use to query / create subscription data in our database / server-side.These have both been asked for recently in: Our use-case and the reason we need a global id between the API and webhooks is that we have our own verify / activate API method that queries the RevenueCat API. That currently creates a subscription with the API’s store_subscription_identifier. But by the time the webhook comes in, the original_transaction_id (which doesn’t change between webhooks) is different resulting in two rec
Hi,How does your direct integration with Customerio handle alias creation? If an alias is created in RC, what is sent to Customerio? If RC doesn't notify Customerio in any way when an alias is created, is there at least a webhook event that we can monitor to update Customerio ourselves? Thanks, Toby
Hi Community,we just implemented the meta ads integration via revenuecat and our events are received just fine by meta.Now we are trying to get the attribution to our ads and our ad campaigns to work, but I do not see revenuecat sending any data regarding the campaign or the ad in the integration events.Since it will take a couple of days/weeks as well as money on ads to figure the answer to these questions, is there anyone here who has experience doing meta ads with revenuecat integration, that can maybe already answer the following questions:Do I have to set this data manually via Purchases.setAd and setCampaign and will revenuecat send this data to meta?Or is it enough to have the ATT consent of the user and send the madid/idfa to meta and meta will figure out where this user came from? And lastly: If setting and sending the ad and campaign data to revenuecat & meta, will it be possible to see that a user came from this campaign without violating that the user has not given the
While integrating App Store Connect with RevenueCat, I receive the error: “The key is not valid or is not compatible with the bundle ID of your app.” Please advise on what could cause this mismatch.The app-store connect api is connected properly.
I currently have the meta ads integration with revenue cat setup, but from my understanding, it’s only responsible for sending the events through the conversion API and that the events needed to be reported to SKAN need to be done separately on the deviceGiven this, I’ve tried looking around for what is the best practice on how to implement this, but have run into solutions such as disabling the conversions API in favor of using the app events API in the device or creating separate naming conventions when sending events directly to SKANSo just trying to figure out what is the best way forward with this
I have a legacy Rails app using Stripe (alone / not RC) for app subscriptions. This app has been rewritten in Flutter/Firebase to produce an iOS & Android app that will use RevenueCat for native app store subscriptions, and a Flutter web app that will use RevenueCat Web Billing for web subscriptions. (The Rails app will be retired.)Is it possible to migrate existing (“manual”) Stripe subscriptions from Stripe to RC’s Web Billing, so as to unify billing of the legacy subscribers with the new subscribers?My understanding from reading the docs is that this isn’t currently possible (??) and instead if I move to use RC Web Billing for new subscibers, I will need to maintain some legacy system to support the old subscriptions.Tell me there’s a way to migrate them! 🙏
Hey, we use RevenueCat together with Superwall (using a Purchase Controller). There is no documentation on how to set up pricing experiments in this scenario. Since you configure products and entitlements in Superwall by tying them directly to an AppStore product identifier, I don’t see a way to use the Revenuecat experiment feature. I think for that to work, Superwall would have to use the RC current offering.So I think the only way to set this up would be to define a new product / offering in App Store and then in RevenueCat and Superwall, which gives access to the same entitlement, and run the A/B test in Superwall. We could then probably segment a chart in RC by offering to see results there as well.Or am I missing something?
Hi, I'm integrating RevenueCat with Superwall in a Flutter app using the PurchaseController method, and I’d like to confirm how real-time and automatic the entitlement syncing is between the two. After calling syncSubscriptionStatus() once during app startup, do I need to manually call it again when a subscription changes (like an upgrade, renewal, or cancellation)? Or does Superwall automatically stay in sync through the CustomerInfoUpdateListener from RevenueCat? How real-time is this syncing in practice? If a user upgrades, downgrades, or their subscription expires, will Superwall recognize the entitlement change immediately in the same session, or is there a delay? If there is a delay, what should I expect? Are there any best practices I should follow to ensure Superwall always reflects the latest entitlement state from RevenueCat with minimal delay? My goal is to rely fully on RevenueCat's entitlements to manage paywall logic inside Superwall, and I want to make sure that the
Long time RC user, very happy with the service!I have a question regarding handling rewards for “perks”:Is that possible to implement without my own server and only use RC?Ref: https://support.google.com/admob/answer/9603226?hl=enMy scenario is that I can setup a perk I want the user to get, when a reward is verified.But I only use “anonymous” users in RC, since I want it optional to give out info for the user.Cheers from Norway,Lars
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.
Hi everyone,I’m using the RevenueCat Web Billing connected to Stripe. One of my customers has initiated a dispute, and Stripe is now requesting evidence to resolve the issue.Could anyone advise on what kind of evidence I should provide in this case?Thanks in advance for your help!
I was trying to integrate, My App store connect with my RC but getting this issue:“The key is not valid or is not compatible with the bundle id of your app.”Even though my Bundle ID is valid on both xcode and appstore connect i just copy pasted from that, Just created my .p8 file and have created this 3 times now.
Hi,I’m running into an issue where development builds (via Xcode) are not generating an appsflyer_id, and consequently, no S2S events are being sent from RevenueCat to AppsFlyer. Here’s what I’ve observed:What’s happening In dev builds, Apple zeros out IDFA and IDFV for sideloaded apps, even with ATT consent. Without IDFA/IDFV, AppsFlyer SDK cannot create a valid appsflyer_id, which is required for event attribution. As a result, RevenueCat never sends server-to-server purchase or trial events because it doesn’t have the mandatory identifier. I’ve implemented the suggested methods—collectDeviceIdentifiers() and setAppsflyerID()—but since the SDK doesn’t generate the ID in dev builds, RevenueCat still fails to send any events. Questions Is there a recommended workaround for dev builds when IDs are zeroed? (e.g., can we manually set a fake $appsflyerId or use an IDFV workaround?). Any best practices for testing with Xcode‑installed apps so that both AppsFlyer and RevenueCat work
“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!!!
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, is there a way to add an entitlement to a customer using the rest api v2?
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,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
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?
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!
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
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.