3rd Party Analytics
Superwall Events
The SDK automatically tracks some events, which power the charts in the dashboard.
We encourage you to track them in your own analytics as described in 3rd Party Analytics.
The following Superwall events can be used as triggers to present paywalls:
app_install
app_launch
deepLink_open
session_start
paywall_decline
transaction_fail
transaction_abandon
survey_response
For more info about how to use these, check out how to add them using a Placement.
The full list of events is as follows:
Event Name | Action | Parameters |
---|---|---|
app_install | When the SDK is configured for the first time | [“is_superwall”: true, “app_session_id”: String, “using_purchase_controller”: Bool] |
app_launch | When the app is launched from a cold start | Same as app_install |
session_start | When the app is opened either from a cold start, or after at least 60 minutes since last app_close. | Same as app_install |
first_seen | When the user is first seen in the app, regardless of whether the user is logged in or not. | Same as app_install |
app_close | Anytime the app leaves the foreground | Same as app_install |
app_open | Anytime the app enters the foreground | Same as app_install |
subscription_start | When the user successfully completes a transaction for a subscription product with no introductory offers | [“product_period_days”: String, “product_price”: String, “presentation_source_type”: String?, “paywall_response_load_complete_time”: String?, “product_language_code”: String, “product_trial_period_monthly_price”: String, “paywall_products_load_duration”: String?, “product_currency_symbol”: String, “is_superwall”: true, “app_session_id”: String, “product_period_months”: String, “presented_by_event_id”: String?, “product_id”: String, “trigger_session_id”: String, “paywall_webview_load_complete_time”: String?, “paywall_response_load_start_time”: String?, “product_raw_trial_period_price”: String, “feature_gating”: Int, “paywall_id”: String, “product_trial_period_daily_price”: String, “product_period_years”: String, “presented_by”: String, “product_period”: String, “paywall_url”: String, “paywall_name”: String, “paywall_identifier”: String, “paywall_products_load_start_time”: String?, “product_trial_period_months”: String, “product_currency_code”: String, “product_period_weeks”: String, “product_periodly”: String, “product_trial_period_text”: String, “paywall_webview_load_start_time”: String?, “paywall_products_load_complete_time”: String?, “primary_product_id”: String, “product_trial_period_yearly_price”: String, “paywalljs_version”: String?, “product_trial_period_years”: String, “tertiary_product_id”: String, “paywall_products_load_fail_time”: String?, “product_trial_period_end_date”: String, “product_weekly_price”: String, “variant_id”: String, “presented_by_event_timestamp”: String?, “paywall_response_load_duration”: String?, “secondary_product_id”: String, “product_trial_period_days”: String, “product_monthly_price”: String, “paywall_product_ids”: String, “product_locale”: String, “product_daily_price”: String, “product_raw_price”: String, “product_yearly_price”: String, “product_trial_period_price”: String, “product_localized_period”: String, “product_identifier”: String, “experiment_id”: String, “is_free_trial_available”: Bool, “product_trial_period_weeks”: String, “paywall_webview_load_duration”: String?, “product_period_alt”: String, “product_trial_period_weekly_price”: String, “presented_by_event_name”: String?] |
freeTrial_start | When the user successfully completes a transaction for a subscription product with an introductory offer | Same as subscription_start |
nonRecurringProduct_purchase | When the user purchased a non recurring product | Same as subscription_start |
transaction_start | When the payment sheet is displayed to the user | Same as subscription_start |
transaction_abandon | When the user cancels a transaction | Same as subscription_start |
transaction_fail | When the payment sheet fails to complete a transaction (ignores user canceling the transaction) | Same as subscription_start + [“message”: String] |
transaction_restore | When the user successfully restores their purchases | Same as subscription_start |
transaction_complete | When the user completes checkout in the payment sheet and any product was “purchased” | Same as subscription_start + [“web_order_line_item_id”: String, “app_bundle_id”: String, “config_request_id”: String, “state”: String, “subscription_group_id”: String, “is_upgraded”: String, “expiration_date”: String, “trigger_session_id”: String, “original_transaction_identifier”: String, “id”: String, “transaction_date”: String, “is_superwall”: true, “store_transaction_id”: String, “original_transaction_date”: String, “app_session_id”: String] |
paywall_close | When a paywall is closed (either by user interaction or do to a transaction succeeding) | [“paywall_webview_load_complete_time”: String?, “paywall_url”: String, “paywall_response_load_start_time”: String?, “paywall_products_load_fail_time”: String?, “secondary_product_id”: String, “feature_gating”: Int, “paywall_response_load_complete_time”: String?, “is_free_trial_available”: Bool, “is_superwall”: true, “presented_by”: String, “paywall_name”: String, “paywall_response_load_duration”: String?, “paywall_identifier”: String, “paywall_webview_load_start_time”: String?, “paywall_products_load_complete_time”: String?, “paywall_product_ids”: String, “tertiary_product_id”: String, “paywall_id”: String, “app_session_id”: String, “paywall_products_load_start_time”: String?, “primary_product_id”: String, “survey_attached”: Bool, “survey_presentation”: String?] |
paywall_decline | When a user manually dismisses a paywall. | Same as paywall_close |
paywall_open | When a paywall is opened | Same as paywall_close |
paywallWebviewLoad_start | When a paywall’s URL begins to load | Same as paywall_close |
paywallWebviewLoad_fail | When a paywall’s URL fails to load | Same as paywall_close |
paywallWebviewLoad_timeout | When the loading of a paywall’s website times out. | Same as paywall_close |
paywallWebviewLoad_complete | When a paywall’s URL completes loading | Same as paywall_close |
trigger_fire | When a tracked event triggers a paywall. | [“trigger_name”: String, “trigger_session_id”: String, “variant_id”: String?, “experiment_id”: String?, “paywall_identifier”: String?, “result”: String, “unmatched_rule_<id> ”: “<outcome> ”]. unmatched_rule_<id> indicates why a rule (with a specfiic experiment id) didn’t match. It will only exist if the result is no_rule_match. Its outcome will either be OCCURRENCE, referring to the limit applied to a rule, or EXPRESSION. |
paywallResponseLoad_start | When a paywall’s request to Superwall’s servers has started | Same as app_install +[“is_triggered_from_event”: Bool] |
paywallResponseLoad_fail | When a paywall’s request to Superwall’s servers has failed | Same as paywallResponseLoad_start |
paywallResponseLoad_complete | When a paywall’s request to Superwall’s servers is complete | Same as paywallResponseLoad_start |
paywallResponseLoad_notFound | When a paywall’s request to Superwall’s servers returned a 404 error. | Same as paywallResponseLoad_start |
paywallProductsLoad_start | When the request to load the paywall’s products started. | Same as paywallResponseLoad_start |
paywallProductsLoad_fail | When the request to load the paywall’s products failed. | Same as paywallResponseLoad_start |
paywallProductsLoad_complete | When the request to load the paywall’s products completed. | Same as paywallResponseLoad_start |
user_attributes | When the user attributes are set. | [“aliasId”: String, “seed”: Int, “app_session_id”: String, “applicationInstalledAt”: String, “is_superwall”: true, “application_installed_at”: String] + provided attributes |
subscriptionStatus_didChange | When the user’s subscription status changes | [“is_superwall”: true, “app_session_id”: String, “subscription_status”: String] |
paywallPresentationRequest | When something happened during the paywall presentation, whether a success or failure. | [“source_event_name”: String, “status”: String, “is_superwall”: true, “app_session_id”: String, “pipeline_type”: String, “status_reason”: String] |
deepLink_open | When a user opens the app via a deep link. | [“url”: String, “path”: String”, “pathExtension”: String, “lastPathComponent”: String, “host”: String, “query”: String, “fragment”: String] + any query parameters in the deep link URL |
survey_response | When the response to a paywall survey as been recorded. | Same as subscription_start + [“survey_selected_option_title”: String, “survey_custom_response”: String, “survey_id”: String, “survey_assignment_key”: String, “survey_selected_option_id”: String] |
touches_began | When the user touches the app’s UIWindow for the first time. This is only tracked if there is an active touches_began trigger in a campaign. | Same as app_install |
device_attributes | When device attributes are sent to the backend every session. | [“app_session_id”: String, “is_superwall”: Bool, “publicApiKey”: String, “platform”: String, “appUserId”: String, “aliases”:[String], “vendorId”: String, “appVersion”: String, “osVersion”: String, “deviceModel”: String, “deviceLocale”: String, “deviceLanguageCode”: String, “deviceCurrencyCode”: String, “deviceCurrencySymbol”: String, “interfaceType”: String, “timezoneOffset”: Int, “radioType”: String, “interfaceStyle”: String, isLowPowerModeEnabled: Bool, “bundleId”: String, “appInstallDate”: String, “isMac”: Bool, “daysSinceInstall”: Int, “minutesSinceInstall”: Int, “daysSinceLastPaywallView”: Int?, “minutesSinceLastPaywallView”: Int?, “totalPaywallViews”: Int, “utcDate”: String, “localDate”: String, “utcTime”: String, “localTime”: String, “utcDateTime”: String, “localDateTime”: String, “isSandbox”: String, “subscriptionStatus”: String, “isFirstAppOpen”: Bool, “sdkVersion”: String, “sdkVersionPadded”: String, “appBuildString”: String, “appBuildStringNumber”: Int?] |