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 Using Implicit Events.

The full list of events is as follows:

Event NameActionParameters
app_installWhen the SDK is configured for the first time["is_superwall": true, "app_session_id": String, "using_purchase_controller": Bool]
app_launchWhen the app is launched from a cold startSame as app_install
session_startWhen the app is opened either from a cold start, or after at least 60 minutes since last app_close.Same as app_install
first_seenWhen the user is first seen in the app, regardless of whether the user is logged in or not.Same as app_install
app_closeAnytime the app leaves the foregroundSame as app_install
app_openAnytime the app enters the foregroundSame as app_install
subscription_startWhen 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_startWhen the user successfully completes a transaction for a subscription product with an introductory offerSame as subscription_start
nonRecurringProduct_purchaseWhen the user purchased a non recurring productSame as subscription_start
transaction_startWhen the payment sheet is displayed to the userSame as subscription_start
transaction_abandonWhen the user cancels a transactionSame as subscription_start
transaction_failWhen the payment sheet fails to complete a transaction (ignores user canceling the transaction)Same as subscription_start + ["message": String]
transaction_restoreWhen the user successfully restores their purchasesSame as subscription_start
transaction_completeWhen 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_closeWhen 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_declineWhen a user manually dismisses a paywall.Same as paywall_close
paywall_openWhen a paywall is openedSame as paywall_close
paywallWebviewLoad_startWhen a paywall's URL begins to loadSame as paywall_close
paywallWebviewLoad_failWhen a paywall's URL fails to loadSame as paywall_close
paywallWebviewLoad_timeoutWhen the loading of a paywall's website times out.Same as paywall_close
paywallWebviewLoad_completeWhen a paywall's URL completes loadingSame as paywall_close
trigger_fireWhen 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_startWhen a paywall's request to Superwall's servers has startedSame as app_install +["is_triggered_from_event": Bool]
paywallResponseLoad_failWhen a paywall's request to Superwall's servers has failedSame as paywallResponseLoad_start
paywallResponseLoad_completeWhen a paywall's request to Superwall's servers is completeSame as paywallResponseLoad_start
paywallResponseLoad_notFoundWhen a paywall's request to Superwall's servers returned a 404 error.Same as paywallResponseLoad_start
paywallProductsLoad_startWhen the request to load the paywall's products started.Same as paywallResponseLoad_start
paywallProductsLoad_failWhen the request to load the paywall's products failed.Same as paywallResponseLoad_start
paywallProductsLoad_completeWhen the request to load the paywall's products completed.Same as paywallResponseLoad_start
user_attributesWhen 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_didChangeWhen the user's subscription status changes["is_superwall": true, "app_session_id": String, "subscription_status": String]
paywallPresentationRequestWhen 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_openWhen 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_responseWhen 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_beganWhen 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