Data We Collect as Part of the Digital Wellbeing Initiative

We are gathering data from volunteers to explore unhealthy phone usage, its underlying causes, and ways to encourage healthier habits with our Digital Wellbeing Initiative.

We want to be as transparent as possible about the initiative, so this article covers precisely what data we collect.

If you're participating in the initiative, you can also request your data at any point by opening Niagara Launcher's settings > Advanced > Analytics > Digital Wellbeing Initiative > Request my data.

If you are interested in what changed in the update of the Digital Wellbeing Initiative in October of 2024, please refer to Digital Wellbeing Initiative • What changes?

Data Export

When using the automated ‘Request my data’ function, you will receive a file in JSON format. JSON stands for JavaScript Object Notation and is a structured, widely used format that both computers and humans can understand. JSON files can be easily opened in Notepad or dragged and dropped into a browser such as Chrome or Firefox.

Our JSON file contains an array of usage reports. Niagara Launcher generates a usage report approximately once a day. It includes all data collected after participation in the Digital Wellbeing Initiative that has not already been included in a previous usage report.

Each usage report contains metadata fields (like when the report was generated) and arrays of entries for your home screen categories, your app launches, received notifications, activities, and answered surveys. We'll review each field of the usage report and its entries and explain its purpose.

  • usageId: String - a randomly generated unique identifier for your device on which Niagara Launcher is installed. It resets when you uninstall Niagara Launcher or disable analytics.
  • versionCode: Integer - Each version of Niagara Launcher has its own version code. For example, Niagara Launcher v1.3.0 has the internal version code 470.
  • androidSdkVersion: Integer - the Android version that is installed on your device. Corresponds to API level on this list, e.g., 35 corresponds to Android 15.
  • deviceManufacturer: String - your device's company.
  • deviceModel: String - the name of your device.
  • country: String - your country according to your mobile network.
  • uploadTime: Integer - When the report was uploaded, to check if the user's clock is synchronized
  • startTime: Integer - All of the report entries' timestamps are greater or equal to the value of this field.
  • endTime: Integer - All of the report entries' timestamps are lesser than the value of this field.
  • timeZoneOffset: The time zone offset for the uploadTime field.
  • flags: String array - Field contains
    • proUnlocked if you purchased Niagara Pro.
    • notificationSummaryEnabled if you enabled the notification summary feature.

Home Screen Category Entries

This field describes your installed apps and how you categorize your apps, shortcuts, widgets, and folders on your home screen. For example, all apps you have added to your favorites will be listed here. A home screen category entry event appears in your report each time an app, shortcut, widget, or folder is added to one of the categories, and approximately every 85 days if the item remains in the category.

  • packageName: String - ID of the item's corresponding app
  • appCategory: String - The category the app belongs to (e.g., "shopping" or "text messaging"). It is only set if the package name gets redacted.
  • className: String - ID of the item, together with the packageName. This field is not always set and can be empty to protect your privacy or because we don't need to store it.
  • infoType: String - The type of item. It can be app, shortcut, or widget.
  • homeScreenCategory: String - The category to which this item is added, e.g., ‘favorites.’

Launches

This field contains home screen launches (apps you open through Niagara Launcher). If you are granted Niagara Launcher usage access, it would also contain app use sessions (apps you open from Niagara Launcher, Android's recents screen, or any other place). Each home screen app launch also triggers an app use session, so there can be duplicate data. You can filter out app use sessions or home screen app launches by checking if infoType is set to appUseSession.

  • packageName: String - Primary ID of the item that was launched.
  • appCategory: String - The category the app belongs to (e.g., "shopping" or "text messaging"). It is only set if the package name gets redacted.
  • className: String - Along with the package name, this identifies the item on your home screen from where you launched the app. This field is not always set and can be empty to protect your privacy or because we don't need to store it.
  • infoType: String - Type of item from where you launched if the event represents a home screen launch. In this case, it can be app, shortcut, widget. If the event represents an app use session, it will be set to appUseSession.
  • time: Integer - Timestamp of when the launch occurred.
  • timeZoneOffset: Integer - Time zone offset of the time field.
  • duration: Integer - Indicates how long you used the app. Only set for app use sessions.
  • flags: String array - Only non-empty for home screen launches. In this case, the field contains
    • screenHome if you launched the app from your home screen.
    • screenAllApps if you launched the app from your all-apps list.
    • screenSearch if you launched an item from search.
    • screenMisc if you launched the app from any other screen.
    • launchedFromPopUp if you launched the app from a pop-up.
    • notificationAttached if the launched app displayed a notification while it was being launched.
    • isSuggestion You launched the app from Niagara's suggestions that show up below your favorites.

This field contains an entry for each notification you received that was already removed by yourself, an app, or the system. Does not include any of the notifications' content.

  • packageName: String - The id of the app that sent a notification.
  • appCategory: String - The category of the app the notification belongs to (e.g., "shopping" or "text messaging"). It is only set if the package name gets redacted.
  • postTime: Integer - Timestamp of when the notification was sent.
  • removalTime: Integer - Timestamp of when the notification was removed, either by you, the system, or an app.
  • timeZoneOffset: Integer - Time zone offset of the removal time field.
  • removeReason: String - Reason why the notification was removed. You can find all the reasons on this page.
  • category: String - The type of notification you received (e.g., message, email, alarm). Corresponds to Android's notification category field.
  • userSentiment: String - How Android thinks you feel about the notification. It can be negative, neutral, or positive.
  • importance: String - The importance of the notification, which dictates where it's shown and if it should make a sound. It can be min (Only shows in the shade, below the fold), low (Shows in the shade, and potentially in the status bar), default (shows everywhere, makes noise, but does not visually intrude), high (shows everywhere, makes noise and peeks).
  • flags: String array - Field contains
    • isDismissable if you could dismiss the notification.
    • isInNotificationGroup if the notification can be bundled in a group.
    • shownAsBubble if the notification appeared as a bubble (Android 11+ feature).
    • shownOnHomeScreen if the notification should be displayed on home screens.
    • isGroupConversation if the notification contains a group conversation.
    • isConversation if the notification contains a conversation.
    • hasUserSetImportance if you have chosen the notification's importance.
    • isGroupSummary if the notification summarizes other notifications.
    • layoutUnsupported if Niagara Launcher cannot display the notification because its layout is unsupported.

Activities

This field tells us when you're using your phone or certain features.

  • type: String - Can be phoneInteractive (The phone has become interactive), phoneInteractivePrecise (same as phoneInteractive but the event comes from Android's usage stats API which might be more reliable), morningModeActive (morning mode was activated), or usageBreakerNotificationShown (the launcher displayed a heads-up notification triggered by our usage breaker feature to notify about your leisure usage)
  • startTime: Integer - Timestamp of when the activity started.
  • duration: Integer - The length of the activity in ms.
  • timeZoneOffset: Integer - The time zone offset of the startTime field.

Survey Responses

This field contains an entry for each survey you answered in Niagara Launcher.

  • questionType: String - The type of question that you answered.
  • questionText: String - The text we have asked.
  • questionReference: String - This field can be set if the question refers to a particular event. For example, if you have been asked how you feel about a specific app, this field would contain the app's package name.
  • responseData: String - Similar to responseText, but contains the IDs of the responses, which makes it easier to analyze them.
  • responseText: String - The exact answer you have given as an escaped array (since some surveys allow you to select multiple responses simultaneously).
  • time: Integer - The timestamp of when you answered the survey.
  • timeZoneOffset: Integer - The time zone offset of the time field.

Special Types Explained

  • Timestamp: Represents a point in time given in the number of milliseconds that have elapsed since the Unix epoch (Jan 1st, 1970).
  • TimezoneOffset: This field contains your timezone to calculate your local time. This lets us see, for example, at which time of day you received a notification. This is the difference in milliseconds from Coordinated Universal Time (UTC) for your region and the date when an event was logged.
  • Flags: An array of strings where each entry represents a boolean field that is true.
  • PackageName: This serves as an identifier for apps. Each app has a package name. The package name for Niagara Launcher is bitpit.launcher, for example. The easiest way to get the package name of a particular app (published on Google Play) is to go to the app's Google Play Store page in your browser and then look at its URL. It will contain the parameter "id," which tells us the package name. For example, here's the URL of Niagara Launcher's page on Google Play: https://play.google.com/store/apps/details?id=bitpit.launcher. This field is not always set and can be empty to protect your privacy.
  • ClassName: Along with the package name, the class name identifies an item on your home screen. The package name alone isn't always sufficient because you can have multiple items (e.g., shortcuts or widgets) of the same app on your home screen. This field is not always set and can be empty to protect your privacy or because we don't need to store it.
  • RemoveReason: Reason why a notification was removed. Is one of the following:
    • niagaraClick: Notification was canceled by Niagara Launcher reporting a notification click.
    • niagaraCancel: Notification was canceled by Niagara Launcher reporting a user dismissal.
    • niagaraBatchScheduled: Notification was canceled by Niagara Launcher to deliver it in a batch.
    • niagaraBatchClick: Notification was canceled by Niagara Launcher reporting a notification click in the batch dialog.
    • niagaraBatchCancel: Notification was canceled by Niagara Launcher reporting a user dismissal in the batch dialog.
    • niagaraBatchCancelAll: Notification was canceled by Niagara Launcher reporting a user dismiss all in the batch dialog.
    • misc: Notification was canceled for an unknown reason.
    • click: Notification was canceled by the status bar reporting a notification click.
    • cancel: Notification was canceled by the status bar reporting a user dismissal.
    • cancelAll: Notification was canceled by the status bar reporting a user dismiss all.
    • packageBanned: Notification was canceled by the user banning the package. (User disabled all notifications for package.)
    • appCancel: Notification was canceled by the app canceling this specific notification.
    • appCancelAll: Notification was canceled by the app cancelling all its notifications.
    • listenerCancel: Notification was canceled by a listener reporting a user dismissal.
    • listenerCancelAll: Notification was canceled by a listener reporting a user dismiss all.
    • groupSummaryCanceled: Notification was canceled because it was a member of a canceled group.
    • groupOptimization: Notification was canceled because it was an invisible member of a group.
    • profileTurnedOff: Notification was canceled by the owning managed profile being turned off.
    • unautobundled: Autobundled summary notification was canceled because its group was unbundled.
    • channelBanned: Notification was canceled by the user banning the channel. (User disabled notifications of notification channel.)
    • snoozedByUser: Notification was snoozed.
    • timeout: Notification was canceled due to timeout.
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us