A privacy manifest is a property list (PrivacyInfo.xcprivacy) in which an app or SDK declares the data it collects, why it collects it, and which required-reason APIs it uses. Apple checks these declarations when you submit your app to the App Store, and your app's privacy report and Privacy Nutrition Label are built from them.
This guide explains the following concepts:
What is a privacy manifest?
A privacy manifest is a disclosure document bundled with your app and with each third-party SDK inside it. For every data type, it lists whether the data is linked to the user's identity, whether it is used for tracking, and the purposes it serves. It also lists the required-reason APIs the code calls, such as UserDefaults, together with Apple's approved reason codes for each call.
For a more comprehensive understanding of privacy manifests, see Apple's Privacy Manifest Documentation and Describing Data Use in Privacy Manifests.
Xcode aggregates every manifest into one report
When you archive your app, Xcode merges your app's manifest with the manifests of every embedded SDK into a single privacy report. The report shows the data types and required-reason APIs across your whole app. This helps you:
Keep your Privacy Nutrition Label accurate: You can see every data type your app and its SDKs declare in one place. Users can view Privacy Nutrition Labels on the App Store.
Protect user privacy: You can review the reasons behind required-reason APIs and reduce data collection where you do not need it.
To generate the report, follow these steps:
Archive your app in Xcode.
Open the archive in the Organizer.
Click Generate Privacy Report.
Privacy manifests in each Insider module
Each Insider iOS framework carries its own PrivacyInfo.xcprivacy at the root of the framework bundle. Xcode picks it up automatically, so you do not need to copy or merge anything by hand. Every data type below is declared as linked to the user and not used for tracking.
Module | Declared data types | Required-reason APIs |
|---|---|---|
InsiderMobile | User ID, Device ID, Email Address, Phone Number, Name, Product Interaction, Crash Data, Other Diagnostic Data, Other Data Types | UserDefaults: CA92.1, 1C8F.1 |
InsiderGeofence | Precise Location, Coarse Location | UserDefaults: CA92.1 |
InsiderMobileAdvancedNotification | Device ID, User ID, Crash Data, Other Diagnostic Data | UserDefaults: CA92.1, 1C8F.1 |
InsiderLiveActivities | Device ID | UserDefaults: CA92.1 |
InsiderWebView | None | None |
The modules declare the following purposes:
InsiderMobile: Product Personalization, Analytics, and App Functionality. The two diagnostic types declare Analytics and App Functionality only.
InsiderGeofence: Product Personalization and Analytics.
InsiderMobileAdvancedNotification and InsiderLiveActivities: Analytics and App Functionality.
Note: InsiderWebView only bridges calls from your web content into InsiderMobile. It does not send data itself, so its manifest is intentionally empty. The InsiderMobile manifest covers the data these calls produce.
Reason CA92.1 covers data that only the app itself reads from UserDefaults. Reason 1C8F.1 covers data shared through an App Group with your extensions, such as the notification service extension. Apple defines both codes under NSPrivacyAccessedAPICategoryUserDefaults in the NSPrivacyAccessedAPIType reference.
Insider privacy manifest and SDK versions
The Insider iOS SDK has shipped a privacy manifest since the versions below. Insider One later expanded the manifest to declare everything the SDK can send: contact information, diagnostic data, the App Group reason code, and manifests for every module. Use the version in the last column or later so that your privacy report reflects the current behavior of the SDK.
Module | First version with a privacy manifest | Expanded manifest |
|---|---|---|
InsiderMobile | 16.2.0 | |
InsiderGeofence | 1.1.1 | 1.2.5 |
To confirm which manifests your build contains, list them in your archived app:
find MyApp.app -name PrivacyInfo.xcprivacyData tracking and App Tracking Transparency
Apple defines tracking as linking data collected in your app with data from other companies' apps or websites for targeted advertising or advertising measurement. Sharing data with data brokers also counts as tracking. The Insider iOS SDK does not track in its default configuration, so every Insider manifest sets tracking to false and lists no tracking domains:
<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyTrackingDomains</key>
<array/>The advertising identifier (IDFA)
The Insider iOS SDK does not collect the advertising identifier (IDFA) by default. It reads the IDFA only when your app enables collection explicitly:
Insider.enableIDFACollection(true)Once you enable it, the tracking disclosure becomes your app's responsibility:
App Privacy: Declare the advertising data, and its tracking use, in your App Store Connect App Privacy answers and in your app's own privacy manifest.
ATT prompt: Request authorization through Apple's App Tracking Transparency (ATT) framework. Without it, iOS returns an all-zero advertising identifier.
SDK manifest: The Insider manifest keeps declaring tracking as false, because that is true for the default configuration.
Note: The Insider iOS SDK never presents the ATT prompt on your behalf. For details on the setting, including the fact that it does not persist across launches, see iOS Advertising Identifier (IDFA) and Privacy.
Data collected by the Insider iOS SDK
The table below maps Apple's data categories to what the Insider iOS SDK collects. Collected by default means the SDK sends the data without any extra call from your app. Collected when you send it means the data reaches Insider One only through your integration. This covers calls your app makes and in-app forms or surveys you configure in the InOne panel.
Data type | Collected by the Insider iOS SDK | Description |
|---|---|---|
Contact Info | Collected when you send it | Your app sends these through InsiderUser (setName, setSurname, setEmail, setPhoneNumber) or InsiderIdentifiers (addEmail, addPhoneNumber). Users can also submit them in an in-app lead form or survey. The SDK never reads contact data from the device. |
Contact Info | Not collected by default | If your implementation sends this data, for example as a custom attribute, declare it accordingly. |
Health and Fitness | Not collected by default | If your implementation sends this data, declare it accordingly. |
Financial Info | Not collected by default | If your implementation sends this data, declare it accordingly. |
Location | InsiderMobile: No | InsiderMobile collects no location coordinates. It only reports whether the user has granted location permission. When you integrate InsiderGeofence, the SDK sends the device's precise location to Insider One to fetch the geofences near the user. It also sends geofence entry and exit events with the user's identifiers. |
Sensitive Info | Not collected by default | If your implementation sends this data, declare it accordingly. Gender and birthday, which you can set through InsiderUser, are not sensitive information in Apple's definition. |
Contacts | Not collected | The SDK does not access the user's address book. |
User Content | Collected when you send it | The SDK sends the answers users submit in the in-app surveys and lead forms you configure to Insider One. If these forms ask for user content, or your implementation sends it in any other way, declare it accordingly. |
Browsing History | Not collected | If your implementation sends this data, declare it accordingly. |
Search History | Not collected | If your implementation sends this data, declare it accordingly. |
Identifiers | Collected by default | Device ID is the identifier for vendor (IDFV) plus an installation identifier the SDK generates. User ID is the Insider ID, plus any user identifiers your app passes at login. The SDK does not collect the IDFA unless you enable it (see The advertising identifier). It never collects hardware identifiers such as the IMEI. |
Purchases | Not collected by default | If you send purchase or cart events, declare it accordingly. |
Usage Data | Collected by default | The SDK collects session start and end, push notification opens, and impressions and clicks on Insider One campaigns it displays, such as in-app messages, content optimizations, and recommendations. It sends screen views, App Card views and clicks, and custom events only when your app reports them. |
Usage Data | Not collected by default | Advertising data applies only if you enable IDFA collection. If your implementation sends other usage data, declare it accordingly. |
Diagnostics | Collected | The SDK does not install a crash reporter and does not capture your app's crashes. It sends diagnostic logs about its own operation. InsiderMobile sends them only when the Insider team enables diagnostic logging for your app. InsiderMobileAdvancedNotification sends them from the notification extension, including descriptions of errors the SDK handled. |
Other Data | Collected by default | The SDK collects device and app information that cannot be used for tracking: OS platform and version, device model, carrier, app version and bundle identifier, SDK version, time zone, device language, screen size and safe-area insets, network connection type, battery level, push notification opt-in status and settings, the push token, location permission status, install date, and session durations and timestamps. If your implementation sends other data, declare it accordingly. |
Note: Custom events and custom user attributes can carry any data your app puts into them, so the table above cannot cover them. Declare them based on what your integration actually sends.
Your responsibility: declaring additional data collection
The Insider privacy manifest describes the Insider iOS SDK. You are responsible for reviewing your whole integration. Make sure your app's privacy manifest and App Privacy answers cover all the data your app sends through the SDK. This includes:
Data sent through the custom events, attributes, and identifiers you implement.
Data collected through in-app forms and surveys you configure in the InOne panel.
How you use this data outside the features the Insider iOS SDK provides.
Important: Your app's data collection must comply with Apple's App Store Review Guidelines and all applicable laws. Review your Privacy Nutrition Label whenever your data collection changes, because an outdated label can lead to App Store review issues.
Examples of additional data collection
Ecommerce apps: Sending purchase history beyond basic transactions requires a declaration under Purchases.
Travel apps: Sending users' preferred destinations or booking habits as custom attributes or events requires a declaration under the matching category, typically Other Usage Data or Other Data.
Social media apps: Sending profile details or information about the content users create might require declarations under Contact Info or User Content.
Summary
Question | Answer |
|---|---|
Does the Insider iOS SDK ship a privacy manifest? | Yes. Every iOS module carries its own PrivacyInfo.xcprivacy. |
Does the Insider iOS SDK track users? | No. Tracking is false and no tracking domains are listed. |
Does the SDK collect the IDFA? | Only if your app calls enableIDFACollection. You then own the tracking disclosure and the ATT prompt. |
Does the SDK collect contact information? | Only what your app sets or users submit in in-app forms. The manifest declares it. |
Does the SDK collect location? | Only with InsiderGeofence. |
Who declares data sent through custom events and attributes? | You do, in your app's privacy manifest and App Privacy answers. |