Skip to main content
← Back to blog
Felix Cameron··10 min read

How to Connect Superwall to Instally for Revenue Tracking

Connect Superwall to Instally to see which links drive paying users through your paywall. Step-by-step webhook setup and dashboard walkthrough.

Why connect Superwall to Instally?

Superwall manages your paywall. Instally tracks which links drive installs. Connect them and you can see which links drive users who actually pay when they hit your paywall.

This is more specific than general revenue tracking. Superwall gives you granular paywall event data: which paywall was shown, whether the user started a free trial, whether they converted to paid, and how much they spent. When that data flows into Instally, you can see paywall performance broken down by acquisition source.

A quick example of what becomes possible:

SourceInstallsPaywall shownTrial startedConverted to paidRevenue
Creator A840672201134$1,339
Creator B6204967437$369
Blog traffic28025210076$759
Email campaign600480192144$1,439
Creator A gets a lot of installs, but only 20% of their users start a trial. Blog traffic has fewer installs, but 40% start a trial and 30% convert to paid. The blog audience knows what they want before they install.

This is the kind of insight you get when paywall events are tied back to the link that brought the user in.

What you'll need

RequirementDetails
Instally accountRevenue tracking requires Growth ($40/mo) or Scale ($79/mo)
Superwall accountAny plan with webhook support
Instally SDK integratedSee our iOS or Android guide
RevenueCat or StoreKit 2Superwall works with your existing purchase infrastructure
15 minutesSetup time

How the integration works

Superwall tracks paywall interactions. When a user views a paywall, starts a trial, or converts to paid, Superwall can send a webhook event. Instally receives the event, matches the user to an install record using a shared user ID, and credits the paywall event to the link that drove the install.

The flow:

    • User clicks a tracking link → Instally records the click
    • User installs the app → Instally SDK matches the install and returns an Instally user ID
    • You set the Instally user ID as a Superwall user attribute
    • User encounters your paywall → Superwall tracks the interaction
    • User converts → Superwall sends a webhook event to Instally
    • Instally matches the event to the install and link

Step 1: Set up the Instally SDK

If the SDK is already in your app, skip to Step 2. Otherwise, here's the basic setup.

Swift example:

import Instally
import SuperwallKit

@main
struct YourApp: App {
    init() {
        Instally.configure(appId: "YOUR_APP_ID", apiKey: "ik_live_your_key")
        Superwall.configure(apiKey: "your_superwall_key")
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

Kotlin example:

import io.instally.sdk.Instally
import com.superwall.sdk.Superwall

class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        Instally.configure(this, "ik_live_your_key")
        Superwall.configure(this, "your_superwall_key")
    }
}

Step 2: Sync the Instally user ID with Superwall

After calling trackInstall, pass the same Superwall app user ID to Instally with setUserId. This is how Instally matches paywall events back to the install.

Swift example:

struct ContentView: View {
    var body: some View {
        Text("Hello")
            .task {
                do {
                    Instally.trackInstall()
                    Instally.setUserId(Superwall.shared.userId)
                } catch {
                    print("Tracking error: \(error)")
                }
            }
    }
}

Kotlin example:

lifecycleScope.launch {
    try {
        Instally.trackInstall(this@MainActivity)
        Instally.setUserId(this@MainActivity, Superwall.instance.userId)
    } catch (e: Exception) {
        Log.e("App", "Tracking error: $e")
    }
}

The same Superwall user ID is included in Superwall's webhook payloads, allowing Instally to match the event to the correct install.

Step 3: Configure the Superwall webhook

    • Log in to the Superwall dashboard
    • Navigate to Settings > Webhooks
    • Click Add Webhook
    • Set the URL to:
https://api.instally.io/webhooks/superwall
    • Add the authorization header:
- Header name: X-Instally-Api-Key - Header value: Your Instally API key
    • Select the events to send:
Superwall eventWhat it tells Instally
paywall_openUser saw a paywall
free_trial_startUser started a free trial
transaction_startUser began a purchase
transaction_completePurchase completed successfully
transaction_failPurchase failed
transaction_abandonUser abandoned the purchase
transaction_restoreUser restored a previous purchase
subscription_startSubscription activated
subscription_status_changeRenewal, cancellation, or expiration
At minimum, select transaction_complete and subscription_start to track revenue. Add paywall_open and free_trial_start if you want to see the full funnel from paywall view to conversion.
    • Click Save

Step 4: Add the Superwall signing secret to Instally

    • In the Superwall dashboard, copy the webhook signing secret
    • Go to the Instally dashboard
    • Navigate to Settings > Integrations > Superwall
    • Paste the signing secret
    • Click Save

Step 5: Test the integration

    • Create a test tracking link in Instally
    • Click it on a test device
    • Install the app (or use a development build)
    • Open the app — trackInstall should fire and set the Superwall user attribute
    • Trigger a paywall and complete a sandbox purchase
    • Check the Instally dashboard — you should see the paywall event and revenue on the test link
If events aren't appearing:
  • Check Superwall's webhook delivery logs for failed requests
  • Verify the signing secret matches between Superwall and Instally
  • Confirm the instally_user_id user attribute is being set before the paywall is triggered
  • Make sure trackInstall runs on app launch, not lazily

What you see in the dashboard

With Superwall connected, your Instally dashboard shows a paywall funnel for each link:

Per-link paywall funnel:
MetricCreator ACreator BBlog traffic
Installs840620280
Paywall views672 (80%)496 (80%)252 (90%)
Trial starts201 (30%)74 (15%)100 (40%)
Paid conversions134 (67%)37 (50%)76 (76%)
Revenue$1,339$369$759
Rev/Install$1.59$0.60$2.71
The percentages in parentheses are relative to the previous step. So 30% of Creator A's paywall views started a trial, and 67% of those trials converted to paid.

This tells you something important: Creator B's audience isn't just less likely to install. They're also less likely to convert at the paywall. Only 15% start a trial, and only 50% of trials convert. Creator B's audience might not be the right fit for your app.

Blog traffic, on the other hand, converts at every step. Higher paywall view rate, higher trial rate, higher paid conversion rate. These users researched your app before installing, and they're ready to pay.

Using Superwall A/B tests with acquisition data

Superwall lets you run paywall experiments: different designs, different offers, different trial lengths. When you combine Superwall's A/B tests with Instally's per-link data, you can answer questions like:

  • Does a 7-day trial convert better for users from email campaigns vs. users from creator links?
  • Does the "comparison" paywall design work better for blog traffic?
  • Should you show a different paywall to users from different acquisition sources?
The data is already flowing. Superwall tells Instally which paywall variant was shown, and Instally knows which link brought the user in. You can cross-reference in the dashboard.

Superwall + RevenueCat + Instally

Many apps use Superwall for paywall management and RevenueCat for subscription management. In this setup, you have two options for revenue tracking in Instally:

Option A: Connect Superwall only. Superwall's transaction_complete events include the revenue amount. This is sufficient for basic revenue tracking. Option B: Connect RevenueCat only. RevenueCat tracks all purchase events including renewals, which Superwall's paywall events may not cover. See our RevenueCat guide. Option C: Connect both. Use Superwall for paywall funnel metrics (views, trial starts, abandons) and RevenueCat for revenue (purchases, renewals, refunds). Instally deduplicates events from both sources using the transaction ID so you won't double-count.

Option C gives you the most complete picture. Superwall events tell you about the paywall experience. RevenueCat events tell you about the money.

Why paywall data matters for acquisition decisions

Most developers evaluate acquisition channels by installs alone. "Creator A got us 840 installs, Creator B got us 620, so Creator A is better."

But when you add paywall data, the picture changes. A channel that drives users who bounce off your paywall is less valuable than a channel that drives users who convert. The install is the starting point, not the end goal.

With Superwall + Instally, you can calculate the true cost per paying user for each channel:

SourceCostInstallsPaying usersCost per installCost per paying user
Creator A$2,000840134$2.38$14.93
Creator B$1,50062037$2.42$40.54
Blog content$50028076$1.79$6.58
Creator A and Creator B have similar cost per install, but Creator B's cost per paying user is nearly 3x higher. Blog content costs the least per paying user by a wide margin.

This is the kind of analysis you can do when paywall events are connected to acquisition data. For more on calculating ROI across channels, see our guide to measuring ROI on creator marketing.

FAQ

Does this work with Superwall's free plan?

Webhook support depends on your Superwall plan. Check Superwall's pricing page to confirm webhook access is available on your plan.

Can I see which specific paywall design each user saw?

Yes. Superwall's webhook events include the paywall identifier and experiment variant. Instally stores this data so you can filter by paywall design in the dashboard.

What if I use StoreKit 2 directly instead of RevenueCat?

That's fine. Superwall works with StoreKit 2 natively. The webhook events still fire the same way, and Instally will receive them. You won't get the additional RevenueCat renewal/refund events, but Superwall's transaction_complete and subscription_status_change events cover the core revenue tracking.

How does deduplication work if I connect both Superwall and RevenueCat?

Instally uses the App Store or Play Store transaction ID to deduplicate. If both Superwall and RevenueCat report the same transaction, it's counted once.

Can I disconnect the integration later?

Yes. Remove the webhook in Superwall's dashboard and delete the signing secret in Instally's settings. Historical data is retained.

---

Your paywall is the gate between free users and revenue. Superwall optimizes the gate. Instally tells you who's walking up to it and where they came from. Connect them and see the full funnel: click, install, paywall view, trial, paid conversion, all traced back to the link that started it.

Ready / v1.0

Stop guessing. Start shipping.

Track clicks, installs, and revenue from every link. Set up in five minutes.

Get started free