Airbridge
The Airbridge integration forwards Superwall webhook events to Airbridge, so subscription revenue is attributed to the campaigns and ads that drove it.
In the Analytics section within Integrations, you can connect your Airbridge account to Superwall.
Purpose
Airbridge connects acquisition data, such as the channel, campaign, and ad, with the subscription events sent by Superwall. This lets you measure subscription revenue and return on ad spend by campaign, and use server-to-server events for SKAdNetwork conversion values.
The airbridgeId links events to the device in Airbridge. Connecting the dashboard integration enables event delivery; the SDK configuration below supplies this identifier.
Required Fields
Find both values in the Airbridge dashboard under Integrations > Third-party Integration > Superwall, then paste them into Superwall and save:
- Airbridge Subdomain: Your Airbridge app's subdomain, used to route events to the correct app.
- Airbridge Token: The token Airbridge issues for the Superwall integration, used to authenticate requests.
SDK Configuration
Airbridge matches Superwall events to a device and a user. Set both up in your app before connecting the integration:
- Device: Get the Airbridge Device ID with
fetchDeviceUUIDfrom the Airbridge SDK (iOS, Android) and pass it to Superwall asairbridgeId. - User: Call
Airbridge.setUserIDwith the same user ID you pass to Superwall'sidentify. Airbridge receives it asexternalUserID. - No double counting: Configure the Airbridge SDK not to collect the subscription events that Superwall sends.
Pass the Device ID as an integration attribute as soon as Airbridge returns it, before any purchase.
iOS
Requires iOS SDK 4.18.2 or later. The Airbridge Device ID is kept when you reset or identify a different user.
import Airbridge
import SuperwallKit
Airbridge.fetchDeviceUUID { deviceUUID in
Superwall.shared.setIntegrationAttributes([
.airbridgeId: deviceUUID
])
}Android
Requires Android SDK 2.8.8 or later.
import com.superwall.sdk.models.attribution.AttributionProvider
// After Airbridge returns the device UUID
Superwall.instance.setIntegrationAttributes(
mapOf(AttributionProvider.AIRBRIDGE_ID to deviceUUID)
)Expo and Flutter
Expo and Flutter add a typed airbridgeId integration attribute in their next releases. Until you're on one of those, set airbridgeId as a user attribute instead. It reaches Airbridge in the same field. Set it after identify() and before any purchase, and set it again after every reset(), which clears user attributes.
// Expo
const { update } = useUser()
await update({ airbridgeId: deviceUUID })// Flutter
await Superwall.shared.setUserAttributes({
'airbridgeId': deviceUUID,
});The key must be exactly airbridgeId. Airbridge does not read other keys, such as airbridgeDeviceId.
Follow the Airbridge Superwall guide for the Airbridge-side setup and its event mapping.
Features
- Pass-Through Delivery: Superwall webhook events are forwarded to Airbridge without transformation
- Simple Configuration: Only a subdomain and a token are required
- Credential Validation: Your subdomain and token are checked when you save, without creating an event in Airbridge
- Sandbox & Production Events: Both are forwarded
How It Works
Airbridge is a pass-through integration. Unlike integrations that map events into a platform-specific format, it forwards the Superwall webhook event payload as-is, and Airbridge maps it on its side.
When a subscription event occurs:
- Superwall generates the webhook event.
- The integration sends the complete, unmodified event payload to Airbridge.
- Airbridge maps the event and attributes it using
airbridgeIdand your user ID.
API Endpoint
Events are sent to:
POST https://postback.airbridge.io/partner/v1/{subdomain}/superwallRequest Headers
Content-Type: application/json
Authorization: Bearer <token>Event Mapping
Airbridge maps Superwall events on its side. Standard Airbridge events keep the Superwall event name as the event action, so you can group by it in Airbridge reports.
| Superwall event | Airbridge event |
|---|---|
initial_purchase (trial) | airbridge.startTrial |
initial_purchase (paid) | airbridge.subscribe |
renewal | airbridge.subscribe |
cancellation | airbridge.unsubscribe |
uncancellation, expiration, billing_issue, product_change, subscription_extended, subscription_paused, non_renewing_purchase | Same name as the Superwall event |
See the Airbridge Superwall guide for the current mapping.
SKAdNetwork Conversion Values
For events from Superwall to count toward SKAN conversion values:
- Use Airbridge iOS SDK
4.8.0or later (4.8.1or later recommended). - Set
calculateSKAdNetworkByServerEnabledtotruein the Airbridge SDK.
Testing the Integration
Airbridge records every accepted request as a real event. Test against a separate Airbridge app in Development mode: in the Airbridge dashboard, click your organization name, choose Add a new app, and select Development mode. The app name becomes its subdomain.
Then generate a sandbox transaction:
- iOS: Use TestFlight with a sandbox Apple ID. StoreKit Configuration files do not generate App Store Server Notifications, so webhooks and downstream integrations will not fire.
- Google Play: Use license test accounts to perform sandbox purchases.
- Stripe: Use Stripe Test Mode to create sandbox transactions.
Troubleshooting
Credential Validation Failing
Airbridge rejects the subdomain or token. Copy both values again from Integrations > Third-party Integration > Superwall in Airbridge, and confirm the subdomain belongs to the app you are connecting.
Events Not Appearing in Airbridge
- Re-save the integration to re-check the credentials.
- Confirm sandbox events are going to a Development mode app, not your production app.
- Contact Airbridge support if the credentials are valid but events still do not arrive.
Events Arrive but Are Not Attributed
- Confirm the Airbridge Device ID is set before the purchase, through the
airbridgeIdintegration attribute or a user attribute with exactly that key. - If you set it as a user attribute, confirm it is set again after every
reset(). - Confirm
Airbridge.setUserIDuses the same user ID as Superwall'sidentify.
Subscription Events Are Counted Twice
The Airbridge SDK is still tracking the subscription events that Superwall sends. Turn off SDK-side tracking for those events.
How is this guide?