Skip to content

Push Permission Status tag

Push Permission Status is a default tag that stores the state of the push notification permission on a device. Use it to build reachability segments of users that a simple on/off flag can’t separate, for example users you can still ask for permission and users who already declined.

Push Permission Status values

Anchor link to

The tag is a String tag that stores one of the values below for each device in each application. Each platform reports only some of them. See What each platform reports.

Value
What it means
not_determinedThe user hasn’t answered the permission prompt yet, so the app can still ask
granted_explicitThe user allowed notifications in the permission prompt
granted_defaultNotifications are allowed, but not through an answer to the Pushwoosh SDK permission prompt. Android only
provisionalNotifications are allowed provisionally. They go quietly to Notification Center, without alerts, sounds, or banners. iOS only
ephemeralNotifications are allowed for a limited time, as for an App Clip. iOS only
deniedThe user turned notifications off, either in the prompt or later in device or browser settings
unsupportedThe browser can’t receive web push notifications. Web only

The tag has no value on tvOS and macOS, and on devices with an SDK version older than:

PlatformMinimum SDK version
iOS7.2.10
Android6.17.0
Web3.95.0

When the tag updates

Anchor link to

The SDK reports the current status at these moments:

  • Every time the app opens.
  • When the device registers for push notifications.
  • Right after the user answers the permission prompt.

If the user changes the permission in device or browser settings, the tag updates later, depending on the platform:

PlatformWhen the tag updates
iOSThe next time the app opens
AndroidThe next time the app opens or returns to the foreground
Web: Chromium-based browsers and FirefoxAs soon as the browser reports the change
Web: SafariOn the next page load

When a request comes without a status, for example from an older SDK version, the tag keeps its last value.

What each platform reports

Anchor link to

Each platform reads the permission from its own system API, so the set of values differs by platform.

The iOS SDK maps the system authorization status of the app directly to the tag.

iOS authorization statusPush Permission Status
Not determinednot_determined
Authorizedgranted_explicit
Provisionalprovisional
Ephemeralephemeral
Denieddenied

Android 13 and later require the user to allow notifications in a permission prompt. Earlier versions allow them by default after installation, so the Android SDK separates an explicit answer from a default grant:

  • granted_explicit: the user allowed notifications in the permission prompt that the Pushwoosh SDK shows, on Android 13 or later, in an app that targets Android 13 (API level 33) or later.
  • granted_default: notifications are allowed in any other way. That includes Android 12 and earlier, apps that target an API level below 33, a permission that was already allowed when the SDK first checked it, and a permission allowed from your own prompt or from system settings.
  • not_determined: on Android 13 and later, notifications are off and the user hasn’t answered the prompt yet, including when they closed the prompt without choosing.
  • denied: notifications are off after the user declined the prompt, or after they were allowed before. On Android 12 and earlier, any device with notifications turned off reports denied.

Browsers allow notifications only after the user clicks to allow them, so a web device never reports granted_default.

Browser permissionPush Permission Status
Not asked yet (default)not_determined
Allowed (granted)granted_explicit
Blocked (denied)denied
Browser doesn’t support web pushunsupported

Build reachability segments

Anchor link to

Combine the values in one Push Permission Status filter with the in operator to target users by how you can reach them. Learn more about building segments by tags.

SegmentFilterHow to use it
Users who see push alertsin granted_explicit, granted_defaultSend time-critical push notifications
Quiet delivery onlyin provisional, ephemeralExpect lower visibility, and invite these users to allow full notifications
Users you can still askin not_determinedShow an in-app message before the push permission prompt
Users who declinedin deniedReach them through email, SMS, or in-app messages, or run an opt-out recovery popup
Browsers without web pushin unsupportedUse other channels for these web users

To find devices that don’t report the tag yet, use the not set operator. These devices run an older SDK version, so target them with Push Alerts Enabled instead. For the difference between the two tags, see Push Permission Status vs Push Alerts Enabled.

Push Permission Status vs Push Alerts Enabled

Anchor link to

The two tags answer different questions:

  • Push Alerts Enabled (Boolean): can this device show push alerts right now?
  • Push Permission Status (String): what is the state of the permission? It separates states that Push Alerts Enabled reports as the same false, such as never asked and declined.

The table compares how the two tags report common states.

Push Alerts EnabledPush Permission Status
TypeBooleanString
Never asked for permissionfalsenot_determined
Declined permissionfalsedenied
Provisional or temporary permission on iOSDepends on the alert, sound, and badge settingsprovisional or ephemeral
Explicit or default granttrue when the device shows alertsgranted_explicit or granted_default
Devices with older SDK versionsReported on all SDK versionsNot set

Choose the tag by the question you need to answer:

  • Use Push Alerts Enabled for a quick opted-in count across all SDK versions.
  • Use Push Permission Status when your next step depends on why a user isn’t reachable. For example, ask the users who were never asked and leave alone the users who declined.