In-app experiences (In-App AutomationMessages that are cached on users’ devices and displayed when your users meet certain conditions within your app, such as viewing a particular screen or opening the app a certain number of times. , ScenesMulti-screen experiences that are cached on users’ devices and displayed when your users meet certain conditions within your app, such as viewing a particular screen or opening the app a certain number of times. Scenes can include survey questions or be presented as a story. , and SurveysQuestion-and-answer experiences used to collect and aggregate feedback or generate a net promoter score. They are cached on users’ devices and displayed when your users meet certain conditions within your app, such as viewing a particular screen or opening the app a certain number of times. ) appear inside your app. They are stored on the user’s device then displayed according to the triggers you define. If you plan to use in-app experiences, we recommend that you offer some way for users to opt out of receiving them. The method and degree of urgency in applying these recommendations depends on whether the messages you plan to send are transactional or commercial.
This Privacy Best Practices guide does not, and is not intended to, provide legal or compliance advice.
Transactional Messages (Recommended)
A message is transactional if it is necessary in order to use your product or service. These are also called service messages. Examples include a purchase confirmation, receipt delivery, gate change notification. Other examples include app onboarding messages that educate users on the purpose of your app, how to use a feature, or describe the benefits of opting-in to push notifications or location services, etc.
Transactional messages can be enabled by default, but we strongly recommend that you expose the ability within your app for your app users to opt out of receiving in-app experiences.
To accomplish this, we recommend that you implement a switch to turn off in-app experiences within your app. This can be on your app-level Settings screen, a Privacy Settings screen, or any other place that’s convenient in your app and easily accessible by users of your app. The UI for this can be a toggle switch or a checkbox. Users typically access these settings screens through the main app’s navigation (often accessed through a “hamburger” icon).
Companies that are particularly sensitive to customer concerns about any type of messaging can implement a modal prompt within the UI to give their customers the chance to opt in to these messages, leaving in-app experiences disabled by default.
Commercial Messages (Required)
A message is considered a commercial or a marketing message if it informs the user about products or services other than the one they’re using. For sending commercial messages, we strongly recommend that you provide an easy way for users of your app to opt out of receiving commercial messages via in-app experience.
We recommend confirming opt-in to receive in-app commercial messages upon initial registration or sign-in to your app. This is typically done with a checkbox below a registration screen, and that checkbox can be enabled by default. You should collect this the first time that your app runs, on a welcome screen or sign-in screen, alongside any other user preferences that you collect at that time.
We also recommend exposing the ability to opt out at a later date through an Application Settings or Privacy Settings screen within your app’s navigation.
Privacy Manager Flag
You can use the In-App Automation privacy manager flag to enable or disable in-app experiences and other in-app features provided by the Airship SDK. Common use cases:
Self-service feature enablement — Allow users to toggle the In-App Automation feature on and off via a switch or checkbox view in an app’s global- or user-level settings screen.
User opt-in flow management — Initialize the Airship SDK with the In-App Automation flag disabled, then prompt users at a later time via a custom dialog that updates the privacy manager flag according to the user’s response.
See Data Collection for more information and sample code.