Tag Management/Tealium iQ

Enables remote configuration of JavaScript-based tags using Tealium iQ. All libraries supporting this feature implement a non-rendered web view to act as a host for the JavaScript tags. Data from tags is sent directly from the device to the tag vendor's server (e.g. Adobe, Criteo, Google). In order to use this feature, it must have been explicitly enabled in the remote publish settings (see, or in the case of the Swift library, it must be enabled in the native code when Tealium is initialized. If the Tag Management feature is disabled, the non-rendered web view will not be created, although the Android and iOS (Objective-C) libraries will still make a request for the "mobile.html" file, solely for the purposes of downloading the Mobile Publish Settings. This request comes from native code, and does not involve the web view.

Tealium Collect/UDH

Enables support for Tealium's Universal Data Hub (UDH) suite of products. When enabled, an HTTPS request will be sent directly to Tealium's servers for processing for each tracking call implemented in your app. This single HTTPS request can be used to power one or more of the following products simultaneously:

If you are not licensed for one of these products, you should disable the Tealium Collect service in your app, which can be done through the remote publish settings. For Swift, you will need to make sure the module is disabled, as it does not currently utilize the remote publish settings feature.

This feature may be used in conjunction with the Tag Management feature, but please ensure that you do not also have the Collect Tag set up through Tealium iQ, as this will lead to double-counting (1 hit from the native Collect service, and one from the Tealium iQ Collect Tag).

Collect Tag vs. Native Collect Module

If you are already using Tealium iQ in your app, then using the Collect Tag offers some advantages over the native Collect module. The main benefit is that you have the ability to manipulate data using Extensions in Tealium iQ before the data is transmitted to the UDH. You can also use load rules to filter which events are sent to the UDH. If you are using the native Collect module, all events are sent to the UDH, and there are no options to manipulate the data, apart from by using Enrichments in the UDH.

If, however, you do not need to use Tealium iQ for tag delivery (e.g. you are using EventStream to deliver your data to 3rd party tag vendors), then the Collect module offers some advantages; exclusively using the Collect module and disabling Tag Management will result in fewer HTTP(s) requests being made from the app, since instead of sending data to multiple vendors directly from the device, only a single request is sent to Tealium per tracking call implemented in the app. This may help to reduce battery and data consumption, resulting in a better experience for your end-users.

Additionally, if you are using AudienceStream, the native module offers built-in Data Layer Enrichment (DLE) callbacks which can be used to personalize your app based on known visitor attributes (e.g. high value customers could receive additional features or promotions, based on the cross-device data Tealium holds in AudienceStream). If you implement the Collect Tag through Tealium iQ, DLE will still function as expected, but visitor attributes will only be available at the JavaScript-level inside the non-rendered web view.

Remote Commands

Remote Commands (also known as TagBridge/Dynamic Triggers) provide the ability to trigger native code blocks from within the Tealium iQ non-rendered web view. For this reason, they can only be used if you have implemented/enabled the Tag Management feature/module in your app. Only remote commands that have been explicitly enabled will be able to run (there is no way for Tealium iQ to execute arbitrary code on the device).

This feature is primarily used for cases where data held inside the non-rendered web view needs to be passed back to the native code for further processing (e.g. you may need to access a value stored in a cookie or localStorage inside the Tealium iQ web view). Another use for this feature would be to personalise parts of your app, for example, you may wish to trigger a survey in the app once the user has been through a particular journey, such as making a purchase.

The flow for this particular example would be:

  1. Create some generic native code capable of triggering a local notification on the device, which prompts the user to take a survey.
  2. Register this block of code as a Remote Command with the Tealium API (See Links).
  3. In Tealium iQ, create a new "TagBridge Custom Command" tag, and make sure the command ID matches the command ID you used to register the command in the native code.
  4. Mappings can be set up to pass specific data variables back to the app, for example, you might wish to pass a customized survey message back to the app, e.g. "Thank you for making a purchase. Would you mind taking a short survey?". You might also pass back a specific URL to open when the user clicks the notification, so that you can pass the user through to a specific web-hosted survey using your survey tool of choice.
  5. In the app, the native code should look for specific variables passed back in the response (e.g. "survey_url" and "survey_title"), display the message in the notification, and launch a web view or the native browser when the user clicks the notification.
  6. If you wish to change the survey URL, or the message displayed to the user, you can now control this through Tealium iQ extensions, without needing to re-deploy your app. You can also disable the survey at-will, or change the trigger that leads to the survey being displayed (e.g. display on the home screen instead of the order confirmation screen).

There are many other potential uses for Remote Commands, including remote configuration of 3rd party SDKs in your app. Speak to your account manager/deployment engineer if you have any questions.

Lifecycle Tracking

Each platform has its own Lifecycle module, which enables automatic tracking of app lifeycle events (launch, wake, sleep) and associated data.

Mobile Publish Settings (MPS)

Mobile Publish Settings allow you to remotely control some aspects of the Tealium SDKs' functionality, without needing to deploy an app update. You can read full details in this article:


In addition to passing specific data layer variables with each tracking call, some variables need to remain consistent throughout your app's lifecycle. Instead of manually sending these variables with every request, you can use one of our storage APIs to automatically add the data to each request.

Volatile Storage

Items added to volatile storage are kept until the app is cleared from memory (i.e. force-closed/restarted). From the point you set a volatile data variable, it will be sent on every subsequent request automatically until it is cleared. Volatile data is not stored on disk, so will not contribute to the app's disk usage footprint on the device.

Persistent Storage

Items added to persistent storage are kept for the lifetime of the app (until the user uninstalls the app or manually clears the app's data), or until you clear the variable via the API. Like volatile variables, persistent variables are sent with every tracking call until they are cleared. An example of a variable you might like to keep in persistent storage is a visitor id, such as a user's email address.