> For the complete documentation index, see [llms.txt](https://doc.batch.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.batch.com/guides-and-best-practices/analytics/how-to-interpret-opt-out-app-uninstalls-on-batch.md).

# How to interpret opt-out/app uninstalls on Batch?

To interpret opt-outs and app uninstalls correctly, on mobile and web push, you need to understand how they're calculated.

To begin with, you have to differentiate and define opt-out users and app uninstalls:

* **Opt-out** **users** are users who disabled notifications.
* **App uninstalls** refer to users who uninstalled the app.

## Opt-out users <a href="#h_2015ac3b05" id="h_2015ac3b05"></a>

You can track your opt-out users in the [Analytics → Push](https://doc.batch.com/getting-started/features/customer-engagement-platform/analytics/performance-analytics#h_b24267a41c) tab, in the **Audience** section (**Unsubscribed** chart):

<figure><img src="https://509463063-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfiAYaWDWqtFZeXxyg67F%2Fuploads%2FTENF5U7gQ4A7fdi7WiMj%2FCleanShot%202026-10-19%20at%2015.54.48%402x.png?alt=media&amp;token=0935efef-0c01-4e2b-ade5-30c100674952" alt=""><figcaption></figcaption></figure>

Batch can only have information about what's going on in the app. When a user installs and opens the app, we receive a push token from Apple/Google that allows us to communicate with them:

<figure><img src="https://509463063-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfiAYaWDWqtFZeXxyg67F%2Fuploads%2FQqhGwfkTQvrrqhuu34yG%2Foptout%201.png?alt=media&amp;token=47da9f14-8e68-40b8-828e-179f4d7b58e2" alt=""><figcaption></figcaption></figure>

If the user opts out of notifications in the device settings, no information is provided to Batch servers. The actual opt-in status will be updated only when the user opens the app again. Likewise, we do not know in real time when an opt-out user activates push notifications again.

Therefore the Batch database is potentially always "out of synchronization" with reality regarding the opt-in status.

Batch always targets all opt-in and opt-out tokens: it allows us to update the state of the tokens, clean the database and recover the users who would have reactivated the notifications. The notification will never be displayed to an actual opt-out user, it will be blocked by the device.

{% hint style="info" %}
**On Android**, users opt-in to push notifications **by default**. The number of opt-out users corresponds to the users who have:

* [Disabled notifications from the app preferences](https://doc.batch.com/developer/sdk/android/advanced/customizing-notifications)
* Disabled push notifications from the system settings
* Or to users who did not turn on push notifications, from Android 13.
  {% endhint %}

## App uninstalls <a href="#h_0ae071d78e" id="h_0ae071d78e"></a>

There are two pages where you can track your app uninstalls:

* [Analytics → Profiles](https://doc.batch.com/getting-started/features/customer-engagement-platform/analytics/profile-analytics), in the Activity section (iOS and Android)

<figure><img src="https://509463063-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfiAYaWDWqtFZeXxyg67F%2Fuploads%2FAKvWfVVlOlNYhDlAatjG%2FCleanShot%202026-10-19%20at%2015.57.36%402x.png?alt=media&amp;token=69ce6690-c3e3-420a-8d6f-050d2b1414c7" alt=""><figcaption></figcaption></figure>

* [Push campaign analytics → Bounced](https://doc.batch.com/getting-started/features/customer-engagement-platform/analytics/key-metrics#push)

<figure><img src="https://509463063-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfiAYaWDWqtFZeXxyg67F%2Fuploads%2FgSvt4bKmyR459udTnhUJ%2Fguidesbestpractices_analytics_pushinstalls_20260818.png?alt=media&amp;token=95f4c416-82e4-4c46-86a0-def0762e2879" alt=""><figcaption></figcaption></figure>

In this example, the Bounced metric shows that 301 users, who were targeted by the push, did not receive it. The Bounces details show the reason for each bounce: here, all of them are flagged as **Uninstall** (FCMUnregistered on Android, APNS2UnregisteredError on iOS). Uninstalls concern **both opt-in and opt-out users**, as long as they were targeted by the campaign.

<figure><img src="https://509463063-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfiAYaWDWqtFZeXxyg67F%2Fuploads%2Fx81cirZx4LZIRHUHv8eK%2Foptout2.png?alt=media&amp;token=a3c98ff2-3931-4bfc-8813-443b1657c604" alt=""><figcaption></figcaption></figure>

Unlike opt-outs, we receive by return loop the uninstalls that took place between the sending of the last campaign and the campaign of the day. This loop occurs only once a campaign has been sent. That's why you will see uninstalls only on days when a push has effectively been sent.

{% hint style="info" %}
Sending a test push notification **won't trigger the uninstalls detection**.
{% endhint %}

## Web push opt-outs

On web push, an opt-out means the user unsubscribed from web push notifications in their browser, and their token is deleted. You can track these unsubscriptions in two places:

* [Analytics → Push](https://doc.batch.com/getting-started/features/customer-engagement-platform/analytics/performance-analytics#h_b24267a41c), in the **Audience** section (**Unsubscribed** chart), with the **Web** platform filter.
* In your web push campaign analytics, in the **Bounced** metric.

As for app uninstalls, browsers send unsubscriptions back to Batch only when a campaign is sent. That's why you will mostly see web push opt-outs on the days you send a campaign.

{% hint style="warning" %}
Instead of reading *"the January 20th campaign generated 29 opt-outs"*, you should interpret it as **"between January 10th and January 20th, approximately 29 opted-in users unsubscribed from web push"**. This highlights the importance of sending campaigns **regularly** to keep your user base clean.
{% endhint %}

The behavior depends on the browser:

* On **Chrome**, deleted tokens are sent back to Batch each time a new campaign is sent.
* On **Firefox**, deleted tokens are also sent back each time a former opted-in user visits the website again. That's why you may observe opt-outs even on days when no campaign is sent.

{% hint style="info" %}
Check out our documentation to learn [how you can disable web push notifications](https://doc.batch.com/guides-and-best-practices/profiles/how-to-disable-web-push-notifications).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://doc.batch.com/guides-and-best-practices/analytics/how-to-interpret-opt-out-app-uninstalls-on-batch.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
