Skip to main content

Overview

Helium emits paywall and lifecycle events related to paywalls, purchasing, configuration, and experimentation. This page acts as a reference to what events are available in Helium, and when each one is fired. Visit each SDK’s quickstart page to see how to listen for and handle events.

Event Types

Available Events

Paywall and Purchase Events

System Events

Experiment Events

Accessing ExperimentInfo from Events

All paywall events (any event that implements PaywallContextEvent) provide a getExperimentInfo() method to access experiment allocation data on-demand:
You can also access experiment info directly by trigger:

Fetch experiments for this user

You can also fetch all experiments for the current user with a few methods available on the Helium top level object. Make sure to call these methods after Helium.shared.initialize()

ExperimentInfo Structure

The experimentInfo object in the userAllocated event contains experiment allocation data. This event fires once per session when a user is assigned to an experiment variant, which happens on the first trigger the user sees.

Core Fields

Experiment Details

Targeting Details

Variant Details

Hash Details

These fields provide information about how the user was deterministically assigned to a variant.

Logged Events

All Helium events (see the full list above) get logged to your analytics backend automatically with automatic event forwarding, along with the parameters listed there. Each event’s parameters will usually show up as event properties.
Event names and properties might show up as underscored/camelcase/JSON, depending on the platform.
In addition, all lifecycle, paywall, downloadSuccess, and experimental events will include contextual and custom traits as event parameters:

Contextual Traits

Helium automatically and securely collects device and software attributes:
  • Locale: country, currency, currency symbol, language, preferred languages, time zone, decimal separator, uses metric system
  • Screen: brightness, bounds, native bounds, scale, native scale, dark mode enabled
  • Device: device identifier, orientation, system name, system version, device model, interface idiom, storage capacity
  • Application: version, build number, app name, Helium SDK version, environment

Custom Traits

Custom user traits included in the Helium.initialize() call also get sent as part of all events. If you pass custom user traits as part of a paywall presentation method call, these will override any custom traits of the same name passed in during initialize().