---
title: Privacy - iOS
description: Learn how Contentsquare deals with Personal Data and related APIs
lastUpdated: 01 July 2025
source_url:
  html: https://docs.contentsquare.com/en/ios/4-32-0/privacy/
  md: https://docs.contentsquare.com/en/ios/4-32-0/privacy/index.md
---

To learn about Contentsquare privacy practices, see our [Privacy Center ↗](https://contentsquare.com/privacy-center/) and [Privacy Policy ↗](https://contentsquare.com/privacy-center/privacy-policy/).

## Handling User Consent

Note

The App Store guidelines regarding privacy ([see section 5.1.1 ii Permissions ↗](https://developer.apple.com/app-store/review/guidelines/#privacy)) states that:\
*“Apps that collect user or usage data must secure user consent for the collection, even if such data is considered to be anonymous at the time of or immediately following collection.”*

Contentsquare collects usage data on your app. **By default, the SDK will consider every new user to be opted-out.** To start tracking, the SDK [Opt-in API](#opt-in) must be called.\
You are responsible for handling the UI asking users for their consent and allowing them to manage their privacy settings. Use the Contentsquare [SDK APIs](#privacy-apis) to pass the user decision to the SDK.

Note

If for some reason you think that securing user consent is not required for your app, discuss it during the Implementation process with your main contact (as this would go against Apple Privacy guidelines).

## Privacy APIs

Contentsquare provides APIs to manage the user consent.

### Opt-in

Use the Opt-in API to get user consent. Calling this API will generate a user ID and initiate tracking.

### Opt-Out

When this API is called, tracking stops immediately, all settings are reset (Session number, Page number…) and all files and directory regarding to Contentsquare are deleted. This means that the user ID is deleted. The SDK will never track and collect any data from the user’s phone unless the Opt-in API is called again.

### Get Contentsquare User ID

Use this API to get the [Contentsquare User ID](#contentsquare-user-id). This can be used to make a data request to Contentsquare as part of an end user request.

Note

You are able to get an ID only if the user is not Opted-out.

### Pause / Resume Tracking

Contentsquare does not collect any humanly readable text from the user’s screens.\
To completely exclude areas of the App from tracking, use the pause and resume tracking APIs. When `stop/pause` is called, the SDK pauses all tracking (Analytics, Session Replay, Errors).\
When `resume` is called, the SDK resumes all tracking (Analytics, Session Replay, Errors).

Note

As this mechanism pauses the tracking, make sure that you call resume once your user exits the sensitive screen. Best practice would be to link these method calls to lifecycle events on UIView/UIViewControllers.

### Forget me

Deprecated

This API is deprecated as of SDK version 4.28.0. To achieve the same effect use Opt-out API to delete all files and settings including the user ID, and call Opt-in API on next app launch if tracking needs to resume.

**Permanently breaking the link between the collected data and actual user.**

This resets all settings and deletes all files and directories from the user’s device (User ID is deleted). If user is opted in, next time user starts the app, the SDK will re-start its collection mechanisms as if this was the first ever run for a new user, under a new user id. Configurations will be fetched from the server and application tracking will be on.

Note

‘Forget me’ only works when user is opted in.

## Give me my data

**We allow the client to provide to their users their Contentsquare user ID.**

This ID is a non binding identifier which can be used to make a data request to Contentsquare.\
You are able to get an ID only if the user is not Opted-out.

## Disable user tracking across sessions

If you don’t want to link the different sessions of a user to the same userID, follow these instructions to reset the userID at each app start:

1. [Disable SDK auto-start](https://docs.contentsquare.com/en/ios/track-screens/#manual-start)

2. Implement the following:

   ```swift
   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) {
       Contentsquare.start()
       Contentsquare.optOut()
       Contentsquare.optIn()
   …
   }
   ```

   Starting the SDK manually using `start()` will ensure that opt-out is called right after the start of the SDK (no event tracked in between).

   Calling `optOut()` will delete the previous userID.

   Calling `optIn()` will set a new one.

Note

If you are monitoring the network requests, you may see event requests being sent at app start. This is expected as there may be events from the previous session that haven’t been sent yet. The [opt-out API](#opt-out) makes sure to send all data stored locally before stopping the tracking and wiping all data.

### Session Replay privacy APIs

As part of Session Replay capabilities, Contentsquare provides masking and un-masking APIs to control how data is collected. See [Session Replay Personal data masking](https://docs.contentsquare.com/en/ios/session-replay/#personal-data-masking) for more information.

## App Store Privacy Guidelines Compliance

The Contentsquare SDK is compliant with the [**App Store Privacy guidelines** ↗](https://developer.apple.com/app-store/review/guidelines/#privacy).

### Privacy manifest

Contentsquare SDK includes a [privacy manifest ↗](https://github.com/ContentSquare/CS_iOS_SDK/blob/master/ContentsquareModuleWrapper/PrivacyInfo.xcprivacy) describing the type of data collected and their purpose. [See Apple’s website for more information ↗](https://developer.apple.com/app-store/app-privacy-details/).

### Tracking and App Tracking Transparency (ATT)

App Store (Apple) requests App developers to receive the user’s permission to track them or access Advertising ID using the AppTrackingTransparency framework (ATT).\
According to Apple’s definition, Contentsquare only matches the definition of a [“Third- party partner” involved in Data collection ↗](https://developer.apple.com/app-store/app-privacy-details/#data-collection).

**It is not required to put Contentsquare behind the ATT as it does not match the [“tracking” definition of Apple ↗](https://developer.apple.com/app-store/app-privacy-details/#user-tracking)** as the data collected is not linked with Third-Party Data for targeted advertising or advertising measurement purposes nor shared with a data broker.

### Data linked to the user

All collected data is linked to the user via the [Contentsquare User ID](#contentsquare-user-id) we generate.

### Types of data and purpose

Here is the list of data type we collect by default that are part of our privacy manifests.

Warning

Contentsquare SDK provides features that allow you to send to Contentsquare custom data. If you decide to use these features to collect new data or use already collected data but for a different purpose, it is up to you to describe these privacy practices in your app manifest. Involved features: [Dynamic variables](https://docs.contentsquare.com/en/ios/track-dynamic-variables/), [Custom variables](https://docs.contentsquare.com/en/ios/track-custom-variables/), [User identifier](https://docs.contentsquare.com/en/ios/session-replay/#send-user-identifier), [Screen names](https://docs.contentsquare.com/en/ios/track-screens/), [Session Replay (unmasking elements)](https://docs.contentsquare.com/en/ios/session-replay/#personal-data-masking).

| Categories | Data type | Purposes |
| - | - | - |
| Identifiers | User ID | Analytics, App Functionality |
| Usage Data | Product Interaction | Analytics, App Functionality |
| Usage Data | Other usage data | Analytics, App Functionality |
| Other Data types | Other Data types | Analytics, App Functionality |
| Diagnostics | Crashes | Analytics, App functionality |
| Diagnostics | Performance data | Analytics, App functionality |
| Diagnostics | Other diagnostic data | Analytics, App functionality |

See how the data types and purposes are reflected in the [privacy manifest ↗](https://github.com/ContentSquare/CS_iOS_SDK/blob/master/ContentsquareModuleWrapper/PrivacyInfo.xcprivacy).

## User identifiers

### Contentsquare User ID

The SDK generates a unique user ID (UUID) (random hash) which is specific to users on their device. Contentsquare cannot identify a user across devices.\
This user ID and all collected data are stored for 13 months.\
We don’t persist the UUID when the app is deleted and re-installed. The SDK generates a new UUID after install or re-install.\
Contentsquare does not share this user ID with any third parties.

### IDFA

Contentsquare does not collect the **IDFA** (Advertising ID) or any ad related information to identify the user.

Check out our page about [10 Things to know about the Contentsquare solution’s data processing ↗](https://contentsquare.com/privacy-center/10-things-to-know-cs-data-processing/).

### ”User identifier” feature

Contentsquare provides the ability to search for session(s) associated with a specific visitor, based on an identifier provided by the customer. See [User identifier feature](https://docs.contentsquare.com/en/ios/session-replay/#send-user-identifier) for more information.
