Skip to main content

Paywall component interaction events

Reference for paywall_component_interacted analytics events across platforms

AIAsk AIChatGPTClaude

The paywall_component_interacted event is emitted when a user changes a paywall control (tabs, toggles, carousels, packages, buttons, purchase actions, etc.). It is user-driven: for example, carousel auto-advance does not send this event when the user did not drag or tap to change the page.

Like other paywall analytics events, payloads include shared context such as session_id, offering_id, paywall_id, paywall_revision (when available), display_mode, dark_mode, locale, and a timestamp, plus integration-specific wrappers (see sample JSON under Paywalls events on Amplitude and Mixpanel).

Interaction-specific properties

Package and product context use the same JSON keys on iOS, Android, and Web (snake_case in the wire payload). Only a subset applies per component_type / interaction.

JSON key (wire)Description
component_typeInteraction category (see tables below).
component_valueType-specific value (e.g. tab id, on / off, button action, purchase flow discriminator).
component_nameOptional; builder-dependent display name for the control.
component_urlPresent when relevant (e.g. URL buttons, some purchase flows).
origin_indexStarting index (e.g. carousel, tab strip).
destination_indexEnding index.
origin_context_nameOptional context label for the origin index.
destination_context_nameOptional context label for the destination index.
default_indexDefault / baseline index when applicable.
origin_package_idPackage identifier at the start of a transition.
destination_package_idPackage identifier after the transition.
default_package_idDefault package when applicable (e.g. sheet context).
current_package_idActive package before a change (e.g. sheet close).
resulting_package_idPackage after a change (e.g. sheet close).
origin_product_idProduct identifier aligned with origin_package_id.
destination_product_idProduct identifier aligned with destination_package_id.
default_product_idProduct aligned with default_package_id.
current_product_idProduct aligned with current_package_id.
resulting_product_idProduct aligned with resulting_package_id.

SDKs may fill missing product ids from package ids when the mapping is known at event time.

Interactions from paywalls built in the current editor

These are the component_type values you will see for paywalls created and shipped with the current RevenueCat Paywalls experience (dashboard editor, current templates).

component_typeTypical component_value / notes
tabTab identifier; index fields may describe tab positions.
switchon or off.
carouselUser-driven page changes; includes origin/destination indices. Auto-advance alone does not emit this event.
buttonNon-purchase actions such as restore_purchases, navigate_to_terms, navigate_to_privacy_policy, navigate_to_url, etc.
texte.g. navigate_to_url with component_url when applicable.
packagePackage selection / emphasis changes; includes package transition ids when relevant.
package_selection_sheetSheet lifecycle (e.g. open/close); may include current_* and resulting_* package/product ids on close.
purchase_buttonDiscriminators such as in_app_checkout, web_checkout, web_product_selection, custom_web_checkout; component_url when relevant.

Interactions from first-generation (legacy) paywall templates

Older, first-generation paywall templates may emit overlapping concepts with different component_type / component_value pairs, for example:

Control / actionTypical mapping
All plans / toggle planscomponent_value such as toggle_all_plans (from controls like All plans).
Restorerestore_button style interactions.
Terms / privacyterms_link, privacy_link, or button / navigate_to_* on editor-built paywalls.
Tier selectortier_selector.
Purchase rowpurchase_button with in_app_checkout where applicable.

component_name may be absent on some native paths depending on the template and SDK version; treat it as optional.

For how paywalls are presented on each platform, see Displaying Paywalls.

Was this page helpful?