Adjust
The Adjust integration automatically sends Superwall subscription and payment events to Adjust via the server-to-server (S2S) event API. Track subscription lifecycle events, attribute revenue, and measure campaign performance with automatic event mapping and device-level identification.
In the Analytics section within Integrations, you can connect your Adjust account to Superwall:
Required fields
Fill out the following fields and click the Enable Adjust button at the bottom right to save your changes:
- App Token: Your Adjust app token.
- Event Token: The default event token used when sending events to Adjust.
- Sales Reporting: Which revenue value to report in Adjust. Choose between Proceeds (after store taxes and fees) or Revenue.
Features
- Automatic Event Mapping: Converts Superwall events to Adjust-compatible event names
- Revenue Tracking: Automatic revenue attribution with currency support
- S2S Event API: Events are sent server-to-server for reliable delivery
- Device Identification: Uses Adjust device IDs, IDFA, and GPS advertising ID for attribution
- Callback Parameters: Custom data attached to each event for downstream use
- Custom Event Names: Optional override of default event name mappings
- S2S Security: Optional authentication token for secure server-to-server communication
Configuration
Required settings
| Field | Description | Example |
|---|---|---|
app_token | Your Adjust app token | "abc123def456" |
event_token | Default event token for Adjust | "xyz789" |
sales_reporting | Which value to report | "Revenue" or "Proceeds" |
Optional settings
| Field | Description | Example |
|---|---|---|
s2s_token | S2S security authentication token | "your_s2s_token" |
| Custom event name mappings | Override default event names per event type | "sw_trial_start" mapped to a custom name |
Example configuration
{
"app_token": "your_adjust_app_token",
"event_token": "your_default_event_token",
"sales_reporting": "Revenue",
"s2s_token": "your_optional_s2s_token"
}Event mapping
Superwall events are transformed into Adjust event names using the standard mapper:
Complete event mapping
| Superwall Event | Period Type | Adjust Event Name |
|---|---|---|
initial_purchase | TRIAL | sw_trial_start |
initial_purchase | INTRO | sw_intro_offer_start |
initial_purchase | NORMAL | sw_subscription_start |
renewal | trial conversion | sw_trial_converted |
renewal | INTRO | sw_intro_offer_converted |
renewal | NORMAL | sw_renewal |
cancellation | TRIAL | sw_trial_cancelled |
cancellation | INTRO | sw_intro_offer_cancelled |
cancellation | NORMAL | sw_subscription_cancelled |
uncancellation | TRIAL | sw_trial_uncancelled |
uncancellation | INTRO | sw_intro_offer_uncancelled |
uncancellation | NORMAL | sw_subscription_uncancelled |
expiration | TRIAL | sw_trial_expired |
expiration | INTRO | sw_intro_offer_expired |
expiration | NORMAL | sw_subscription_expired |
billing_issue | any | sw_billing_issue |
subscription_paused | any | sw_subscription_paused |
product_change | any | sw_product_change |
non_renewing_purchase | any | sw_non_renewing_purchase |
Any with price < 0 | any | sw_refund |
You can optionally override these default event names with custom mappings in your integration settings.
Callback parameters
Every Adjust event includes callback parameters encoded as JSON. These are sent alongside the event for downstream processing:
event_name: The mapped Superwall event name (e.g.,sw_trial_start)product_id: The product identifier for the transactiontransaction_id: The transaction identifieroriginal_transaction_id: The original transaction identifier (for renewals and modifications)
These callback parameters are included in the callback_params query parameter as a JSON-encoded string.
Revenue tracking
Automatic revenue attribution
Revenue is automatically included for events with non-zero amounts. The sales_reporting setting determines which value is used:
| Setting | Value Used | Description |
|---|---|---|
"Revenue" | price | Gross revenue before store fees |
"Proceeds" | proceeds | Net revenue after store fees |
When revenue is present:
- Positive revenue: Purchases, renewals, conversions
- Negative revenue: Refunds (automatically deducted)
- Zero revenue: Events like cancellations, expirations, and billing issues do not include revenue data
Revenue is sent with the corresponding currency code from the transaction.
User and device identification
Adjust uses device-level identifiers rather than user IDs for attribution. The integration reads these values from userAttributes on the Superwall event:
Device identifier hierarchy
| Identifier | Platform | Description |
|---|---|---|
adjustId | All | Primary Adjust device ID (required) |
idfa | iOS | Identifier for Advertisers |
gps_adid | Android | Google Play Services advertising ID |
Important: If no adjustId is present in userAttributes, the event is skipped entirely. Make sure your app sets the Adjust device ID on the Superwall user so that events can be attributed correctly.
Platform detection
The integration determines the platform from the store field on the event:
APP_STOREmaps to iOS (usesidfaif available)PLAY_STOREmaps to Android (usesgps_adidif available)
Sandbox handling
Adjust does not support separate sandbox environments. All sandbox events are skipped and will not be sent to Adjust.
Only production events are forwarded to the Adjust S2S event API. If you need to test the integration, use production or live test transactions.
Testing the integration
1. Validate credentials
When you save the integration, Superwall sends a test event to verify that your app_token and event_token are valid. If the test fails, double-check your tokens in the Adjust dashboard.
2. Trigger production events
Since sandbox events are skipped, testing requires live transactions:
- iOS: Use TestFlight with a sandbox Apple ID. Note that 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 purchases.
3. Verify in Adjust
Check the Adjust dashboard:
- Event Log: Confirm events are arriving with the correct event token
- Callback Data: Verify callback parameters contain the expected values
- Revenue: Confirm revenue amounts and currency codes are correct
- Device Attribution: Ensure events are attributed to the correct device
Best practices
- Set Adjust device IDs early: Configure the
adjustIdin Superwall user attributes as soon as the Adjust SDK initializes, so that all subscription events can be attributed. - Include advertising IDs: Pass
idfa(iOS) orgps_adid(Android) in user attributes for richer attribution data. - Use S2S security: Configure the
s2s_tokento authenticate server-to-server requests and prevent spoofed events. - Revenue model consistency: Choose gross revenue or proceeds and keep it consistent across all your analytics tools.
- Custom event names: Use custom event name mappings if your Adjust setup requires specific naming conventions.
- Monitor attribution: Regularly verify that events in the Adjust dashboard match your expected subscription activity.
Troubleshooting
Events not appearing
- Check adjustId: The
adjustIdmust be present inuserAttributes. Events without it are skipped entirely. - Check app token: Verify the app token matches your Adjust app.
- Check event token: Ensure the event token is valid in your Adjust dashboard.
- Check environment: Sandbox events are always skipped. Only production events are sent.
- Check S2S token: If configured, verify the S2S authentication token is correct.
Revenue not tracking
- Check amount: Only non-zero amounts include revenue data.
- Check sales reporting: Verify whether you selected Revenue or Proceeds.
- Check currency: Ensure the currency code is present on the transaction.
Device attribution issues
- Check adjustId: This is the primary identifier and must be set in user attributes.
- Check IDFA/GPS ad ID: These are supplementary identifiers. Ensure they are passed in user attributes if available.
- Check platform detection: Verify the store field is correct (APP_STORE for iOS, PLAY_STORE for Android).
S2S API errors
The Adjust S2S event API receives events as URL query parameters. Common issues include:
- Invalid app token: Returns an error from the Adjust endpoint.
- Invalid event token: The event token must exist in your Adjust dashboard.
- Authentication failure: If using
s2s_token, ensure it matches your Adjust S2S security settings.
How is this guide?