Telemetry was designed from the ground up with privacy in mind. An important principle of Telemetry is to only save the least amount of data it absolutely needs, and to not save any data that can be used to identify specific users' identities.
That is why the Telemetry Client code is completely open source, so that users and developers can see for themselves the data that Telemetry saves.
Any data that is transmitted to the analytics server consists of the following:
- An anonymized user identifier. The identifier is constant for each app install but cannot be traced back to any personally identifiable information.
- An action taken, such as "App Launched" or "Settings Opened". These actions are defined by the developer.
- A time stamp when the action was taken.
- Device metadata, namely platform, system version, app version, build number, if the build was downloaded via App Store or TestFlight, and the device model type (i.e. iPhone X, iPad Air, or iPhone 12).
IP addresses are never stored on the Telemetry Server, neither in the database, nor in any log files, nor at any other place.
A developer is a person who creates or maintains an app which includes the Telemetry Client code. They are responsible for making sure they only hand anonymized data to the Telemetry Client.
The Telemetry Client is the code that transmits data to the Telemetry Server. It can be viewed on GitHub in its entirety.
A user is a person who uses any app created by a developer. It is our job to make sure their data stays safe.
A signal is one instance of data sent from the app to the Telemetry Server using the Telemetry Client.
Telemetry Viewer is the app that developers use to see signal data, both raw and in aggregated form as Insights.
- Using no user identifer at all. This will give them the greatest piece of mind, while still allowing Telemetry to help them out with statistical analysis.
- Using Apple's "IdentifierForVendor" API. This is the default behaviour for Telemetry. The identifier generated out with this method has no relation to any of the user's identifiable information or private data. Deleting and reinstalling the app will generate a new identifier and sever any connection to the old one.
- Using a custom string identifier, such as the user's username or email address. This string will never transferred directly to the server. Instead, the Telemetry Client will create a hash out of that string and only ever transmit that hash. This allows Telemetry to detect the same user on multiple devices, but it is impossible for both the developer and any person having access to Telemetry's database to retrieve the original custom string identifier.
Developers can include any metadata they wish with signals they send using Telemetry Client. They are urged to not send any data that might identify their users. They must include the types of data they send in their own apps' privacy policies.
Using Telemetry Viewer
Developers using the Telemetry Viewer app are sending signals to the Telemetry Server as well. These do not contain any user data. The types of data are:
- App was launched
- Which part of the app was navigated to?
- Standard metadata: platform, system version, app version, build number, if the build was downloaded via App Store or TestFlight, and the device model type (i.e. iPhone X, iPad Air, or iPhone 12).