Integrations

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

FieldDescriptionExample
app_tokenYour Adjust app token"abc123def456"
event_tokenDefault event token for Adjust"xyz789"
sales_reportingWhich value to report"Revenue" or "Proceeds"

Optional settings

FieldDescriptionExample
s2s_tokenS2S security authentication token"your_s2s_token"
Custom event name mappingsOverride 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 EventPeriod TypeAdjust Event Name
initial_purchaseTRIALsw_trial_start
initial_purchaseINTROsw_intro_offer_start
initial_purchaseNORMALsw_subscription_start
renewaltrial conversionsw_trial_converted
renewalINTROsw_intro_offer_converted
renewalNORMALsw_renewal
cancellationTRIALsw_trial_cancelled
cancellationINTROsw_intro_offer_cancelled
cancellationNORMALsw_subscription_cancelled
uncancellationTRIALsw_trial_uncancelled
uncancellationINTROsw_intro_offer_uncancelled
uncancellationNORMALsw_subscription_uncancelled
expirationTRIALsw_trial_expired
expirationINTROsw_intro_offer_expired
expirationNORMALsw_subscription_expired
billing_issueanysw_billing_issue
subscription_pausedanysw_subscription_paused
product_changeanysw_product_change
non_renewing_purchaseanysw_non_renewing_purchase
Any with price < 0anysw_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 transaction
  • transaction_id: The transaction identifier
  • original_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:

SettingValue UsedDescription
"Revenue"priceGross revenue before store fees
"Proceeds"proceedsNet 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

IdentifierPlatformDescription
adjustIdAllPrimary Adjust device ID (required)
idfaiOSIdentifier for Advertisers
gps_adidAndroidGoogle 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_STORE maps to iOS (uses idfa if available)
  • PLAY_STORE maps to Android (uses gps_adid if 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:

  1. Event Log: Confirm events are arriving with the correct event token
  2. Callback Data: Verify callback parameters contain the expected values
  3. Revenue: Confirm revenue amounts and currency codes are correct
  4. Device Attribution: Ensure events are attributed to the correct device

Best practices

  1. Set Adjust device IDs early: Configure the adjustId in Superwall user attributes as soon as the Adjust SDK initializes, so that all subscription events can be attributed.
  2. Include advertising IDs: Pass idfa (iOS) or gps_adid (Android) in user attributes for richer attribution data.
  3. Use S2S security: Configure the s2s_token to authenticate server-to-server requests and prevent spoofed events.
  4. Revenue model consistency: Choose gross revenue or proceeds and keep it consistent across all your analytics tools.
  5. Custom event names: Use custom event name mappings if your Adjust setup requires specific naming conventions.
  6. Monitor attribution: Regularly verify that events in the Adjust dashboard match your expected subscription activity.

Troubleshooting

Events not appearing

  1. Check adjustId: The adjustId must be present in userAttributes. Events without it are skipped entirely.
  2. Check app token: Verify the app token matches your Adjust app.
  3. Check event token: Ensure the event token is valid in your Adjust dashboard.
  4. Check environment: Sandbox events are always skipped. Only production events are sent.
  5. Check S2S token: If configured, verify the S2S authentication token is correct.

Revenue not tracking

  1. Check amount: Only non-zero amounts include revenue data.
  2. Check sales reporting: Verify whether you selected Revenue or Proceeds.
  3. Check currency: Ensure the currency code is present on the transaction.

Device attribution issues

  1. Check adjustId: This is the primary identifier and must be set in user attributes.
  2. Check IDFA/GPS ad ID: These are supplementary identifiers. Ensure they are passed in user attributes if available.
  3. 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?

On this page