# Device Properties

This reference provides details about device properties, default Attributes, and device property Tags collected by the SDK.

*Device properties* are metadata representing the default attributes and property tags of a device, such as language and time zone settings, OS and browser versions, and notification opt-in status. Device properties are used for audience segmentation. The data used for the tags and attributes is collected automatically from the Airship SDKs, and are updated daily. See also: [AttributesMetadata used for audience segmentation and personalization. They extend the concept of Tags by adding comparison operators and values to determine whether or not to target a user, helping you better evaluate your audience.](/docs/guides/audience/attributes/about/), [TagsMetadata that you can associate with channels or Named Users for audience segmentation. Generally, they are descriptive terms indicating user preferences or other categorizations, e.g., `wine_enthusiast` or `weather_alerts_los_angeles`. Tags are case-sensitive.](/docs/guides/audience/tags/).

Note

Default Attributes differ from device property tags in providing evaluation operators such as equals, less than/greater than, contains, before/after, to determine whether or not to target a user. Additionally, they can be used for message personalization.

## Default Attributes

Airship default Attributes are built-in metadata that represent device Attributes that are collected by the SDK and used to segment your audience, target specific devices, and personalize messages.

See [Default Attributes](https://www.airship.com/docs/reference/data-collection/attributes/#default-attributes) in the *Attributes Reference*.

## Device Property Tags

Airship device property tags are built-in metadata tags that represent the properties of a device, are collected by the SDK and used to segment your audience and target specific devices.

| UI Name             | Tag Group ID            | Valid Tags                                                                           | Sentinel Value                       |
|---------------------|-------------------------|--------------------------------------------------------------------------------------|--------------------------------------|
| Timezone            | `timezone`              | [Time zone](#time-zone)                                                              | Unknown (UI) or NO\_TIME\_ZONE (API) |
| Notification Opt-in | `ua_opt_in`             | `"true"` or `"false"`†                                                               | None available                       |
| Background Enabled  | `ua_background_enabled` | `"true"` or `"false"`1                                                               | None available                       |
| Location Enabled    | `ua_location_enabled`   | `"true"` or `"false"`1,2                                                             | None available                       |
| Application Version | `ua_app_version`        | Any sanitized string3                                                                | Unknown                              |
| Language            | `ua_locale_language`4   | [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)                   | Unknown                              |
| Language Country    | `ua_locale_country`4    | [ISO 3166-1 (alpha-2 codes)](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes) | Unknown                              |
| SDK Version         | `ua_sdk_version`        | [SDK version number](#sdk-version)                                                   | Unknown                              |
| Device OS Version   | `ua_os_version`         | [Device OS version number](#platform-version)                                        | Unknown                              |
| Device Model        | `ua_ios_model`          | [iOS Model](#device-model)                                                           | Unknown                              |

1 Note that when pushing to these tags via the API, you use a string that represents a boolean value, not an actual boolean. In other words, the valid tags are `"true"` and `"false"` rather than `true` and `false`. For example:

```json
{ "group": "ua_background_enabled", "tag": "true" }
```

2 The *Location Enabled* tag group only contains devices with SDK 6.0+.

3 Because we cannot check whether a string describing your app version is correct, the iOS App Version and Android App Version tag groups will accept any sanitized string as valid. However, a push will only reach your users if you use a valid version string for your app. For example, while the API will not flag a push to the following as invalid, presumably none of your iOS users are using the `"pizzzzzza"` version of your app, so no one will receive the message:

```json
{ "tag":  "pizzzzzza", "group": "ua_ios_app_version" }
```

4 See [Locale](#locale) below.

UI Name

How the tag group is displayed within the Airship dashboard.

Tag Group ID

The ID used to refer to the tag group in the API.

Valid Tags

The tags contained within the tag group.

Sentinel Value

A special tag that is equivalent to “unknown”.

Note

**Example:** If our system is unable to determine a device’s language settings, the device will receive an `"Unknown"` tag in the `"ua_locale_language"` tag group. You could target such devices like so:

```json
{ "group": "ua_locale_language", "tag": "Unknown" }
```

This push goes to all devices with unknown language settings.

Note

There are no sentinel values for *Background Enabled*, *Location Enabled*, or *Notification Opt-in*; every device will be tagged with either `"true"` or `"false"` for each of these groups.

Sentinel values will be presented as **Unknown**, both in the UI and API, with the exception of *Timezone*. Due to legacy reasons, the sentinel value for Timezone will display as **Unknown** in the UI but must be referred to as `"NO_TIME_ZONE"` via the API, e.g.:

```json
{ "group": "timezone", "tag": "NO_TIME_ZONE" }
```

## Collected Properties

**Apps and web browsers**

- Language
- Language country
- Time zone

Note

By default, for web browsers the language and country data are retrieved from the browser. Under some conditions, the browser might not have Country information set. Using the [Locale Override](https://www.airship.com/docs/developer/sdk-integration/web/advanced/localization/#overriding-locale) methods in the Web SDK, you can set the language and country and override the browser defaults.

**Apps only**

- Device model
- Device OS
- Application version
- Location
- SDK Version
- Push Notification opt-in
- Background enabled

**Web browsers only**

- Browser name
- Browser version
- Browser type

**Email only**

- Email domain

### Time Zone

A time zone (`timezone`) tag is identical to its UI name.

Note

This is not a full list of possible device time zones. If a device has a time zone setting that is not listed below, our system will attempt to resolve it to the nearest available time zone, then tag the device accordingly.

Tip

Make sure to use quotes around the tag when using the API. Example:

```json
{ "group": "timezone", "tag": "Africa/Addis_Ababa" }
```

| Time Zone Tag / UI Name                   | UTC Offset | UTC DST Offset |
|-------------------------------------------|------------|----------------|
| `Africa/Addis_Ababa`                      | +03:00     | +03:00         |
| `Africa/Harare`                           | +02:00     | +02:00         |
| `Africa/Lagos`                            | +01:00     | +01:00         |
| `America/Argentina/Buenos_Aires`          | -03:00     | -03:00         |
| `America/Bogota`                          | -05:00     | -05:00         |
| `America/Caracas`                         | -04:30     | -04:30         |
| `America/Chicago` (Central time zone)     | -06:00     | -05:00         |
| `America/Costa_Rica`                      | -06:00     | -06:00         |
| `America/Denver` (Mountain time zone)     | -07:00     | -06:00         |
| `America/Halifax`                         | -04:00     | -03:00         |
| `America/Juneau` (Alaska time zone)       | -09:00     | -08:00         |
| `America/Lima`                            | -05:00     | -05:00         |
| `America/Los_Angeles` (Pacific time zone) | -08:00     | -07:00         |
| `America/New_York` (Eastern time zone)    | -05:00     | -04:00         |
| `America/Phoenix`                         | -07:00     | -07:00         |
| `America/Santiago`                        | -03:00     | -03:00         |
| `America/Sao_Paolo`                       | -03:00     | -02:00         |
| `Asia/Bangkok`                            | +07:00     | +07:00         |
| `Asia/Dhaka`                              | +06:00     | +06:00         |
| `Asia/Dubai`                              | +04:00     | +04:00         |
| `Asia/Hong_Kong`                          | +08:00     | +08:00         |
| `Asia/Jakarta`                            | +07:00     | +07:00         |
| `Asia/Karachi`                            | +05:00     | +05:00         |
| `Asia/Kolkata`                            | +05:30     | +05:30         |
| `Asia/Manila`                             | +08:00     | +08:00         |
| `Asia/Seoul`                              | +09:00     | +09:00         |
| `Asia/Singapore`                          | +08:00     | +08:00         |
| `Asia/Tehran`                             | +03:30     | +04:30         |
| `Asia/Tokyo`                              | +09:00     | +09:00         |
| `Asia/Vladivostok`                        | +10:00     | +10:00         |
| `Australia/Adelaide`                      | +09:30     | +10:30         |
| `Australia/Brisbane`                      | +10:00     | +10:00         |
| `Australia/Sydney`                        | +10:00     | +11:00         |
| `Etc/GMT`                                 | +00:00     | +00:00         |
| `Europe/Istanbul`                         | +02:00     | +03:00         |
| `Europe/Lisbon`                           | +00:00     | +01:00         |
| `Europe/London`                           | +00:00     | +01:00         |
| `Europe/Moscow`                           | +03:00     | +03:00         |
| `Europe/Paris`                            | +01:00     | +02:00         |
| `Pacific/Auckland`                        | +12:00     | +13:00         |
| `Pacific/Honolulu` (Hawaii time zone)     | -10:00     | -10:00         |
| `UTC`                                     | +00:00     | +00:00         |

### SDK Version

SDK version tags are in the format `#.#.X`, e.g., `14.0.X`. We do not allow targeting of specific patches, such as `14.0.1`.

When setting a tag, searching for the SDK version group will resolve any queries of specific patches to the nearest possible version. For example, searching for *14.0.1* will return *14.0.X* as a result. When using the API, you must use the `#.#.X` format or the push will not reach your audience. **Example**:

```json
{ "tag": "14.0.X", "group": "ua_ios_version" }
```

### Platform Version

Platform version tags are in format `#.#.X`, e.g., `14.2.X`. We do not allow targeting of specific patches, such as `14.2.6`.

### Device Model

A device model tag’s UI name appears in the dashboard when building [SegmentsA reusable audience group you create by selecting unique or shared user data.](/docs/guides/audience/segmentation/segments/) or using the Targeting Specific Users audience option.

Example:

| UI Name       | Device Model |
|---------------|--------------|
| iPhone 12 Pro | `iPhone13,3` |

### Locale

A device’s locale is determined by its language and country settings. Target a specific locale via tag groups `ua_locale_language` and `ua_locale_country`.

Warning

Keep in mind that a device’s language and country settings imply nothing about the user’s actual language or location. For example, an English speaking citizen of the US could set the phone’s country to China and language to Arabic, and the device locale would reflect those changes.

It is best to think of `ua_locale_country` and `ua_locale_language` as useful approximations only.

On iOS, the locale is a combination of the *iPhone Language* and *Region* settings. Using ISO standards, an iPhone with language English and region United States has a locale of `en_US`. With Android devices, you choose the language/country combination together, e.g., English (United States).

The `ua_locale_language` tag group is used to specify the language half of the locale. To target both iOS and Android devices set to English, use the tag `en`:

```json
{ "group": "ua_locale_language", "tag": "en" }
```

### Email Domain

Email channels include an `ua_email_domain` tag group with a single tag indicating the domain of the email address. The domain is the portion after the `@` symbol. This tag is often used to help with reputation management by excluding problem domains from bulk sends.