---
title: "RevenueCat now integrates with Appstack"
description: "Integrate RevenueCat with Appstack for attribution and targeting"
language: "en"
publishedAt: "2026-03-11T05:23:02Z"
updatedAt: "2026-03-11T05:23:02Z"
authors:
  - name: "Perttu Lähteenlahti"
    url: "https://www.revenuecat.com/blog/author/perttu-lahteenlahti"
category: "Engineering"
categoryUrl: "https://www.revenuecat.com/blog/engineering"
readingTime: 2
canonical: "https://www.revenuecat.com/blog/engineering/revenuecat-now-integrates-with-appstack"
---

# RevenueCat now integrates with Appstack

Integrate RevenueCat with Appstack for attribution and targeting

## Table of contents

- [Using RevenueCat’s Appstack integration](#using-revenuecats-appstack-integration)
  - [1. SDK attribution mapping](#1-sdk-attribution-mapping)
  - [2. Subscription lifecycle event forwarding](#2-subscription-lifecycle-event-forwarding)
- [Get started today](#get-started-today)

RevenueCat now integrates with Appstack. One SDK call maps attribution data and pre-fetches targeted offerings before your paywall loads. Enable webhook forwarding to send the full subscription lifecycle — purchases, renewals, cancellations, and more — back to Appstack so you can measure real LTV from your campaigns, not just installs.

Running paid acquisition without connecting it to subscription revenue means flying blind. Attribution data lives in one tool, subscription events in another, and the relationship between your ad spend and actual LTV stays murky. RevenueCat’s new Appstack integration closes that gap.

> **Tip:**
> Appstack is an ad attribution platform that's been gaining popularity, especially among subscription app developers who want cleaner visibility into which campaigns are actually driving LTV.

## Using RevenueCat’s Appstack integration

With the Appstack integration you can:

- Send RevenueCat subscription events directly to your Appstack webhook endpoint (optional).
- Attribute subscription revenue to campaigns tracked by Appstack using the Purchases SDK.
- Identify users in Appstack using the `$appstackId` subscriber attribute.
Integrating with Appstack requires that Appstack SDK is installed in your app. [Refer to the Appstack developer documentation](https://docs.appstack.tech/introduction) for the latest installation instructions.

### **1. SDK attribution mapping**

A single call — `setAppstackAttributionParams()` — pulls attribution data from the Appstack SDK and forwards it to RevenueCat. Under the hood, it sets $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. That means by the time the callback fires, your paywall is already reflecting the user’s Appstack targeting data.

Set the following attributes after configuring the Purchases SDK and before the first purchase occurs.

```swift
import AdSupport
\/\/ ...
Purchases.configure(withAPIKey: "public_sdk_key")
\/\/ ...

\/\/ Retrieve attribution params from the Appstack SDK
let attributionParams = AppstackAttributionSdk.shared.getAttributionParams()

\/\/ Forward to RevenueCat \u2014 syncs attributes and fetches fresh offerings
\/\/ so Appstack-based targeting is applied before the await returns.
do {
    let offerings = try await Purchases.shared.attribution.setAppstackAttributionParams(attributionParams)
    \/\/ Use `offerings` to present the correct paywall for this user
} catch {
    \/\/ handle error
}
```

This is enough for RevenueCat to start storing attribute subscription revenue information from Appstack.

> **Tip:**
> One thing to watch for on iOS: if you are requesting the App Tracking permission through ATT to access the IDFA, call `setAppstackAttributionParams()` again after the customer grants permission, passing the latest params from `AppstackAttributionSdk.shared.getAttributionParams()`.

Keep in mind that `AdSupport` framework is required to collect the IDFA on iOS.

![](https://cdn.sanity.io/images/c3qnx9b0/production/8a31883d204d3a1ea9628cbd28abcd71aeb67d10-649x155.png)

### **2. Subscription lifecycle event forwarding**

The Appstack integration uses a reserved [subscriber attribute](https://www.revenuecat.com/docs/customers/customer-attributes) to associate RevenueCat events with users in Appstack if the integration is configured to send events. Event forwarding supports following properties:

| **Includes Revenue** | **Supports Negative Revenue** | **Sends Sandbox Events** | **Includes Customer Attributes** | **Sends Transfer Events** | **Optional Event Types** |
| --- | --- | --- | --- | --- | --- |
| ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |

Configure Appstack in the RevenueCat dashboard under Integrations → Attribution → Appstack. You’ll need your **webhook URL** and an **authorization header** from Appstack.

![](https://cdn.sanity.io/images/c3qnx9b0/production/f7133f11d17566406ca51c608810d0b482ed453d-2500x1990.png)

Once set up, RevenueCat forwards the full event suite. This lets you measure subscription revenue and LTV from your acquisition campaigns in Appstack, rather than just top-of-funnel installs. Following events are sent to Appstack

- Initial Purchase
- Renewal
- Cancellation
- Uncancellation
- Non-Renewing Purchase
- Subscription Paused
- Expiration
- Billing Issue
- Product Change
- Transfer
- Subscriber Alias
## Get started today

Integrate RevenueCat with Appstack for attribution and targeting to get a clear picture from ad click to paying subscriber to long-term LTV. The integration is live now on iOS and Android SDKs, available for all apps from the Attribution section of your RevenueCat dashboard. [Check out the full docs](https://www.revenuecat.com/docs/integrations/attribution/appstack)
