Superwall
Forward Superwall webhook events to AppSprint so paywalls, trials, and subscription changes are attributed to the install that triggered them. Setup takes about 10 minutes.
Requirements
- The AppSprint SDK installed and configured in your app.
- A Superwall account with admin access to add a webhook.
- The webhook Signing Secret copied from the webhook you create in Superwall.
Event mapping
| Superwall event | AppSprint event |
|---|---|
| initial_purchase | purchase |
| initial_purchase + periodType=TRIAL | start_trial |
| renewal, including isTrialConversion=true | subscribe |
| uncancellation | purchase |
| non_renewing_purchase | purchase |
| cancellation / expiration / billing_issue / product_change / subscription_paused | custom |
Custom lifecycle events keep the raw Superwall type in the event name, for example superwall:cancellation. Other Superwall event types are stored as webhook receipts but ignored for AppSprint event attribution.
Add the webhook to Superwall
In Superwall, go to Settings → Integrations → Webhooks and add a new webhook with this URL:
https://api.appsprint.app/v1/integrations/superwall/webhooks/{appId}
Replace {appId} with your AppSprint app ID. The dashboard integration page shows the full URL for the selected app.
Superwall signs webhooks using Svix. AppSprint verifies the signature using the signing secret stored under Integrations → Superwall in your dashboard. After creating the webhook in Superwall, open that webhook, copy its Signing Secret, and paste it into AppSprint. No extra header configuration is needed on Superwall's side.
svix-id: msg_xxxxxxxxsvix-timestamp: 1234567890svix-signature: v1,xxxxxxxx
AppSprint marks the integration verified after the first valid, signed webhook. Sandbox webhooks can verify the connection, but AppSprint does not create attributed events or outbound ad conversions from environment=SANDBOX deliveries.
Set the appsprintId user attribute
For webhooks to be matched to an attribution, set the appsprintId user attribute in Superwall from the SDK. This links the Superwall user to the AppSprint install.
Set the attribute after AppSprint is configured. In React Native and Flutter, await the install ID before calling Superwall:
import { AppSprint } from 'appsprint-react-native';import Superwall from '@superwall/react-native-superwall';const appsprintId = await AppSprint.getAppSprintId();if (appsprintId) {Superwall.shared.setUserAttributes({ appsprintId });}