Data Collection

Overview of data collection and controls provided by the Airship SDK.

Privacy Manager

Data collected by the Airship SDK can be controlled using Privacy Manager flags. Each flag enables additional Airship features within the SDK and controls what data is collected. The flags are for individual or groups of functional features within the SDK. Some Airship features, such as contact tags, require enabling multiple flags.

Privacy Manager FlagFeatures
PushPush notifications
In-App AutomationIn-App Automation, In-App Messages, Scenes, and Landing Pages
Message CenterMessage Center
Tags and AttributesTags, Attributes, Subscription Lists, and Preference Center
ContactsContact Tags, Attributes, and Subscription Lists; Named User; and Associated Channels
AnalyticsAssociated identifiers, Custom events, Screen tracking, Surveys (questions and NPS surveys in ScenesA single or multi-screen in-app experience cached on users’ devices and displayed when users meet certain conditions in your app or website, such as viewing a particular screen or when a Custom Event occurs. They can be presented in fullscreen, modal, or embedded format using the default swipe/click mode or as a Story. Scenes can also contain survey questions.), Feature FlagA toggle for controlling the availability of content or functionality in your app or website. A flag’s Configurations determine the audience, schedule, and property values to apply when the flag is enabled. Flag properties enable making immediate code updates, bypassing the need for traditional code changes and release processes. interaction
Feature FlagsFeature Flag evaluation and interaction

SDK Data Collection

All SDK features are enabled by default, but the SDK can be configured to disable all or a subset of features on start. If the SDK is initialized without any features enabled, it will not store any data or make any network requests. If the SDK features are disabled after being previously enabled, it may make a few network requests to opt the channel out to prevent notifications.

 Note

The data collected automatically by the SDK is not used to track users across apps.

DataDescriptionPrivacy Manager Features
Channel IDAirship app install identifier.Any
LocaleThe app’s locale, comprised of language and language country.Any
Time zoneThe device time zone.Any
PlatformThe platform the device is running on, e.g., Android, Fire OS, iOS.Any
SDK versionThe Airship SDK version.Any
Notification opt-In statusNotifications and background opt-in status.Any
Contact IDInternal Airship ID that maps to contact.Contacts
App versionThe app’s version.Analytics, In-App Automation
Message Center credentialsThe message center credentials for message list access.Message Center
Message Center message statusMessage reads and deletes.Message Center
Push tokenThe push address for push notifications.Push
Push providerThe push delivery platform, e.g., FCM, HMS.Push
Device modelThe device model, e.g., Samsung GT-S5830L, iPad Air.Analytics
Device manufacturerThe device manufacturer name.Analytics
OS versionThe device OS version.Analytics
CarrierThe device mobile carrier.Analytics
Connection TypeThe connection type, e.g., Cell, Wifi.Analytics
FrameworkAirship framework usage: React Native, Unity, Cordova, Flutter, Titanium, and .NET Maui.Analytics
Lifecycle eventsInit, foreground, background, and time in app.Analytics
Scheduled summary1Scheduled summary notification status. Only collected if it is being used.Analytics
Time sensitive1Time sensitive notification status. Only collected if it is being used.Analytics
Notification eventsPush notification interaction events.Analytics, Push
Notification permissionsAuthorized notification types and permissions.Analytics, Push
In-App Automation eventsEvents within an In-App display: displays, resolutions, page views, button taps, and survey results.Analytics, In-App Automation

1. iOS 15+ only

App Data Collection

In addition to the data automatically collected by the SDK, the app can provide data to the SDK for collection:

DataDescriptionPrivacy Manager Features
Channel TagsTags and tag groups set on the channelTags and Attributes
Channel Subscription ListsSubscription Lists set on the channelTags and Attributes
Channel AttributesAttributes set on the channelTags and Attributes
Contact TagsTags and tag groups set on the contactTags and Attributes, Contacts
Contact Subscription ListsSubscription Lists set on the contactTags and Attributes, Contacts
Contact AttributesAttributes set on the contactTags and Attributes, Contacts
Named UserContact’s external IDContacts
Associated ChannelsEmail and email opt-in data, SMS and SMS opt-in data, etc.Contacts
Associated IdentifiersAdditional analytics identifiersAnalytics
Custom EventsApp’s custom eventsAnalytics
Screen TrackingApp’s screen trackingAnalytics
Permission CollectionAdditional permissions collected by the SDKAnalytics
Feature Flag InteractionEvents related to Feature FlagsA toggle for controlling the availability of content or functionality in your app or website. A flag’s Configurations determine the audience, schedule, and property values to apply when the flag is enabled. Flag properties enable making immediate code updates, bypassing the need for traditional code changes and release processes.Feature Flags, Analytics

Data Privacy

Airship makes HTTPS encryption (also referred to as TLS connection) available for data in transit to or from the Service. For more information, see Airship Security Measures. Data collected by the SDK is not transferred to any third parties unless a partner integration is enabled and configured by the application. For information on individual data requests, see Individual Data Privacy Rights.

Using Privacy Manager

The Privacy Manager allows setting default enabled features as well as modifying the enabled features at runtime. This table provides a mapping of the flags:

Privacy Manager Flags

Privacy Manager FlagKotlin ConstantAirshipConfig Value
PushPrivacyManager.Feature.PUSHpush
In-App AutomationPrivacyManager.Feature.IN_APP_AUTOMATIONin_app_automation
Message CenterPrivacyManager.Feature.MESSAGE_CENTERmessage_center
Tags and AttributesPrivacyManager.Feature.TAGS_AND_ATTRIBUTEStags_and_attributes
ContactsPrivacyManager.Feature.CONTACTScontacts
Feature FlagsPrivacyManager.Feature.FEATURE_FLAGSfeature_flags
AnalyticsPrivacyManager.Feature.ANALYTICSanalytics
AllPrivacyManager.Feature.ALLall
NonePrivacyManager.Feature.NONEnone
Privacy Manager FlagJava ConstantAirshipConfig Value
PushPrivacyManager.Feature.PUSHpush
In-App AutomationPrivacyManager.Feature.IN_APP_AUTOMATIONin_app_automation
Message CenterPrivacyManager.Feature.MESSAGE_CENTERmessage_center
Tags and AttributesPrivacyManager.Feature.TAGS_AND_ATTRIBUTEStags_and_attributes
ContactsPrivacyManager.Feature.CONTACTScontacts
Feature FlagsPrivacyManager.Feature.FEATURE_FLAGSfeature_flags
AnalyticsPrivacyManager.Feature.ANALYTICSanalytics
AllPrivacyManager.Feature.ALLall
NonePrivacyManager.Feature.NONEnone
Privacy Manager FlagSwift ConstantAirshipConfig Value
PushFeatures.pushpush
In-App AutomationFeatures.inAppAutomationin_app_automation
Message CenterFeatures.messageCentermessage_center
Tags and AttributesFeatures.tagsAndAttributestags_and_attributes
ContactsFeatures.contactscontacts
AnalyticsFeatures.analyticsanalytics
AllFeatures.allall
None[]none
Privacy Manager FlagObjective-C ConstantAirshipConfig Value
PushUAFeaturesPushpush
In-App AutomationUAFeaturesInAppAutomationin_app_automation
Message CenterUAFeaturesMessageCentermessage_center
Tags and AttributesUAFeaturesTagsAndAttributestags_and_attributes
ContactsUAFeaturesContactscontacts
AnalyticsUAFeaturesAnalyticsanalytics
AllUAFeaturesAllall
NoneUAFeaturesNonenone
Privacy Manager FlagJS Constant
PushFeature.Push
In-App AutomationFeature.InAppAutomation
Message CenterFeature.MessageCenter
Tags and AttributesFeature.TagsAndAttributes
ContactsFeature.Contacts
AnalyticsFeature.Analytics
AllFEATURES_ALL
None[]
Privacy Manager FlagDart ConstantAirshipConfig Value
PushFeature.pushpush
In-App AutomationFeature.inAppAutomationin_app_automation
Message CenterFeature.messageCentermessage_center
Tags and AttributesFeature.tagsAndAttributestags_and_attributes
ContactsFeature.contactscontacts
AnalyticsFeature.analyticsanalytics
AllN/Aall
None[]none
Privacy Manager FlagValue
Push“push”
In-App Automation“in_app_automation”
Message Center“message_center”
Tags and Attributes“tags_and_attributes”
Contacts“contacts”
Analytics“analytics”
All“all”
None[]
Privacy Manager FlagValue
Push“push”
In-App Automation“in_app_automation”
Message Center“message_center”
Tags and Attributes“tags_and_attributes”
Contacts“contacts”
Analytics“analytics”
All“all”
None[]
Privacy Manager FlagC# ConstantAirshipConfig Value
PushFeatures.Pushpush
In-App AutomationFeatures.InAppAutomationin_app_automation
Message CenterFeatures.MessageCentermessage_center
Tags and AttributesFeatures.TagsAndAttributestags_and_attributes
ContactsFeatures.Contactscontacts
AnalyticsFeatures.Analyticsanalytics
ChatFeatures.Chatchat
LocationFeatures.Locationlocation
AllFeatures.Allall
NoneFeatures.Nonenone
Privacy Manager FlagJS Constant
PushfeaturePush
In-App AutomationfeatureInAppAutomation
Message CenterfeatureMessageCenter
Tags and AttributesfeatureTagsAndAttributes
ContactsfeatureContacts
AnalyticsfeatureAnalytics
ChatfeatureChat
LocationfeatureLocation
AllfeatureAll
NonefeatureNone
Privacy Manager FlagString Feature Name
Push“FEATURE_PUSH”
In-App Automation“FEATURE_IN_APP_AUTOMATION”
Message Center“FEATURE_MESSAGE_CENTER”
Tags and Attributes“FEATURE_TAGS_AND_ATTRIBUTES”
Contacts“FEATURE_CONTACTS”
Analytics“FEATURE_ANALYTICS”
Chat“FEATURE_CHAT”
Location“FEATURE_LOCATION”
All“FEATURE_ALL”
None“FEATURE_NONE”

Configuring Default Enabled Features

Default enabled features can be set in the Airship Config options.

Setting default features

airshipconfig.properties
  enabledFeatures = push
AirshipConfigOptions
val options = AirshipConfigOptions.newBuilder()
        // ...
        .setEnabledFeatures(PrivacyManager.Feature.PUSH)
        .build()
airshipconfig.properties
  enabledFeatures = push
AirshipConfigOptions
AirshipConfigOptions options = AirshipConfigOptions.newBuilder()
        // ...
        .setEnabledFeatures(PrivacyManager.Feature.PUSH)
        .build();
Config
let config = Config.default()
config.enabledFeatures = [.push]
AirshipConfig.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  ...
  <key>enabledFeatures</key>
  <array/>
    <string>push</string>
  </array>
  ...
</dict>
</plist>
UAConfig
UAConfig *config = [UAConfig defaultConfig];
config.enabledFeatures = UAFeaturesPush;
AirshipConfig.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  ...
  <key>enabledFeatures</key>
  <array/>
    <string>push</string>
  </array>
  ...
</dict>
</plist>
Config
await Airship.takeOff({
    // ...
    enabledFeatures: [Feature.Push]
})
Config
Airship.takeOff({
    // ...
    enabledFeatures: [Feature.push]
})
Airship.takeOff({
    // ...
    enabledFeatures: ["push"]
})
await Airship.takeOff({
    // ...
    enabledFeatures: ["push"]
})
airshipconfig.properties
enabledFeatures = push
AirshipConfig.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  ...
  <key>enabledFeatures</key>
  <array/>
    <string>push</string>
  </array>
  ...
</dict>
</plist>
Config
Airship.takeOff({
    // ...
    "enabledFeatures": ["push"]
})
// Configure via 'Window > UrbanAirship > Settings' UI

To fully disable data collection by default, just set the enabled features to none.

Disabling all features

airshipconfig.properties
  enabledFeatures = none
AirshipConfigOptions
val options = AirshipConfigOptions.newBuilder()
        // ...
        .setEnabledFeatures(PrivacyManager.Feature.NONE)
        .build()
airshipconfig.properties
  enabledFeatures = none
AirshipConfigOptions
AirshipConfigOptions options = AirshipConfigOptions.newBuilder()
        // ...
        .setEnabledFeatures(PrivacyManager.Feature.NONE)
        .build();
Config
let config = Config.default()
config.enabledFeatures = []
AirshipConfig.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  ...
  <key>enabledFeatures</key>
  <array/>
    <string>none</string>
  </array>
  ...
</dict>
</plist>
UAConfig
UAConfig *config = [UAConfig defaultConfig];
config.enabledFeatures = UAFeaturesNone;
AirshipConfig.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  ...
  <key>enabledFeatures</key>
  <array/>
    <string>none</string>
  </array>
  ...
</dict>
</plist>
Config
await Airship.takeOff({
    // ...
    enabledFeatures: []
})
Config
Airship.takeOff({
    // ...
    enabledFeatures: []
})
Airship.takeOff({
    // ...
    enabledFeatures: []
})
await Airship.takeOff({
    // ...
    enabledFeatures: []
})
airshipconfig.properties
enabledFeatures = none
AirshipConfig.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  ...
  <key>enabledFeatures</key>
  <array/>
    <string>none</string>
  </array>
  ...
</dict>
</plist>
Config
Airship.takeOff({
    // ...
    "enabledFeatures": ["none"]
})
// Configure via 'Window > UrbanAirship > Settings' UI

Modifying Enabled Features

Features can be enabled and disabled at any time after takeOff. Once a feature set is modified from the default, those settings will be persisted in the SDK between app inits.

Enabling features

UAirship.shared().privacyManager.enable(PrivacyManager.Feature.PUSH, PrivacyManager.Feature.ANALYTICS)
UAirship.shared().getPrivacyManager.enable(PrivacyManager.Feature.PUSH, PrivacyManager.Feature.ANALYTICS);
Airship.privacyManager.enableFeatures([.push, .analytics])
[UAirship.privacyManager enableFeatures:UAFeaturesPush | UAFeaturesAnalytics];
await Airship.privacyManager.enableFeatures([Feature.Push, Feature.Analytics]);
Airship.privacyManager.enableFeatures([Feature.push, Feature.analytics]);
Airship.privacyManager.enableFeatures(["push", "analytics"]);
await Airship.privacyManager.enableFeatures(["push", "analytics"])
Airship.Instance.EnableFeatures(Features.Push | Features.Analytics);
Airship.privacyManager.enable([featurePush, featureAnalytics])
Airship.Shared.EnableFeatures(new string[]{"FEATURE_PUSH", "FEATURE_ANALYTICS");

Disabling features

  UAirship.shared().privacyManager.disable(PrivacyManager.Feature.PUSH, PrivacyManager.Feature.ANALYTICS)
  UAirship.shared().getPrivacyManager().enable(PrivacyManager.Feature.PUSH, PrivacyManager.Feature.ANALYTICS);
Airship.privacyManager.disableFeatures([.push, .analytics])
[UAirship.privacyManager disableFeatures:UAFeaturesPush | UAFeaturesAnalytics];
await Airship.privacyManager.disableFeatures([Feature.Push, Feature.Analytics]);
Airship.privacyManager.disableFeature([Feature.push, Feature.analytics]);
Airship.privacyManager.disableFeature(["push", "analytics"]);
await Airship.privacyManager.disableFeatures(["push", "analytics"])
Airship.Instance.DisableFeatures(Features.Push | Features.Analytics);
Airship.privacyManager.disable([featurePush, featureAnalytics])
Airship.Shared.DisableFeatures(new string[]{"FEATURE_PUSH", "FEATURE_ANALYTICS");