Use Cursor, Claude Code, or another AI to help you implement the RevenueCat integration with Appstack.
- Use RevenueCat in-app events to run enhanced app campaigns.
- Unlock attribution-based paywall optimization.
To successfully connect RevenueCat, you must:
- Have Owner/Admin access to an Appstack organization.
- Have access to the correct RevenueCat account.
Requirements
Use a RevenueCat SDK version that includessetAppstackAttributionParams():
Connect to RevenueCat
Follow the steps to ensure the RevenueCat integration works:1
SDK configuration
After configuring the Purchases SDK and before the first offerings or paywall load, call
setAppstackAttributionParams() with the attribution data from the Appstack SDK. This single call sets the $appstackId, campaign attribution attributes ($mediaSource, $campaign, $adGroup, $ad, $keyword), click IDs, and device identifiers — no need to call collectDeviceIdentifiers() separately.The call also syncs attributes to the RevenueCat backend and fetches fresh offerings before returning, so Appstack-based targeting is applied before your paywall loads.On iOS, check
appstack_match_status in the params before drawing conclusions from an empty-looking result. failed means the match has not resolved yet, so it is worth rebuilding params and calling again later. not_configured means the call ran before configure(...) finished — fix the ordering — or that the SDK is disabled, in which case retrying never helps.Learn more about the RevenueCat x Appstack integration by reading this article.
RevenueCat SDK minimum versions
setAppstackAttributionParams() is available in purchases-ios 5.61.0+, purchases-android 9.23.0+, react-native-purchases 9.12.0+, and purchases-flutter 9.14.0+. Earlier versions do not include the Appstack integration method.iOS App Tracking Transparency (iOS 14.5+)If you request App Tracking permission through ATT to access the IDFA, call
setAppstackAttributionParams() again after the customer grants permission, rebuilding params from the latest getAttributionParams() and getAppstackId() values as in the code examples above. The AdSupport framework is required to collect the IDFA on iOS.2
Copy the credentials
- In Appstack, from the side menu, select Integrations > RevenueCat.
- Copy the webhook URL.
- Copy the authorization header.
3
Paste the credentials
- In RevenueCat, from the dashboard, go to Integrations > Attribution > Appstack.
- Paste the webhook URL.
- Paste the authorization header.
After the integration is active on RevenueCat’s platform, it can take 30-60 minutes to appear as active on Appstack’s side.
Test with sandbox events
After the integration is connected, RevenueCat sends sandbox events to Appstack automatically. You do not need any extra configuration. Sandbox events show only on the SDK page in the Development environment, so they never mix with your production data.1
Make a sandbox purchase
Install a build of your app that includes the integration. Then start a trial or make a purchase with a sandbox account, such as an App Store sandbox tester or a Google Play license tester.
2
Open the Development environment
- In Appstack, from the side menu, select SDK and ensure you are selecting the correct application.
- Select the Development environment.
3
Check the event
- Find the RevenueCat event in the list, for example
rc_trial_startedorrc_initial_purchase. This confirms that events reach Appstack. - Open View parameters and confirm that the event contains the
appstack_id.
If the event shows but has no
appstack_id, check that params includes getAppstackId() under the appstack_id key and that setAppstackAttributionParams() runs before the purchase. If no event shows at all, check the webhook URL and authorization header in RevenueCat, and allow 30-60 minutes after you activate the integration.List of events
Below is a list of events you can forward to ad networks to optimize your campaigns.Troubleshooting
General tips
- Check SDK versions: confirm the RevenueCat SDK includes
setAppstackAttributionParams()(purchases-ios5.61.0+,purchases-android9.23.0+,react-native-purchases9.12.0+,purchases-flutter9.14.0+). Earlier versions do not expose the method. - Check the ordering: call
setAppstackAttributionParams(...)afterPurchases.configureand before the first offerings or paywall load. Use the returnedofferingsto present the paywall rather than fetching them again. - Build the full
paramsmap: include bothgetAttributionParams()andgetAppstackId()(stored under theappstack_idkey). Passing only one of them, or a wrong key name, breaks attribution. - Handle ATT on iOS: if you request App Tracking permission, call
setAppstackAttributionParams(...)again after the customer grants it, rebuildingparamsfrom fresh SDK values. TheAdSupportframework must be linked to collect the IDFA. - Allow time for activation: after the integration is active in RevenueCat, it can take 30–60 minutes to appear active in Appstack.
- Contact support: if issues persist, reach out with specific error messages at support@appstack.tech.
Common issues
Use Cursor, Claude Code, or another AI to validate your existing RevenueCat + Appstack integration.

