SDK data collection
When you integrate the Braze SDK with your app or site, Braze automatically collects certain types of data. Some of this data is essential for our processes and some of this data can be turned on or off based on your needs. You can also configure Braze to collect additional types of data to further power your segmentation and messaging.
Braze is designed to allow for flexible data collection, so you can integrate the Braze SDK in the following ways:
- Minimum integration: Braze automatically collects data that is necessary to communicate with Braze services.
- Optional data collected by default: Braze automatically captures some data that is broadly useful for most of your use cases. You can opt to disable automatically collecting this data if it’s non-essential for communication with Braze services.
- Optional data not collected by default: Braze captures some data that is useful for certain use cases and doesn’t automatically enable the collection for broad compliance reasons. You can opt to collect this data where it suits your use cases.
- Personalized integration: Braze gives you the flexibility to collect data in addition to the default optional data.
Minimum integration
The following lists the strictly necessary data generated and received by Braze when you initialize the SDK. This data is non-configurable and is essential in core platform functions. Except for session start and session end, all other automatically tracked data doesn’t count toward your data point allotment.
Attribute | Description | Why it’s collected |
---|---|---|
App-Version-Name / App-Version-Code |
The most recent app version | This attribute is used to send messages related to app version compatibility to the correct devices. It can be used to notify users of service disruptions or bugs. |
Country | Country identified by IP address geolocation | This attribute is used to target messages based on location. |
Device ID | Device identifier, a randomly generated string | This attribute is used to differentiate users’ devices and send messages to the correct device. |
OS and OS version | Currently reported device or browser and device or browser version | This attribute is used to only send messages to compatible devices. It can also be used within segmentation to target users to upgrade app versions. |
Session start and session end | When the user begins using your integrated app or site | The Braze SDK reports session data used by the Braze dashboard to calculate user engagement and other analytics integral to understanding your users. Exactly when the session start and session end is called by your app or site is configurable by a developer (Android, iOS, Web). |
SDK message interaction data | Push direct opens, in-app message interactions, Content Card interactions | This attribute is used for quality control purposes, like checking that a message was received and that sending isn’t duplicated. |
SDK version | Current SDK version | This attribute is used to only send messages to compatible devices and avoid service disruption. |
Session ID and session timestamp | Session identifier, a randomly generated string and session timestamp | Used to determine whether the user is starting a new or existing session and to determine re-eligibility of messages intended for this user. Certain messaging channels such as in-app messages and Content Cards are synchronized to the device upon session start. Our backend will then use data related to when it last contacted Braze servers (which the device stores and sends back) to know if the user is eligible for any new messages. |
Calculated metrics
Braze generates metrics calculated on SDK data, message interaction data related to non-SDK messages, and derived information. For clarity, this calculated data is not tracked by the SDK but generated by the Braze services, and a user profile will display both tracked data and generated data.
Calculated metrics include the following attributes.
Attribute | Description |
---|---|
First used app | Time |
Last used app | Time |
Total session count | Number |
Clicked card | Number |
Last received any message | Time |
Last received email campaign | Time |
Last received push campaign | Time |
Number of feedback items | Number |
Number of sessions in the last Y days | Number and time |
Received message from campaign | Boolean. This filter targets users based on whether they have received a previous campaign. |
Received message from campaign with tag | Boolean. This filter targets users based on whether they have received a campaign that currently has a tag. |
Retarget campaign | Boolean. This filter targets users based on whether they have opened or clicked on a specific email, push, or in-app message in the past. |
Uninstalled | Boolean and time |
If you’re interested in only the minimum integration, and you integrate with mParticle, Segment, Tealium, or GTM, note the following:
- Mobile platforms: You must manually update the code for these configurations. mParticle and Segment don’t offer a way to do this through their platform.
- Web: Braze integration must be done natively to allow for the minimum integration configuration. Tag managers don’t offer a way to do this through their platform.
Optional data collected by default
In addition to the minimum integration data, the following attributes are automatically captured by Braze when you initialize the SDK integration. You can opt-out of collecting these attributes to allow for a minimum integration.
Attribute | Platform | Description | Why it’s Collected |
---|---|---|---|
Browser name | Web | Name of the browser | This attribute is used to only send messages to compatible browsers. It can also be used for browser-based segmentation. |
Device locale | Android, iOS | The default locale of the device | This attribute is used to translate messages to a user’s preferred language. |
Device model | Android, iOS | The specific hardware of the device | This attribute is used to only send messages to compatible devices. It can also be used within segmentation. |
Device brand | Android | The brand of device (for example, Samsung) | This attribute is used to only send messages to compatible devices. |
Device wireless carrier | Android, iOS | The mobile carrier | This attribute is optionally used for message targeting. Note: This field has been deprecated as of iOS 16 and will default to -- in a future iOS version. |
Language | Android, iOS, Web | Device or browser language | This attribute is used to translate messages to a user’s preferred language. |
Notification settings | Android, iOS, Web | Whether this app has push notifications enabled. | This attribute is used to enable push notifications. |
Resolution | Android, iOS, Web | Device or browser resolution | Optionally used for device-based message targeting. The format of this value is “<width> x<height> ”. |
Time zone | Android, iOS, Web | Device or browser time zone | This attribute is used to send messages at the appropriate time, according to each user’s local time zone. |
User agent | Web | User agent | This attribute is used to only send messages to compatible devices. It can also be used within segmentation. |
To learn more about tracking device-level properties (such as device wireless carrier, time zone, resolution, and others), see the platform-specific documentation: Android, iOS, Web.
Data not collected by default
By default, the following attributes aren’t collected. Each attribute needs to be manually integrated.
Attribute | Platform | Description | Why it’s Not Collected |
---|---|---|---|
Device Ad Tracking Enabled | Android, iOS | On iOS:set(adTrackingEnabled:) On Android: Braze.setGoogleAdvertisingId() |
This property requires additional app-level permissions, which must be granted by the integrator. |
Device IDFA | iOS | Device identifier for advertisers | This requires the Ad Tracking Transparency framework, which will trigger additional privacy review from the App Store. For more details, see set(identifierForAdvertiser:) |
Google Advertising ID | Android | Identifier for advertising within Google Play apps | This requires the app to retrieve the GAID and pass it to Braze. For more details, refer to Optional Google Advertising ID. |
Personalized integration
To make the most out of Braze, our SDK integrators often implement the Braze SDKs and log custom attributes, custom events and purchase events that are pertinent to their business on top of the automatically collected data.
A personalized integration allows for customized communication that is relevant to your users’ experience.
Braze will ban or block users with over 5,000,000 sessions (“dummy users”) and will no longer ingest their SDK events. For more information, refer to Spam blocking.